見出し画像

Microsoftゲストアカウントの認証について


はじめに

こんにちは、菊池智之です。コーポレート本部システム部で社内情報システムの管理を担当しています。
社内情報担当になってまだ1年程度のため、知らないことを調べながら少しずつ知識をつける日々を過ごしています。
Microsoftのクラウドサービスの公式ドキュメントはたくさんあるのですが、情報が分散していたり、調べたいことが見つからなかったりすることも多いのが悩みです。
今回のアドベントカレンダー企画を通して、特に悩まされるゲストユーザーの認証について実際にダミーのテナントを使いながらドキュメントに記載された動作を確認してみようと思います。
(本稿は朝日新聞社の2024年Qiitaアドベントカレンダーの投稿です)


M365ゲストアカウントとは

  • Microsoft Teams、 SharePoint、 Microsoft Entra External ID などの Microsoft 365 製品に招待されたユーザーが利用できるアカウント

  • 組織外のメンバーとチームやチャネル内のドキュメント、リソース、チャット、アプリケーションにアクセスできる機能で、企業のセキュリティを保護しながら利用できる


ゲストユーザーができること

  • Teams会議に出席する

  • ドキュメントを表示する

  • Teamsでチャットする

  • ファイルを共有する

  • 画面を共有する

  • 通話や投稿時にユーザーやグループ名の前の「@」をつけて通知を送るメンション


ゲストの招待の仕方

事前準備:ゲスト招待者のロールを準備する

  1. セキュリティ管理者アカウントを使用して Microsoft Entra 管理センター にサインインする

  2. [ グループ] を展開し、 [ すべてのグループ] を選択する

  3. [ 新しいグループ] を選択する

  4. [グループの種類] で [セキュリティ] を選択する

  5. グループ名を入力する

  6. 必要に応じて、グループの説明を追加する

  7. Microsoft Entra ロールをグループに割り当てることができる場合は、[はい] を選択する

  8. グループの所有者とメンバーを追加する

  9. [ ロール] で、 [ ロールが選択されていない] を選択する

  10. [ゲスト招待者] ロールを検索して選択し、[選択] を選択する

  11. [ 作成] を選択し、ロールを割り当てることができるグループを作成する

  12. 作成したグループにゲスト招待を行うアカウントをメンバーとして追加する


ゲスト招待:招待からユーザー作成まで

①ゲスト招待
ゲスト招待者ロールを持ったユーザーがM365管理センターから実施する
②招待の承諾
招待されたユーザーに届いたメールのリンクから招待の承諾を実施する

③ゲストユーザー作成
③-1 招待元テナント(=リソーステナント)からのアクセス許可を承諾する

③-2 招待されたユーザーがいるテナント(=ホームテナント)でMFAを必須にしている場合、追加の情報が求められる


Teamsチームへの招待

ゲストユーザーが作成されたら、招待したいTeamsチームにユーザー追加する

ユーザー追加すると、株式会社朝日新聞社が追加される。ユーザー追加後は認証前なので、工事中みたいなマークがついている。認証については後述

ユーザー追加前
ユーザー追加後


ゲストの認証の仕組み

「B2B ユーザーの認証と条件付きアクセス」より引用

<引用元>


認証の手順ついて、実際に動作を確認してみます。
①リソーステナントへのサインイン

②Microsoft Entra セキュリティ トークン サービス (STS) によって リソーステナントの条件付きアクセス ポリシーが評価される

③Microsoft Entra ID は リソーステナントの受信信頼設定を検査して、リソーステナントがホームテナントからの MFA とデバイス要求 を信頼するかどうかを確認する
→今回は信頼する設定を入れていないので、手順④、⑤はスキップされる

⑥リソーステナントの条件付きアクセスポリシーに基づきMFAが要求される


コメント

ここがとても分かりにくいと思います。
ホームテナントのメールアドレス(test@example.com)が表示されていますが、聞かれているコードはリソーステナントで登録しているワンタイムパスワードコードです。
Authenticatorアプリなら、#EXT#がついているリソーステナントのコードを使います。(ゲストアカウント作成の③-2で登録したコード)
ホームテナントでもMFAにAuthenticatorアプリを使っている人はついつい間違えてしまいそうな箇所です。


ホームテナント側のログ


リソーステナント側のログ

Entraのサインインログではホームテナントとリソーステナントの両方で同じ時刻にアクセス要求があったことを確認できます。
ゲストのログインがうまく行かない場合、それぞれのテナントのシステム管理者は時刻だけでなく「要求ID」を共通言語に調査することができます。
どちらの条件付きアクセスポリシーで認証されているかも、このログからわかります。

おわりに

今回は2つのテナントを使ってゲストがどのように認証されて、どのようなサインインログが出るのかを確認しました。
1人で複数テナントを同時に見る機会はなかったので、今後エラーが起きた際の参考になりそう。
ホームテナントもリソーステナントも、管理者アカウントも全部自分の名前で作っちゃったので、わかりにくくなってしまったのが失敗でした。
招待時にゲストの名前をわかりやすく変えてみましたが、招待が完了するとホームテナントの名前が生きてしまうんですね。

おまけ

ゲストをTeamsチームのメンバーから外しても、アクティビティには残ります。ここからチームを開こうとしても、「問題が発生しました」と出ます。
ゲストの使用を終了してチームから削除したが、しばらくたって別チームに追加したときなどに、過去のアクティビティが表示されて混乱を招くこともありそうです。