Microsoft 365の管理操作はPowerShellスクリプトによって自動化を構成することが多くあります。
この場合、スクリプト内にアカウント認証を行う仕組みを用意する必要があり、例として下記のような方法があります。
1. スクリプト内にアカウント、パスワード文字列(暗号化文字列)を埋め込む
2. パスワード文字列(暗号化文字列)を記述したファイルを用意し、スクリプト内でファイルを読み込む
しかし、Microsoft 365の管理者アカウントは多要素認証により保護することが推奨されており、
以上の方法では第二要素での認証を自動化できないため管理操作の自動化を行えません。
(パスワード認証のみで運用することも可能ですが、セキュリティの面からやるべきではありません)
画面1. 多要素認証が設定された管理者アカウントでログインを行った場合
管理アカウントの多要素認証が有効化された状態で管理操作の自動化を行うためには、証明書認証による接続を構成する必要があります。
Exchange Onlineを例に、証明書認証を構成してみます。
1. 自己証明書の作成
下記コマンドを実行して、証明書の作成を行います。
※ 管理者権限で実行します
======================
$newCert = New-SelfSignedCertificate -Subject "CN=muto-san" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature
Export-Certificate -Cert $newCert -FilePath .\muto-san.cer
======================
2. Azure AD管理センターからアプリを登録
3. 証明書のアップロード
4. アクセス許可とExchange管理ロールの設定
5. 証明書情報を記述して接続コマンドを実行
アプリケーションID、証明書Thumbprint、プライマリドメイン名を使用して接続します。
少し手間ですが、これで管理アカウントの多要素認証を行わずにログインすることが出来ました。