Microsoft Entra の "Join" を制限した場合の動作

# はじめに
Microsoft Entra テナントは、既定の設定のままでは、テナント内の全ユーザー（つまり 全従業員）が、PC をテナントに参加させることが可能です。
つまり、業務用 PC だけでなく 私用の PC も 参加させることが可能になっています。

私用の PC がテナントに参加できる場合、テナント側としては この PC は 企業所有 であると識別されますし、Microsoft 365 上にある情報資産を、PC 上に自由に取り出して活用できる反面、私用のメールやクラウドサービスを使って、外部に送信することも出来てしまう事となり、セキュリティ面で課題を抱える事になります。

なお、本記事では、Microsoft Entra Join の事を 長いので **"Join"** と省略形で表記します。

**デバイスの設定 － ユーザーはデバイスを Microsoft Entra に参加させることができます**
本記事では、下図の設定を **"すべて"** から **"なし"** や **"選択済み"** に変更した場合に、どのような結果になるのかを紹介していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4a5addab-f526-cdfd-2e79-c65629261071.png)

:::note info
上記の設定画面への行きかた
① 検索窓で **entra** と入力
② **Microsoft Entra ID** を選択
③ **デバイス** を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4e40ea39-56a7-3f5f-4ac6-543c312d82e2.png)
:::

**公開情報**

https://learn.microsoft.com/ja-jp/entra/identity/devices/manage-device-identities#configure-device-settings

:::note warn
**下図の **赤マル** 内の説明** について
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8c620983-b343-60c6-994f-04b401d0ebf7.png)


デバイスを Microsoft Entra に参加させることが許可されているユーザーとグループを選択します。

この設定は、Windows 10 の Microsoft Entra Join にのみ適用されます。この設定は、Microsoft Entra Hybrid Join を使用したデバイス、Microsoft Entra Join を使用した Azure 内の VM、Microsoft Entra Join を使用したデバイスで、**Windows Autopilot 自己デプロイ モードを使用しているもの** には適用されません。

これらの方式はユーザーレス コンテキストで機能するためです。
:::

:::note alert
ちょっと私も勘違いしかけたのですが、Autopilot には、自己展開モード、ユーザー駆動モード、事前プロビジョニング などがあります。自己展開モードとは、キオスクなど 共有 PC を展開する方法です。

実際に検証してみたのですが、ユーザー駆動モード で展開するためには、"Join" の制限を行ってしまうと、以下のエラーが出て 展開できなくなりますので、ご注意ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a81309f4-cd5d-13c6-142d-c27d730b350e.png)
:::

Autopilot ユーザー駆動モード と組み合わせて利用する場合には、本記事の方法ではなく、以下の記事で紹介している **Intune の 登録制限** の方を検討いただくと良いと思います。

https://qiita.com/carol0226/items/8bf7e918f17fcaaa877f

# 結論
結論としては、シンプルな結果です。

**ユーザーはデバイスを Microsoft Entra に参加させることができます** の設定ごとに説明します。

- **"すべて"** の場合は、全ユーザーが **"Join"** をおこなうことができます。
- **"選択済み"** の場合は、選択されたユーザーのみが **"Join"** をおこなうことができます。
- **"なし"** の場合は、全ユーザーが **"Join"** できません。

なお、**"Join"** の実施には、以下のライセンス要件も充足している必要があります。

:::note warn
**"Join" の ライセンス要件**
- Microsoft Entra ID P1（旧：Azure AD Premium P1）のライセンスが必要
- Intune と連携されたテナントでは、"MDM ユーザースコープ" に含まれるユーザーの場合は、Intune のライセンスも必要

MDM ユーザースコープについては、以下の記事を参照してください。
Intune への登録を構成する説明になっています。
**Windows デバイス を Intune に自動登録する**
https://qiita.com/carol0226/items/e75b04f2a6a99fa6bcf7
:::

判りづらいのは、ライセンス要件も含めて、**"Join"** を実施出来ない場合の画面の振る舞いが思ったような画面にならず、再現性が良くわからない点となります。

この点の詳細を 以降の章で説明しています。

# 検証結果

**ユーザーはデバイスを Microsoft Entra に参加させることができます** の設定が **"なし"** の場合に想定される動作を説明します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2bf3e59b-0bef-a14a-1a77-f899cb5d27aa.png)

