FIDO2 & Entra 完全パスワードレス環境で ゲストアクセスはどうする？

# はじめに

以下の記事で 完全パスワードレス を構成する方法を案内しました。

https://qiita.com/carol0226/items/a3e914b3968cb7c38a63

これで、このテナントには 強度なフィッシング耐性のある方法（WHfB / FIDO2 / TAP）でしかサインインできなくなっています。

自社のみの運用の場合は、これでも良いのですが、他社のユーザーがゲスト参加して、Teams でコラボレーションをするようなシチュエーションがあると思います。

そのような場合、ゲスト参加したユーザーへ 招待メールが届くのですが、そのあと 承諾を行ったあとに、以下の画面でブロックされて、テナントに参加することができません。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f1fea05a-2bb3-4a31-b5cd-404dd4f8ee0c.png">

# ソリューション
FIDO2 の普及は少しずつ進んでいますが、まだ 大多数が FIDO2 で認証している状態かというと、そうではありません。
Microsoft Authenticator で認証しているテナントの方が まだ全然 多いと思います。

**参考**
https://fidoalliance.org/new-data-finds-brands-are-losing-younger-customers-due-to-password-pain-as-passkeys-gain-mainstream-momentum/?lang=ja

そのため、自社を パスワードレス化したとしても、お付き合いのある会社のテナントは、Microsoft Authenticator で MFA 認証を行っているという可能性が高いです。

そういう時のために、条件付きアクセスを使って、ゲストからのアクセスは MFA であれば OK という例外を設けることで対応します。

# 1. 条件付きアクセスの構成手順

:::note warn
**注意**
条件付きアクセスは、テナントに構成された 複数のポリシーが関連しあって動作しています。
本記事では、基本的な構成のポイントをお伝えしますので、この内容を参考に、検証用テナントなどで十分評価したうえで、本番環境へ適用してください。
:::

## 1-1. ゲストのアクセスを制限する 条件付きアクセス を準備する
すでに、テナント内で ゲストアカウント用のポリシーが存在している場合は、そのポリシーが利用できますので、本章は SKIP してください。ゲストアカウント用のポリシーが存在していない場合は、以下の手順で展開します。

1．Microsoft Entra 管理センター を開きます。
https://entra.microsoft.com/

2．**保護** を開き **条件付きアクセス** を選択します。
続いて、**ポリシー** を開いて **＋新しいポリシーをテンプレートから** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c7e76a3d-724d-4649-abb4-1fdb16eaf304.png)

3．**ゼロトラスト** のタブを選択してから **ゲストアクセスに多要素認証を要求する** を選択して **レビューと作成** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6f0d619b-5e2b-4bd0-ba90-52c9a06f9959.png)

4．**ポリシーの状態** を **オン** にしてから **作成** を押します。
<img width="450" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/9118f1b6-224e-4cf8-85f6-34bbaf1f31cf.png">

5．以下の通知が表示されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b2034666-6cc3-470a-b2ab-768c26918512.png)

6．以下のように ポリシーが作成されていれば OK です。
表示されていなければ、**最新の情報に更新** を押しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/70eea904-2125-4ac2-a76a-e4e55f826f3b.png)

**作成されたポリシーは、以下のようになっています。**

**割り当て：ユーザー**
対象は、ゲストまたは外部ユーザー
対象外は、テナントの管理者（テンプレートを作成した際のアカウント）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b119d2e2-5a61-46a5-b5ae-2bf9e455e377.png)
　<br>
**アクセス制御：許可**
アクセス権の付与が選択され、**多要素認証を要求する** にチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/367ba7ac-3589-46f9-88c2-2dd52b907191.png)

ポリシーの内容を確認しただけですので、**×** を押して 閉じてください。

:::note warn
**注意**
上記のような ゲスト専用 のポリシーが無い場合に、次章の 全ユーザーから ゲスト の除外 を行うと、ゲストには制限が掛からない状態になってしまうので、注意してください。
:::

## 1-2. テナント内の全ユーザーから ゲスト を対象外にする
**前提**
冒頭でも紹介した 以下の記事の手順を構成していた場合は、テナント内の 全ユーザー（ゲストも含む）に対して、強力な耐フィッシングのある認証（WHfB / FIDO2 / TAP）が強制されています。

**考え方**
上記のポリシーの対象ユーザーから、ゲストアカウントを除外し、条件を緩めることで対処を行います。

https://qiita.com/carol0226/items/a3e914b3968cb7c38a63

このポリシーから ゲストアカウントが除外されますが、ゲストアカウントには 前章で構成した **多要素認証を要求する** の許可ポリシーが 適用されることになるため、MFA レベルのセキュリティが 維持されます。

以下のように すべてのユーザー に 強力な耐フィッシングを強制しているポリシーを開いてから、**対象外** のタブを開き、**ゲストまたは外部ユーザー** にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e0dab5a8-e118-4e38-b7af-30734192778a.png)

:::note info
以上の設定によって、ゲストアカウントへの 強力な耐フィッシングの強制 が解かれて、前章で構成した MFA が強制されるようになります。
:::

**オプション**
この時、緑枠の箇所にて、対象となる 外部テナント を制限することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2af17f3c-f93d-4fbc-b5af-57c46bda3881.png)
こうすることで、強力な耐フィッシングの認証から除外するのは、お付き合いのある会社のテナントのみ・・・ということも実現が出来ます。

# 2. 動作検証
1．外部テナントのユーザー へ招待を出します。
**参考：公開情報**
https://learn.microsoft.com/ja-jp/entra/external-id/b2b-quickstart-add-guest-users-portal?wt.mc_id=mvp_407731

2．外部テナントのユーザーにメールが届くため、招待の承諾を押します。
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/db4911b1-ef21-4aa0-adb0-02ed5d4ebc17.png">

3．以下のウィンドウが表示されるので **次へ** を押します。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/0a2bfa2a-48df-4dfb-8239-99dc779f0f54.png">

4．設定変更の 前 と 後 で振る舞いが変わります。
**（設定変更前）** ※条件付きアクセスで ゲストの除外をしていないとき
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f1fea05a-2bb3-4a31-b5cd-404dd4f8ee0c.png">

**（設定変更後）** ※ゲストを除外し、ゲストには MFA を強制した場合
以下のように 招待 をした側のテナントから、Microsoft Authentiator の登録を求められますので、手続きを進めます。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b89b80ab-de25-4423-9b79-13c2311830ec.png">

MFA の登録が完了すると、以下のように 招待をしたテナント側の マイアプリ 画面にサインインできました。
<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3278dba7-d9e1-4b67-8249-d3b065cbdcba.png">

以後、このゲストアカウントを使って、招待をした側のテナントユーザーとコラボレーションが行えるようになりました。

# 参考
このほかに FIDO2 に関する記事を投稿しています。
こちらも あわせて参照ください。

https://qiita.com/carol0226/stocks/3670cb8678daed11b191