遂に待望の外部IDがAVDで利用できるようになりました!招待できるテナントは社内外問わず可能です。ただし、外部のユーザーを招待して、自社のAVD環境をサービスとして提供するような用途には利用できません。AVDを利用したSaaSの提供には、[ユーザーごとのアクセス価格]を適用する必要があります。それでは、さっそく確認してみたいと思います~
外部IDを利用した場合、下記のような事が可能です。
・Entra Join 構成のみ。SSOが必須。
・セッションホストは、Personal/Pool、SingleOS/MultiOS、どれでもOK
・外部IDの元のアカウントは、クラウドID/ハイブリッドIDどちらもOK
・FSLogixの保存先として、Files(Preview)とBlobが利用可能
・ADドメイン環境へのシームレスな接続はできません。Entra KerberosがあってもNG

それでは、外部IDについてですが、
AVDを構築する予定のテナントAに対して、別のテナントBからユーザーアカウントを招待してAVD接続用のアカウントとして利用できます。いままで、これが出来なかった。。
テナントAにはアカウント情報だけが提供され、認証はテナントBにて行われます。
招待したアカウント(外部ID)は、クラウドIDのように扱われる。

外部IDには、招待した側のテナントでライセンスを割り当てる必要があります。
[Azure Virtual Desktop / Entra ID / M365 / Intune / Defender for Endpoint]
マルチテナント組織の場合、EntraIDライセンスは、従業員数に対して必要であり、全テナント内のアカウントに対してEntraIDライセンスを割り当てる必要はありません。ただし、各テナントにて機能を有効化するために、ライセンスを1つ割り当てる必要があります。

[色々あるB2B]
・B2B直接接続:組織内/外テナント向け。ゲストユーザーは作成されない。Teams Connect 共有チャネル専用。AVDでは利用不可。
・B2Bコラボレーション:組織内/外テナント向け。メール招待により、ゲストユーザーが作成される。AVDで利用可能。
・テナント間同期:組織内テナント向け。テナント間での一方/双方向同期。同期対象となるユーザー/グループを指定できる。ゲストユーザーの作成/更新/削除に対応。AVDで利用可能。
・マルチテナント組織:組織内テナント向け。複数のテナントを論理的にグループ化する。ゲストユーザーは同期されない。
[利用のための諸条件]
・Windows11 24H2(KB5065789)以降のセッションホスト
・セッションホストはEntra Join構成のみサポート
・SSOを構成する必要がある
・Windows版のWindows App、またはブラウザからの接続をサポート
・Intuneのデバイス構成ポリシーは、ユーザーに適用されないので、デバイスに適用ください
・クロスクラウドユーザー(Government/21Vianet)はサポート外
・外部IDは、50,000userまで招待無料
全体の流れ
Step1:外部IDの招待
Step2:RDPでのEntra認証を有効化
Step3:ダイアログの非表示設定
Step4:ホストプールのSSO設定
今回のテナント環境
AVDを構築するテナント:tenantA.onmicrosoft.com
外部のテナント:tenantB.onmicrosoft.com
Step1:外部IDの招待
今回は、最も簡単なB2Bコラボレーションで、外部ユーザーを招待してみます。
AVDを構築する側のテナントで行います。

招待元:CloudUser@tenantB.onmicrosoft.com
招待先:CloudUser_tenantB.onmicrosoft.com#EXT#@
tenantA.onmicrosoft.com
招待元:user10@tenantB.onmicrosoft.com
招待先:user10_tenantB.onmicrosoft.com#EXT#@
tenantA.onmicrosoft.com

※元テナントでは、CloudUser=クラウドID。user10=ハイブリッドID
[外部ID]というグループを作成し、外部IDユーザーを登録しておきます。

Step2:RDPでのEntra認証を有効化
セッションホストに接続するには、毎回Windows資格情報(ユーザー名とパスワード)を入力する必要があります。この設定を有効化する事で、Microsoft Entra IDのトークンを使ってWindowsにサインインできるようになり、資格情報の入力が不要になります。
※Cloud ShellでもOK
Install-Module -Name Microsoft.Graph
Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications
Connect-MgGraph -Scopes “Application.Read.All”,”Application-RemoteDesktopConfig.ReadWrite.All”
$WCLspId = (Get-MgServicePrincipal -Filter “AppId eq ‘270efc09-cd0d-444b-a71f-39af4910ec45′”).Id
If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId) -ne $true) {
Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled
}
Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId

Step3:ダイアログの非表示設定
初回接続時のみに表示される、接続許可を求めるポップアップを消す方法
※事前にセッションホストが自動登録される「動的デバイスグループ」を作成しておきます。
$tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup
$tdg.Id = “9a4b8a26-d9c2-4654-a0xx-xxxxxxxxxx“ ←動的グループのID
$tdg.DisplayName = “外部ID“ ←動的グループの表示名
New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -BodyParameter $tdg
Step4:ホストプールのSSO設定
初めに、Entra Join用のリソースグループに対し、外部ID用にRBAC設定を行います。
・仮想マシンのユーザーログイン:一般ユーザー権限
・仮想マシンの管理者ログイン:ローカル管理者権限

ホストプールの[RDPプロパティ]にて、SSOを有効化します。
※SSO設定が無いと認証に失敗し、接続できません。

後は、いつものアプリケーショングループに対して、ユーザー&グループを割り当てます。

それでは、確認してみましょう!
Windows Appを起動ー[サインイン]ー[サインインのオプション]ー[組織へのサインイン]

組織の検索:招待先のドメイン名を入力。例:tenantA.onmicrosoft.com

サインイン:招待元のアカウントを入力。例:CloudUser@tenantB.onmicrosoft.com
パスワードの入力:招待元で設定したパスワードを入力。

無事に外部IDでセッションホストに接続できました~~

