Office 365 管理者アカウント 強制MFA機能(Baseline security policy)と対処法

最近がんばってるAzureADチームがナイスな新機能をリリースしてくれました。

Baseline security policy for Azure AD admin accounts in public preview! – Enterprise Mobility + Security

  • 全体管理者
  • SharePoint 管理者
  • Exchange 管理者
  • 条件付きアクセス管理者
  • セキュリティ管理者

上記権限を保有し、かつMFAが有効になっていないアカウントについて、強制的にMFAが有効になります。これらのアカウントをスクリプトで使用していたり、共用で使用している場合は、運用上支障が出ます。

対処法

その1. 機能を無効化する

この機能はプレビューであり、GAされた段階で強制MFAが発動します。それを防ぐためには以下画面で「ポリシーを使用しない」を選択します。

f:id:teraco:20180626231956p:plain

その2. MFAを有効にしないアカウントを選ぶ

MFAを使わないアカウントが整理できている場合、同じ画面から除外対象アカウントを指定できるので、MFAを有効にしないアカウントを指定します。

なお、他の選択肢として「全ての管理者アカウントでMFA有効化」がありますが、この設定を使用すると後述の通りスクリプトでの管理タスク実行に支障が出るため、現実的には「MFAを除外するアカウント指定」を使用するべきでしょう。MSも「全てのアカウントについてMFAを利用するのではなく、緊急用の管理者アカウントを1つはMFAをオフにする方法」を提示しています。

Manage emergency-access administrative accounts in Azure AD | Microsoft Docs

さらっとしか流し読みしてませんが、パスワード文字列を2つか3つに分けて、別々の人間が知るようにする、などが書かれています。

SIer的な立場として

こんなうざったい機能がリリースされたからオフにしちゃいましょうはアウトな気がします。今までは規定値がMFAオフだったので許されていたかもしれませんが、今後は規定値がオンなのをオフにするので…。

  1. SIerが明示的にMFAオフにする
  2. 結果、アカウントが乗っ取られる
  3. SIerが悪いんじゃね?

という話になりそうな気がします。最低限、説明責任を果たして、顧客の同意を取ってからオフにするべきでしょう。

推奨設定

といってもスクリプトで管理者アカウント使いたい!という人向けに推奨設定が出ていました。

Securely Administrate Exchange Online with Multi-Factor Authentication (MFA) - Microsoft Tech Community - 207160

対話的に使用する管理者アカウント

人間が非定形作業で使用するアカウントは(ちょっと面倒ですが)二要素認証を有効にします。Exchange Onlineの場合はこんな感じ

多要素認証を使用して Exchange Online PowerShell に接続する | Microsoft Docs

「俺はSecurePasswordでパスワードを暗号化してるんだ!」「パスワードも十分強力にしてるんだ!」「だから二要素認証なんて要らなんだ!」という方はご自由にどうぞ。

タスクスケジューラーなどで動かす管理者アカウント

夜間バッチなどに埋め込んでいるアカウントはMFAが使えません。つーかMFAオンにしているとバッチが動きません。なので仕方なくMFAをオフにするのですが、その場合は以下のように注意をしてください、とのこと。

  • RDPを禁止する
    • クラウドIDなら問題ないですね
  • 管理者作業に用途を限定し、メールなどは有効化しないようにする
    • 着信したマルウェアをクリックしちゃうと大変ですからね
  • 居力なパスワードをセットする
  • アカウントに対する監査ログを有効化し、定期的にチェックする
  • 社内IPからのアクセスに限定する
  • 管理役割を厳密に設計し、不要なコマンドレットの実行権限を外す
    • これはさすがにめんどくさい…。

将来的に

タスクスケジューラーで動かす管理者アカウントもセキュアに守りたいやん、ということで、Azure MSI(Managed Service Identity)という仕組みが勧められています。

What is Managed Service Identity (MSI) for Azure resources | Microsoft Docs

しかしながら現在はAzureの一部コマンドしか対応しておらず、Office 365的には使えないものになっています。なお私はAzure MSIの仕組みを詳しく理解していません。使わなきゃな。

余談:GraphAPI

同僚とこの件に会話していて「もしかしてGraphAPIで適切にアクセス権を振れば、MFA回避できるんじゃね?」という話題が出たので試しました。結果、GraphAPIでもMFAが効いたことをお知らせいたします(当然ですね)。一点注意として、強制MFA有効化前にトークンを取得していれば、継続してアクセスが可能であり、トークンの有効期限が切れた時点でMFAを求められ、スクリプトでのアクセスが不可になります。時限爆弾。

f:id:teraco:20180626232129j:plain

f:id:teraco:20180626232131j:plain

余談:MFAの実装方法とGA時期予想

KBの注意書きに、MFAが有効になった管理者アカウントは、POP/SMTP/レガシーのOutlookクライアントからもアクセスがブロックされるよと書かれていました。これは検証していないですが、この注意書きが正しいとすると、最近Azure AD Premiumのプレビュー機能として実装されたレガシーブロックの機能を利用していると考えられます(旧MFAはレガシーブロックできなかった…はず)。ということは、Azure AD Premiumのレガシーブロック機能がGAされるまで、Baseline security policyも有効にならないのかな?と思いました。