**結論** としては、すべてのユーザーが **"Join"** を実施することはできません。

なお、公開情報をみるだけでは、どのような動作になるのか判断しづらく、さらに検証してみればみるほど、謎が深まる状況になります。

私が検証して状況を整理したところ、以下のような 事象①～③ の違いがありました。

## 事象①
新規作成されたアカウントで、"ライセンスが不足している場合" および "デバイス管理 のロールを持たない" 場合は、以下の エラー画面が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bad766f6-b222-098e-a824-fd846372b920.png)

:::note info
Intune と連携されたテナントで、MDM ユーザースコープ に含まれるユーザーなのに、Intune のライセンスだけが不足している場合も、この画面になって、**"Join"** がブロックされます。
:::

:::note alert
**原因不明の謎事象**
事象① に該当する 新規アカウントを 20 件 新規発行して、**"Join"** の実施を検証したのですが、5 件くらい "参加する" の画面が表示されることがありました。再現率は 100% ではありません。これは謎です。

この 5 件 のアカウントは、事象③ の状態になりました。
最終的には、エラーが出て **"Join"** する事はできないのですが、判りづらいです。

なお、不足した条件が "Inune のライセンスが足りないだけ" だった場合に、この謎事象が重なると、Intune の登録が成功してしまいます。
:::

## 事象②
新規作成されたアカウントで、ライセンスが充足していて、以下の Microsoft Entra 組み込みロール を持つユーザーは **"参加する"** の画面が表示されました。
そのため 一見 **"Join"** が実施できそうに見えますが、その後の工程で エラーになるので、結果的には **"Join"** はできません。
（デバイス管理に関する管理者ロール）
　- グローバル管理者
　- クラウドデバイス管理者
　- Windows 365 管理者
　- Intune 管理者
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1bc0e6cb-b874-c910-7fc4-ade7c320d830.png)
**参加する** を押したあとに、以下のエラーになる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/edab2003-6f18-58c7-0e10-3629d0b65ea4.png)

:::note info
**参考：Microsoft Entra 組み込みロール**
https://learn.microsoft.com/ja-jp/entra/identity/role-based-access-control/permissions-reference

"デバイス管理に関する管理者ロール" かどうかは、 **"microsoft.directory/devices/enable"** を持っているかどうかで判定されていると思われます。
:::

## 事象③
実は、事象 ① と ② で、新規ユーザーの場合・・・という条件の見解に至るまでに、再現性がわからず、苦労しました。
どうやら、過去に一度でも条件に充足し **"Join"** を実施することが可能だったアカウントは、事象① のエラーは発生せずに、以下の画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1bc0e6cb-b874-c910-7fc4-ade7c320d830.png)

これも、**"Join"** が出来てしまうように見えるのですが、そのまま **"参加する"** を押した場合、以下のエラーが出て **"Join"** はブロックされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/edab2003-6f18-58c7-0e10-3629d0b65ea4.png)

多岐に渡って検証した結果、以下の 条件が判りました。

:::note warn
**条件**
一度でも **"Join"** の実行が許可されたユーザーは、その後 テナントの設定を **"なし"** に変更したり、ライセンスはく奪、ロールの剥奪、を実施した場合は、事象③ になります。

いちど、事象③ になったアカウントは、事象① に戻る事は無い様子です。条件を満たせば **"Join"** できますが、エラーの場合は、常に 事象③ になります。 
:::

:::

**具体例**
- "すべて" の設定の際に **"Join"** 出来ていたユーザーが、"なし" の設定に変わった
- "すべて" の設定の際に **"Join"** 出来ていたユーザーから、ライセンスを剥奪

# "選択済み" の場合の動作は？
下図のように "選択済み" を選んだ場合は、どうなるのでしょうか？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/58677b7a-2ee0-1a5c-3d49-0ea41acd7911.png)

この場合の動作は、**"選択済み"** で選ばれた **"アカウントのみ"** が、**"Join"** に成功して、それ以外のアカウントは **NG** になります。

**NG** の場合に表示されるエラー画面は、事象①～③ で説明した時と一緒です。

