背景
こんにちは。クラウド事業部の宇野です。
AzureのMFA(多要素認証)を設定する際、様々なAzure側の設定要素の組み合わせによりMFA認証の挙動が異なるため分かりづらいと感じました。
以下の公式サイトより2019年10月以降から「セキュリティの既定値群」の有効化が促されていて、「すべてのユーザーに対して Microsoft Entra 多要素認証への登録を必須にする」ということを記載されていたので、全員がMFA必須なんだ、安心安心。と短絡的に思っていたのですが、MFAの「登録」と「認証」は別の話。
よくよく読み進めると、Azureの管理者ロールのEntraIDユーザだけMFA認証の要求を必須化するのであって、管理者ロールを持たないEntraIDユーザはMFA認証の要求が必須とされません。
また、管理者ロールを持たないEntraIDユーザで初回Azureサービスへログインすると、「MFA登録」が促されるので、「MFA認証」もされるように勘違いする方もいるのではないでしょうか。実際は初回のMFA登録時のみで、2回目以降のログインではMFA認証されないのがデフォルト仕様となっています。
目的
AzureのMFA登録およびMFA認証の振る舞いを理解する
どのような方に読んでほしいか
極力費用をかけずにMFAを設定したい方
前提条件
■EntraIDのプランについて
今回はEntraIDのFreeプランを前提にしています。このプランでMFA設定を行う際は「ユーザーごとのMFA」という機能を利用することになります。当機能はマイクロソフト側でレガシーな機能として扱われているようです。Microsoft Entra ID P1やP2などの有料プランであれば、より複雑なMFA設定が可能な条件付きアクセスポリシーという選択肢があります。予算の都合がつく場合はこちらを使用することが推奨されています。
■WebアプリケーションのAzure認証について
Azure上にWebAppsサービスを構築し、そこでAzure EntraIDで認証されるようにIDプロバイダー認証の設定を行っていることを前提にしています。
詳細は以下の公式サイトをご確認ください。
■管理者ロール
ここで言う「管理者ロール」とは以下の公式サイトで整理されたロールを指しています。
MFA登録およびMFA認証のパターン
Azure側の設定要素の組み合わせとしては、「セキュリティの既定値群」・「ユーザごとのMFA設定」・「EntraIDのロール」の3つがあります。
マトリックスで整理すると以下のとおりです。
MFA認証を強制化して運用したい場合
パターン1&パターン2(要件によってはパターン3&パターン4)を使用します。
EntraIDユーザーアカウントを新規作成した際は、「ユーザごとのMFA」が「無効」で初期設定されています。冒頭でも記載しましたが管理者ロールのEntraIDユーザーアカウントはMFA認証を要求されるため、すべてのユーザーでMFA認証が要求されると勘違いする可能性があります。また、管理者ロールが割り当てられていないEntraIDユーザーアカウントもMFA登録が初回求められるため、「MFAが要求されるんだ」と誤解してしまう可能性があります。管理者ロールが割り当てられていないEntraIDユーザーアカウントは初回ログイン以降のMFA認証が省略されてしまうため、必ず「ユーザーごとのMFA」を強制もしくは有効に設定する必要があります。
MFA認証を無効化して運用したい場合
パターン7を使用します。
ただし、マイクロソフトが推奨していない「セキュリティの既定値群」を「無効」にする必要があります。本設定はセキュリティレベルを低下させてしまう要因になります。運用方針としてどうしてもMFA認証を無効化しなければいけない場合は別の方法も検討した上でMFA認証の無効化を行う必要があります。
また、パターン8は大変危険です。管理者ロールのEntraIDユーザーアカウントがレガシー認証(ID、PW)のみで利用できる状態はセキュリティが著しく低下するため、少なくともパターン4、パターン6のようにMFA認証を要求する設定にする必要があります。
※MFA認証は、現代のデジタル環境でのセキュリティ要件を満たすための効果的な手段として、広く受け入れられていると思いますので余程のことがない限りは有効化するべきです。