Microsoft 365の多要素認証(MFA)は、会社のアカウントを不正アクセスから守る重要なセキュリティ対策です。管理者としては、すべての社員がMFAを正しく登録しているかを定期的に確認し、未登録者に対して適切にフォローする必要があります。しかし、管理ポータルで一人ひとりの設定を確認するのは手間がかかります。本記事では、PowerShellを使って対象ユーザーのMFA登録状況を一覧出力する方法と、未登録者を効率的にフォローする手順を解説します。
【要点】この記事で確認すること
- 最初に見る場所: Azure Active Directory管理センターまたはExchange管理センターのユーザー一覧。ただし、一括出力にはPowerShellが最も効率的です。
- 切り分けの軸: 端末側(Authenticatorアプリのインストール状況)とアカウント側(MFA登録状態、認証方法の有無)を区別して確認します。
- 注意点: 会社PCの設定を変更せずに、管理者権限(グローバル管理者またはユーザー管理者)が必要です。一般ユーザー権限では他のユーザーの状況を確認できません。
ADVERTISEMENT
目次
MFA登録状況を確認するための事前準備
まず、MFA登録状況を一覧出力するためには適切な管理者権限が必要です。最低限、ユーザー管理者またはグローバル管理者のロールが割り当てられているアカウントを使用してください。ユーザー管理者ではほとんどのユーザー情報を読み取れますが、一部の操作(条件付きアクセスポリシーの変更など)にはグローバル管理者が必要です。
次に、使用するツールを決めます。Microsoftは従来のMSOnlineモジュールの廃止を進めており、現在はMicrosoft Graph PowerShell SDKへの移行が推奨されています。ただし、MFA登録状況の取得に関しては、MSOnlineモジュールでも問題なく動作します。ただし、将来的なサポート終了を考慮し、本記事ではMicrosoft Graphを用いた方法も併せて紹介します。
また、組織によってはAzure Active Directory管理センターのポータル画面から各ユーザーのMFA設定を確認することも可能です。しかし、一人ひとりクリックして確認するのは工数が大きいため、一覧出力にはPowerShellスクリプトを利用するのが現実的です。
一覧出力の具体的な手順(PowerShellを使用)
Microsoft Graph PowerShell SDKを使用した方法(推奨)
以下の手順に従って、最新のMicrosoft Graph PowerShell SDKを使ってMFA登録状況を取得します。事前にPowerShellがインストールされていることを確認してください。
- 管理者としてPowerShellを起動し、次のコマンドでMicrosoft Graphモジュールをインストールします。
Install-Module Microsoft.Graph -Scope CurrentUser - インストールが完了したら、以下のコマンドでAzure ADに接続します。認証ダイアログが表示されるので、管理者アカウントでサインインします。
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All" - 全ユーザーのMFA登録状況を取得するには、次のコマンドを実行します。
Get-MgUser -All -Property Id, DisplayName, UserPrincipalName, StrongAuthenticationMethods | Select DisplayName, UserPrincipalName, @{n="MFA登録済み";e={if($_.StrongAuthenticationMethods.Count -gt 0){"はい"}else{"いいえ"}}} - 結果をCSVファイルに出力する場合は、パイプでExport-Csvを追加します。
... | Export-Csv -Path C:\MFAReport.csv -Encoding UTF8 -NoTypeInformation - 出力したCSVをExcelで開き、”MFA登録済み”列が”いいえ”のユーザーを未登録者として特定します。
従来のMSOnlineモジュールを使用した方法
MSOnlineモジュールは非推奨ですが、当面は利用可能です。以下の手順で実行できます。
- 管理者PowerShellでMSOnlineモジュールをインストール(未インストールの場合)。
Install-Module MSOnline -Scope CurrentUser - 接続コマンドを実行。
Connect-MsolService - 全ユーザーを取得してMFA状況を表示。
Get-MsolUser -All | Select DisplayName, UserPrincipalName, StrongAuthenticationMethods - CSVにエクスポート。
... | Export-Csv C:\MFAReport_MSOL.csv -Encoding UTF8 -NoTypeInformation - 結果を確認し、StrongAuthenticationMethodsが空のユーザー($nullまたは空配列)を未登録者と判断します。
管理ポータルからの確認(個別確認)
少数のユーザーであれば、Azure Active Directory管理センターから確認することもできます。以下の手順で操作します。
- Azure AD管理センター(https://aad.portal.azure.com)に管理者アカウントでサインインします。
- 左メニューから「ユーザー」を選択し、確認したいユーザーをクリックします。
- ユーザーブレードで「認証方法」タブを開き、登録されているMFAの種類を確認します。
- 登録済みの認証方法が表示されていない場合、そのユーザーはMFA未登録と判断できます。
- この方法は一括確認には向かず、数十人以下の場合に限定されます。
出力結果の見方と未登録者の特定
PowerShellの出力では、StrongAuthenticationMethodsプロパティが重要です。このプロパティには、登録されている認証方法のリストが格納されます。リストが空(Count=0)または$nullの場合は、MFAが未登録と判断します。ただし、古いバージョンのMSOnlineモジュールでは、電話番号のみ登録されている場合でもリストが空になることがあります。そのような場合は、別のプロパティ(StrongAuthenticationRequirementsなど)も確認してください。
以下の比較表を参考に、登録状況を判定します。
| 状態 | StrongAuthenticationMethods | MFA登録済み? |
|---|---|---|
| 未登録 | 空(Count=0)または$null | いいえ |
| 電話認証のみ | 1つのメソッド(例:Phone) | はい(ただし推奨はアプリ認証) |
| アプリ認証(Authenticator) | 1つ以上のメソッド(Microsoft Authenticator など) | はい |
| 複数方法登録済み | 複数のメソッド(電話+アプリなど) | はい |
CSVで出力した場合、”MFA登録済み”列が”いいえ”の行をフィルタリングして未登録者リストを作成します。このリストを基にフォローを実施します。
ADVERTISEMENT
未登録者へのフォロー方法と注意点
メール通知による自主的な登録促し
未登録者に対して一斉メールでMFA登録を促す方法です。以下のテンプレートを参考に、組織のセキュリティポリシーに合わせて調整してください。
件名:【重要】多要素認証(MFA)の登録をお願いします 本文: いつもお世話になっております。IT管理部門です。 セキュリティ強化のため、全社員に多要素認証(MFA)の登録を必須としています。 以下のリンクから、ご自身のMicrosoft 365アカウントにMFAを登録してください。 [登録URL: https://aka.ms/mysecurityinfo] 期限:〇月〇日までにご対応ください。 ご不明な点はITサポート(support@example.com)までご連絡ください。
メールの一括送信には、PowerShellのSend-MailMessageコマンドレットや、Microsoft Graph APIを通じての送信が考えられます。ただし、社内のメールシステムによっては大量送信が制限される場合があるため、事前に確認してください。
条件付きアクセスポリシーによる強制登録
未登録者が自主的に対応しない場合、条件付きアクセスポリシーを使ってMFA登録を必須にすることも可能です。以下の手順でポリシーを作成します。
- Azure AD管理センターにサインインし、「セキュリティ」→「条件付きアクセス」を選択します。
- 「新しいポリシー」をクリックし、ポリシー名を入力します(例:「MFA登録必須ポリシー」)。
- 「ユーザーとグループ」で「すべてのユーザー」を選択します(未登録者のみに適用したい場合はグループ指定も可)。
- 「クラウドアプリまたは操作」で「すべてのクラウドアプリ」を選択します。
- 「条件」で「ユーザーリスク」や「場所」を必要に応じて設定します。
- 「許可」で「多要素認証を要求する」にチェックを入れます。
- 「ポリシーを有効にする」を「オン」にして「作成」をクリックします。
このポリシーを有効にすると、未登録のユーザーがサインインしようとしたときにMFA登録画面にリダイレクトされるようになります。ただし、強制適用前にテストユーザーで動作確認を行い、影響を評価してください。
失敗パターンと対策
以下によくある失敗パターンとその対策をまとめます。
- 権限不足エラー:「アクセスが拒否されました」と表示される場合は、アカウントに適切な管理者ロールが割り当てられていない可能性があります。グローバル管理者またはユーザー管理者の権限が必要です。
- 全ユーザーが取得できない:PowerShellコマンドに-Allパラメータを付け忘れると、先頭100ユーザーしか取得できません。必ず-Allを指定してください。
- StrongAuthenticationMethodsが空でもMFAが設定されている:一部の古いMFA設定(レガシーMFA)では、このプロパティに値が入らない場合があります。レガシーMFAの状態はGet-MsolUserのStrongAuthenticationRequirementsプロパティで確認できます。
- CSVの文字化け:PowerShellで出力する際にEncoding UTF8を指定しないと日本語が文字化けします。Export-Csvに-Encoding UTF8を必ず付けてください。
よくある質問(FAQ)
Q1. 管理者権限がないので、自分で他の社員のMFA状況を確認できません。どうすればよいですか?
A. 一般ユーザー権限では他のユーザーの情報を参照できません。所属部署の上位管理者やIT部門に依頼して、上記の手順で一覧出力を依頼してください。また、自分自身のMFA状況は「マイセキュリティ情報」ページ(https://aka.ms/mysecurityinfo)で確認できます。
Q2. 一覧出力に全ユーザーが表示されないのはなぜですか?
A. PowerShellで-Allオプションを指定していない可能性が高いです。Get-MgUserやGet-MsolUserには-Allパラメータを必ず追加してください。また、テナントに大量のユーザーがいる場合は、ページングが発生することがありますが、-Allを指定すれば自動的にすべて取得されます。
Q3. 登録済みなのに「未登録」と出力されるユーザーがいます。どうしてですか?
A. StrongAuthenticationMethodsプロパティだけでは判断できないケースがあります。例えば、電話番号のみの登録やレガシーMFAの設定では、このプロパティが空になることがあります。その場合は、以下のコマンドでレガシーMFAの状態を確認してください。
Get-MsolUser -UserPrincipalName user@domain.com | Select StrongAuthenticationRequirements
または、Azure AD管理センターで該当ユーザーの「認証方法」タブを直接確認することで正確な状態がわかります。
まとめ
MFA登録状況の一覧出力は、PowerShellを使うことで効率的に行えます。Microsoft Graph SDKが推奨ですが、MSOnlineモジュールでも当面は利用可能です。出力結果から未登録者を特定し、メール通知や条件付きアクセスポリシーで確実に登録を促しましょう。
定期的にレポートを取得して未登録者がいない状態を維持することが、セキュリティインシデントを未然に防ぐことにつながります。また、PowerShellスクリプトをタスクスケジューラで定時実行すれば、週次や月次のレポートを自動生成することも可能です。
未登録者へのフォローでは、強制一辺倒にならず、ユーザーが戸惑わないような丁寧な案内が重要です。管理ポータルやPowerShellのコマンドを活用して、組織全体のMFA浸透度を高めてください。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
- 【Outlook】メール本文が「文字化け」して読めない!エンコード設定の変更と修復手順