社内で、**"Join"** を実施させたい グループ を作っておいて、そこへ **"Join"** を行わせたい ユーザーを割り当てて利用することが想定されます。

※この場合でも、一度でも **"Join"** を実施できる状態になったあとに、その後 選択から除外された場合には、事象③ の動作になります。

:::note info
**メモ**
**"Join"** を実施できないユーザーに対して、ライセンスを適用して、"選択済み" の対象ユーザーに割り当てられたアカウントは、数分後には、**"Join"** 出来るようになります。
:::

# "Join" 実施の際の動作イメージ
Microsoft Entra Join は、以下の赤枠を押して、**"Join"** を開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e0767361-2be5-8349-124c-23b2be05e6b1.png)

## アカウント作成時から "Join" の要件を満たさない場合
デバイスの設定が "なし"、ライセンス不足、デバイス管理ロールを持たない、いずれの場合も 同じ画面になります。

<details><summary>1. アカウントの入力：画面を見るには、ココ を押してください</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8bdd88aa-d603-b4ab-51ca-7c8fa2fe0f22.png)
</details>

<details><summary>2. パスワードの入力：画面を見るには、ココ を押してください</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/effd49d2-88bf-37fa-0658-188afc7e0a3c.png)
</details>

3．以下の画面が表示されます。**サインイン済み** にはなっている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/64dc1a5a-27ad-b127-56ad-2696eced5366.png)

4．上記の アカウント を選択してみると、以下のように表示されて、**"Join"** はできません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/bad766f6-b222-098e-a824-fd846372b920.png)

<details><summary>再試行 を押した際の 画面遷移は、ココ を押してください</summary>
この画面に戻されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/f99a28ea-df57-6393-561a-74843b966034.png)
</details>

<details><summary>キャンセル を押した際の 画面遷移は、ココ を押してください</summary>
この画面に戻されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/67db6fa7-4c12-b349-b6ba-c6542f67c70d.png)
</details>

## 以前に "Join" が可能だったアカウントが、条件を満たさなくなった場合

<details><summary>1. アカウントの入力：画面を見るには、ココ を押してください</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8bdd88aa-d603-b4ab-51ca-7c8fa2fe0f22.png)
</details>

<details><summary>2. パスワードの入力：画面を見るには、ココ を押してください</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/effd49d2-88bf-37fa-0658-188afc7e0a3c.png)
</details>

3．以下の画面が表示されるため **参加する** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1bc0e6cb-b874-c910-7fc4-ade7c320d830.png)

4．以下のエラーが表示されて、**"Join"** する事はできません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/edab2003-6f18-58c7-0e10-3629d0b65ea4.png)

サーバーのエラーコード: 801c03ed
サーバーメッセージ: Administrator policy does not allow user ------\------- to devide join
詳細情報: https://www.microsoft.com/aadjerrors

# あとがき
本機能については、きちんと掘り下げて検証してみようと思ったせいで、深みにハマりました。
真面目に動作を検証しようとすればするほど、再現性がわからなくなりましたね。

私の場合は、当初「参加する」のボタンが表示された段階で、**"Join"** ができるようになったと判断して、再現性を確かめていったので、事象② のように デバイス管理者 のロールを持っていれば、無条件に **"Join"** ができるものと思い込んでしまったのです。

結論としては、デバイス管理のロールを持っていると、端末側では **"Join"** が可能だと判断されて、"参加する" のボタンが表示されるものの、テナント側で ブロック されるような動作になっているようです。

それから、作成済みのユーザーに対して、ライセンス や、ロール を付与したり 剥奪したりして比較検証していたので、事象③ の状況にハマってしまいました。
結果的には、新規ユーザーと 既存ユーザーに分けて、ライセンスやロールの付け外しをせずに検証する事で、再現性を確認できるようになりました。

非常に多くの時間と検証工数を掛けてしまったのですが、結論としては シンプルに "なし" の設定になっていれば、一律で **"Join"** をする事はできず、"選択済み" で割り当てられて ライセンス要件を満たした ユーザーは、**"Join"** を実施できる・・・という結論に至りました。

デバイス管理者ロールの有無は、結局 関係ありません。

同じような迷い道に入ってしまった人が もし居たら、この記事が救いになれれば 幸いです。