Azure サインイン時の Microsoft Entra ID 多要素認証必須化に伴う延期設定などを今更やってみた
いわさです。
Microsoft Azure では昨年、全テナントで MFA (多要素認証) を必須化させるとアナウンスされていました。
この必須化のテナントへのロールアウトは段階的に行われていきます。
MFA は必須化すべきだと私も思いますが、何らかの事情でユーザー側の対応が間に合っていない場合もあります。
私の Azure テナント環境ではまだこの必須化が適用されていませんでした。
が、先日確認してみると多要素認証が必要になるので対応しろとのアラートが出ていました。厳密には管理ユーザーには MFA を設定はしていたのですが強制使用の設定はしていない状態でした。
この多要素認証の管理機能を見てみると、どうやらロールアウトの延期をリクエストできるようです。
今回延期設定と強制の有効化操作をそれぞれ試してみましたので、その様子を紹介します。
ちなみにロールアウト延期を行った場合でも 2025 年 3 月 15 日までなので、もうあまり猶予がないです。
多要素認証の管理
この多要素認証の管理画面、https://portal.azure.com/#view/Microsoft_Azure_Resources/MfaSettings.ReactView
からアクセス可能です。
内容ですが、多要素認証の必須化に伴い、事前に MFA なしでアクセスしているユーザーの情報をチェックし、多要素認証の強制化を行うように説明されています。
ただし、上記「延期の状態」というステータスと、フッターに「強制の延期」「強制を有効にする」のボタンがあります。
どうやらここで MFA 必須ロールアウトの延期ができるようです。
MFA 使用状況のチェック
まず、延期/強制の判断を行うために現在の利用状況を確認する必要があります。
全てのユーザーが MFA を使用してサインインしていれば強制しても良いですし、使用されていなければユーザーごとに MFA の導入を行ったのちに強制化を行います。
チェック方法ですが、PowerShell スクリプトと多要素認証ギャップワークブックの 2 つの方法が案内されています。
ただし後者の「多要素認証ギャップワークブック」については Microsoft Entra ID P1 ライセンスを購入している場合に利用可能なようです。
以下のドキュメントが前提条件などを含めて記載されているドキュメントです。
そのため今回は前者の PowerShell スクリプトを使ってみました。
ドキュメントは以下です。
ただし、私の環境で試した際にはうまく MFA 使用状況が取得出来ませんでした。うまく行ってないのですがせっかくなのでその様子を紹介します。
この PowerShell スクリプトではサインインログを Azure API から取得し、過去 30 日間にサインインしたユーザーのリストをエクスポートし、EXCEL ブックにステータスなどを出力してくれるものとなります。
使ってみましょう。ちなみに私の実行環境は macOS の PowerShell 7.5.0 です。
% pwsh
PowerShell 7.5.0
PS /Users/iwasa.takahito/work/hoge0225mfa> Install-Module MsIdentityTools -Scope CurrentUser
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository,
change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure
you want to install the modules from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
PS /Users/iwasa.takahito/work/hoge0225mfa> Connect-MgGraph -Scopes Directory.Read.All, AuditLog.Read.All, UserAuthenticationMethod.Read.All
Azure ポータルへの認証と、この API への認可が要求されますので実行します。
完了するするとExport-MsIdAzureMfaReport
が実行できるようになります。
Welcome to Microsoft Graph!
Connected via delegated access using 14d82eec-204b-4c2f-b7e8-296a70dab67e
Readme: https://aka.ms/graph/sdk/powershell
SDK Docs: https://aka.ms/graph/sdk/powershell/docs
API Docs: https://aka.ms/graph/docs
NOTE: You can use the -NoWelcome parameter to suppress this message.
PS /Users/iwasa.takahito/work/hoge0225mfa> Export-MsIdAzureMfaReport .\report.xlsx
WARNING: ImportExcel Module Cannot Autosize. Please run the following command to install dependencies:
brew install mono-libgdiplus
You are using an Entra ID Free tenant which requires additional steps to download the sign-in logs.
Follow these steps to download the sign-in logs.
- Sign-in to https://entra.microsoft.com
- From the left navigation select: Identity → Monitoring & health → Sign-in logs.
- Select the 'Date' filter and set to 'Last 7 days'
- Select 'Add filters' → 'Application' and click 'Apply'
- Type in 'Azure' and click 'Apply'
Write-Error: Tenant is not a B2C tenant and doesn't have premium license
が失敗しました。プレミアムライセンスが必要だと言われています。
上記ドキュメントの最後のほうに補足されているのですが、Microsoft Entra ID フリー版のテナントを利用している場合はサインインログを手動でダウンロードしてツールに食わせる必要があるようです。
If you are using an Entra ID Free tenant, additional steps are required to download the sign-in logs
手順が案内されていたのでやってみます。
Entra Admin Portal(https://entra.microsoft.com/) にアクセスします。
[ID] -> [監視と正常性] -> [サインインログ] からサインインイベントを取得します。
Entra ID フリー版の場合は最大で過去 7 日間までログが確認可能で、デフォルトが過去 24 時間になっているのでここを 7 日間に変更します。
フィルター条件を追加し、アプリケーションに「Azure」を指定します。
イベントが表示されたらダウンロードメニューから JSON のダウンロードを行います。
ファイル名は任意で良いです。後ほどツールで指定します。
ドキュメントでは「signins」と指示があったのでそのように指定しました。対象はひとつめのテキストボックスのようです。
ダウンロード後に実行してみました。
ツール自体は動作しましたが、HasSignedInWithMfa
が存在しないというエラーが...
PS /Users/iwasa.takahito/work/hoge0225mfa> Export-MsIdAzureMfaReport ./report.xlsx -SignInsJsonPath ./signins.json -UseAuthenticationMethodEndPoint
PropertyNotFoundException: The property 'HasSignedInWithMfa' cannot be found on this object. Verify that the property exists.
PropertyNotFoundException: The property 'HasSignedInWithMfa' cannot be found on this object. Verify that the property exists.
PropertyNotFoundException: The property 'HasSignedInWithMfa' cannot be found on this object. Verify that the property exists.
PropertyNotFoundException: The property 'HasSignedInWithMfa' cannot be found on this object. Verify that the property exists.
作成されたレポートを確認してみましたが、MFA ステータスが何を出力されていませんでした。
これみなさん出力されましたかね...?うまくいった方教えてください。
今回私はユーザー数が少なかったので Entra ID のユーザー一覧から MFA 強制状況をまず確認しました。
ユーザーメニューの「ユーザーごとの MFA」です。
ここで強制化ができます。一部のユーザー以外は disabled 状態でした。
「強制の延期」
というわけでまずは強制の延期を行ってみます。
次のようにどちらの操作も行うことが出来ないので、まず権限の昇格が必要です。
テナントのディレクトリプロパティにある「Azure リソースのアクセス管理」から「はい」を ON にします。
こちらの設定は今回の延期・強制操作が終わったあとに再び OFF にしておくことを忘れないようにしましょう。
権限昇格後、次のようにボタンが押せる状態になりました。
なお、私が調べたところ昇格後にすぐにボタンが押せるようにならない事象があったようです。
少し前のフォーラム投稿になりますが、もし昇格後にボタンが押せない場合は少し待ってみると良いかもしれません。私はすぐに押せるようになりました。
「強制の延期」ボタンを押します。
ダイアログが表示されるのでそこで「延期」ボタンを押すと操作が確定します。
ダイアログに記載のあるとおり延期といっても 2025 年 3 月 15 日までみたいです。私の環境は特に延期リクエストしていなかったのですが、通常は 2024 年 10 月 16 日から順次テナントにロールアウトされているらしいです。
操作後、ステータスが「延期」に変わりました。
「強制を有効にする」
「強制を有効にする」ボタンを押すと、ロールアウトの延期をせずに適用させることが出来ます。
事前に権限昇格した管理者自身が MFA でサインインしている必要があり、していない場合は次のように有効化操作が出来ません。
というわけで、前述の「ユーザーごとの MFA」から管理者を含む各ユーザーの MFA を事前に有効化しました。
強制を有効にしてみます。
またダイアログが出るので「強制を有効にする」ボタンを押すと確定です。
ステータスが今度は「強制(管理者によるオプトイン)」に変わりました。
ただ、有効化直後にすぐにロールアウトされるようではないです。
少し待って試したりしていたのですが、MFA 有効化していないユーザーがサインインできなくなるようなことはありませんでした。
また、この有効化ですが強制適用した状態から延期ステータスに戻すことも出来るようです。
MFA 強制の確認が出来ていないので実態が確認できていないのですがこの画面上からは「延期」に戻すことが出来ました。
さいごに
本日は Azure サインイン時の多要素認証必須化に伴う延期設定などを今更やってみました。
延期できたとしてももう来月なので今更バタバタしている人は少ないと思うのですが、もしこの MFA 必須化のダイアログを初めて見てどうしたらいいんだろうという方は、延期あるいは MFA の適用を行ってみてください。