こんにちは、富士榮です。
Azure ADで多要素認証を使う場合、ユーザ毎に有効/無効/強制の設定を行う必要があるため非常に面倒です。(CSVで一括設定することも可能ですが、リストファイルを作成して管理コンソールからアップロードする必要があるので、ユーザが増えてくると結果確認などを考えると結構面倒です)
そういう場合のPowerShellです。
早速方法を紹介します。
手順は割愛しますが、まずはConnect-MSolServiceで全体管理者の権限を持つユーザでAzureへ接続します。
※Azure PIM(特権ID管理)をうまく使ってヘルプデスクユーザへ一時的に権限を与えてスクリプトを実行させるとセキュアで便利です。この辺りはそのうち細かく紹介したいと思います。
うまく接続できたら、早速設定をしてみます。
◆有効
以下を実行します。
![]()
管理コンソールで確認すると有効化されていることがわかります。
![]()
◆無効
同様に無効化です。
![]()
@()で空の配列をStrongAuthenticationRequirementsに渡してあげます。
管理コンソールを見ると無効化されていることがわかります。
![]()
◆強制
最後に強制です。
![]()
少しトリッキーです。$auth.StateにEnforcedをセットします。
管理コンソールで確認します。
![]()
尚、設定結果の取得ですが、上記では管理コンソールでの目視をしましたが、もちろん以下のようにGet-MsolUserを使って確認することも可能です。
![]()
Azure ADで多要素認証を使う場合、ユーザ毎に有効/無効/強制の設定を行う必要があるため非常に面倒です。(CSVで一括設定することも可能ですが、リストファイルを作成して管理コンソールからアップロードする必要があるので、ユーザが増えてくると結果確認などを考えると結構面倒です)
そういう場合のPowerShellです。
早速方法を紹介します。
手順は割愛しますが、まずはConnect-MSolServiceで全体管理者の権限を持つユーザでAzureへ接続します。
※Azure PIM(特権ID管理)をうまく使ってヘルプデスクユーザへ一時的に権限を与えてスクリプトを実行させるとセキュアで便利です。この辺りはそのうち細かく紹介したいと思います。
うまく接続できたら、早速設定をしてみます。
◆有効
以下を実行します。
PS C:\> $auth = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
PS C:\> $auth.RelyingParty = "*"
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @($auth)
![](http://4.bp.blogspot.com/-wDvIzuLamLI/VmmefVr_PjI/AAAAAAAAM-g/mwfxDkMYqgQ/s640/enable.png)
管理コンソールで確認すると有効化されていることがわかります。
![](http://2.bp.blogspot.com/-cyYYSS6X2ds/Vmmesmj0ddI/AAAAAAAAM-s/8opJlCbEPpQ/s640/enable_2.png)
◆無効
同様に無効化です。
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @()
![](http://1.bp.blogspot.com/-u_2PSDcBjBg/VmmfXvfDk_I/AAAAAAAAM-4/tcG1QTXn1bk/s640/disable.png)
@()で空の配列をStrongAuthenticationRequirementsに渡してあげます。
管理コンソールを見ると無効化されていることがわかります。
![](http://2.bp.blogspot.com/-KNZmseR2PH8/Vmmfnerh8jI/AAAAAAAAM_E/nDbyRct_e8E/s640/disable_2.png)
◆強制
最後に強制です。
PS C:\> $auth = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
PS C:\> $auth.RelyingParty = "*"
PS C:\> $auth.State = "Enforced"
PS C:\> Set-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com -StrongAuthenticationRequirements @($auth)
![](http://3.bp.blogspot.com/-86UnSmjvnGw/Vmmfv6HAUXI/AAAAAAAAM_Q/O0aSm6wvSpE/s640/enforce.png)
少しトリッキーです。$auth.StateにEnforcedをセットします。
管理コンソールで確認します。
![](http://2.bp.blogspot.com/--Iswmj1nLMM/Vmmf6DFeAWI/AAAAAAAAM_c/aMpEi_uzwHc/s640/enforce_2.png)
尚、設定結果の取得ですが、上記では管理コンソールでの目視をしましたが、もちろん以下のようにGet-MsolUserを使って確認することも可能です。
PS C:\> $user = Get-MsolUser -UserPrincipalName mfa@xxxx.onmicrosoft.com
PS C:\> $auth = $user.StrongAuthenticationRequirements
PS C:\> $auth | fl
![](http://2.bp.blogspot.com/-zWGUvu5pOkI/VmmgblEYLsI/AAAAAAAAM_o/PVyjXyOuGXM/s640/get.png)
この辺りをうまく使ってAzure ADの管理体制を上手に運用していけるといいですね。
※本当は全体管理者権限ではなく、もう少し細かい権限がほしいところです・・・