Azure 多要素認証(二段階認証)でできること

Azure Active Directory Premium を契約すると多要素認証プロバイダーを使用することができます。国内では二段階認証と呼ばれることが多くなった昨今ですが、まぁ、別にいいんですけど、認証要素を増やすことでより精度の高い本人確認ができるわけです。

※ライセンスについてきちんと書いておくと、多要素認証のみを追加契約することも可能です。「ユーザー単位」または「一定時間の認証数(ユーザー数に依存しない)」で契約することができます。

image

以降、面倒なので Azure AD MFA(Multi-factor Authentication)と書きます

Azure AD MFA のよいところは、Azure AD の認証プロセスの拡張機能として組み込まれているため、アプリケーションに依存しない点です。SAML2.0、WS-Federation、OpenID Connect のいずれかの認証プロトコルを使用してAzure AD につながったアプリケーションは漏れなく、この MFA の恩恵を受けることができます。アプリ側に手を入れる必要が無いわけですね。素敵!

今回は詳しくは触れませんが、アプリケーションごとに MFA を有効/無効 にしたり、ユーザーグループごとに MFA を強制したりといったことも可能です。また、若干マニアックですが、Azure AD Application Proxy を使用してオンプレミスの Web アプリを公開している場合にも、以下のように MFA 有効/無効を設定することができます。このあたりは別の機会に。

image

さて。ちょっと難しいのですが、Azure AD MFA のトリガーは2箇所にあります。

  • Azure AD 側で Azure MFAが必要と判断したとき
  • オンプレミス AD FS が Azure MFA を必要と判断したとき

Azure AD しか使用していない場合は、前者の判断によって MFA が起動します。一方、オンプレミスとの Hybrid Identity の場合には、オンプレミス AD FS 側の判断が優先されます。じゃ、両方で MFA を有効にした場合はどうなるかと言えば、オンプレミス側 AD FS の判定が優先されます。

というのも、「MFA を無事通過した」というフラグはクレームに含まれているので、オンプレミス側 AD FS が発行した「MFA通過したよ~」というクレームを Azure AD が受け取れば、Azure AD 側でも「あーこの人は MFA通過したのか」と判定されて、再度MFA を要求されることは無いわけです。合理的です。「電気街口で職質受けて、再び万世橋で呼び止められる」といったストレスはありません。安心してください。

Azure AD がメインの認証サービスの場合、オンプレミス側には何も必要ありません。MFA をオンプレミス側で制御したい場合には、AD FS に MFA Server をインストールして連携を構成する必要があります。

image

AD FS で MFA を制御するメリットは、クレームによってきめ細かな制御ができる点です。現在のロケーションやユーザーの属性によって、MFAを要求するかどうかを判定することができます。クレームルール言語が得意なエンジニアの方は、是非オンプレミスでの制御に挑戦してください。

ここまでご理解いただき、ちょっと試していただくと、そこはかとない疑問が出てきます。

MFA Server があるのと無いのとでは、「追加できる認証方法」が違うんじゃない?

おっしゃるとおりです。ここは混乱するポイントですね。すんません。

このあたりをザクッと図にしたのが以下です。

image

認証の追加要素として用意されているのは、大きく分けて3つです。

  • 電話(スマートフォン)で応答する
  • スマフォにインストールされたモバイルアプリで応答する
  • 電話(スマフォ)に表示されたワンタイムパスワードをブラウザに転記する

Azure MFA のみを使用している場合には以下の4通りの方法を使用できます。

  • 電話がかかってきたら #(Pond Key)をタップして応答
  • インスタントメッセージにワンタイムパスワード(OTP)が送信されてくるので、これをブラウザのテキストボックスに転記する
  • モバイルアプリがインストールされている場合、モバイルアプリに「認証要求」が送られてくるので「認証」をタップする
  • モバイルアプリに OTP が送られてくるので、ブラウザにOTPを転記

MFA Server をインストールした環境があると、さらに以下のような方法が可能です。

  • 電話がかかってきたら、事前に設定した PIN を押して応答する
  • インスタントメッセージに OTP が送られてきたら、その返信メッセージとして OTP を入力する
  • モバイルアプリがインストールされている場合、事前に設定したPINをモバイルアプリに入力する

これ以外にも、MFA Server を使用すると「秘密の質問に回答する」といった方法も使えます。が、使います??

このように、MFA Server を使用することで、認証プロセスのバリエーションが増えます。どれを使用したいか?そして、どれだけ細かく条件設定を行いたいかによって、MFA Server の要否を判断してください。時間とともに、Azure AD 側の設定項目も増えていくと予測されますが、現時点では MFA Server があったほうが便利な印象です。Radius や ldap と連携するといったことも可能になりますが、このあたりは別の投稿で。

Azure MFAでは、「何回間違えたらロックする」や「MFAを通過して ○分以内ならば 再度 MFA は要求しない」「1つ目の電話がつながらなかったら2つ目の電話にかけなおす」など、きめ細かな設定が可能です。

また、IP アドレスレンジを指定しておき、そこからのアクセスは MFA 不要といったこともできます。

認証制度を高めるために面倒なルールを増やすよりも、Azure MFA を使ってしまったほうがシンプルでお勧めです!