Microsoft Entra ID を使用して Azure Virtual Desktop に対するシングル サインオンを構成する
Microsoft Entra ID を使用した Azure Virtual Desktop のシングル サインオン (SSO) は、セッション ホストに接続するユーザーにシームレスなサインイン エクスペリエンスを提供します。 シングル サインオンを有効にすると、ユーザーは Microsoft Entra ID トークンを使用して Windows に対して認証を行います。 このトークンを使用すると、セッション ホストへの接続時に、パスワードレス認証と、Microsoft Entra ID とフェデレーションするサード パーティの ID プロバイダーを使用でき、サインイン エクスペリエンスがシームレスになります。
Microsoft Entra ID を使用したシングル サインオンでは、セッション内の Microsoft Entra ID ベースのリソースに対してもシームレスなエクスペリエンスが提供されます。 セッション内でのパスワードレス認証の使用方法について詳しくは、「セッション内パスワードレス認証」を参照してください。
Microsoft Entra ID 認証を使用してシングル サインオンを有効にするには、次の 5 つのタスクを実行する必要があります。
リモート デスクトップ プロトコル (RDP) の Microsoft Entra 認証を有効にします。
同意プロンプト ダイアログを非表示にします。
Active Directory Domain Services が環境の一部である場合は、"Kerberos Server オブジェクト" を作成します。 条件の詳細については、そのセクションに含まれています。
あなたの条件付きアクセス ポリシーを見直します。
シングル サインオンを有効にするようにホスト プールを構成します。
シングル サインオンを有効にする前に
シングル サインオンを有効にする前に、お使いの環境でシングル サインオンを使用するための次の情報を確認してください。
セッションのロック動作
Microsoft Entra ID を使用したシングル サインオンが有効になっていて、ユーザーまたはポリシーによってリモート セッションがロックされている場合、セッションを切断するか、リモート ロック画面を表示するかを選択できます。 既定の動作では、ロックされるとセッションは切断されます。
セッション ロックの動作が切断に設定されている場合は、切断されたことをユーザーに知らせるダイアログが表示されます。 ユーザーは、再度接続する準備ができたときに、ダイアログから [再接続] オプションを選択できます。 この動作は、セキュリティ上の理由と、パスワードレス認証の完全なサポートを確実に提供するために行われます。 セッションを切断すると、次の利点が得られます。
必要に応じて、Microsoft Entra ID を使用した一貫したサインイン エクスペリエンスが提供されます。
条件付きアクセス ポリシーで許可されている場合、認証プロンプトなしのシングル サインオン エクスペリエンスと再接続が可能になります。
リモート ロック画面とは異なり、パスキーや FIDO2 デバイスなどのパスワードレス認証がサポートされます。
多要素認証やサインイン頻度などの条件付きアクセス ポリシーは、ユーザーがセッションに再接続したときに再評価されます。
セッションに戻る際に多要素認証を要求し、ユーザーが単純なユーザー名とパスワードでロックを解除できないようにすることができます。
セッションを切断するのではなく、リモート ロック画面を表示するようにセッション ロック動作を構成する場合は、セッション ロック動作の構成に関する記事を参照してください。
シングル サインオンを使用する Active Directory ドメイン管理者アカウント
Active Directory Domain Services (AD DS) とハイブリッド ユーザー アカウントを持つ環境では、読み取り専用ドメイン コントローラーの既定の "パスワード レプリケーション ポリシー" によって、"ドメイン管理者" および "管理者" セキュリティ グループのメンバーのパスワード レプリケーションが拒否されます。 このポリシーにより、これらの管理者アカウントによる Microsoft Entra ハイブリッド参加済みホストへのサインインが妨げられ、資格情報の入力が引き続き求められる場合があります。 また、管理者アカウントが、Microsoft Entra 参加済みホストからの Kerberos 認証を使用するオンプレミス リソースにアクセスすることも妨げられます。 セキュリティ上の理由から、ドメイン管理者であるアカウントを使用してリモート セッションに接続することはお勧めしません。
管理者としてセッション ホストに変更を加える必要がある場合は、管理者以外のアカウントを使用してセッション ホストにサインインした後、コマンド プロンプトから [管理者として実行] オプションまたは runas ツールを使用して管理者に切り替えます。
前提条件
シングル サインオンを有効にするには、次の前提条件を満たしている必要があります。
Microsoft Entra テナントを構成するには、次の いずれかの Microsoft Entra 組み込みロール、または同等のロールが割り当てられている必要があります。
セッション ホストで、関連する累積的な更新プログラムがインストールされた次のいずれかのオペレーティング システムが実行されている必要があります。
2022-10 の Windows 11 用の累積的な更新プログラム (KB5018418) 以降がインストールされている Windows 11 Enterprise の単一または複数セッション。
2022-10 の Windows 10 用の累積的な更新プログラム (KB5018410) 以降がインストールされている Windows 10 Enterprise の単一または複数セッション。
2022-10 の Microsoft サーバー オペレーティング システム用の累積的な更新プログラム (KB5018421) 以降がインストールされている Windows Server 2022。
セッション ホストは、Microsoft Entra 参加済みまたは Microsoft Entra ハイブリッド参加済みである必要があります。 Microsoft Entra Domain Services または Active Directory Domain Services にのみ参加しているセッション ホストは、サポートされていません。
Microsoft Entra ハイブリッド参加済みセッション ホストがご自分のユーザー アカウントとは異なる Active Directory ドメインにある場合は、2 つのドメイン間に双方向の信頼が必要です。 双方向の信頼がないと、接続は以前の認証プロトコルにフォールバックします。
お使いのローカル デバイスまたは Azure Cloud Shell に Microsoft Graph PowerShell SDK バージョン 2.9.0 以降をインストールします。
リモート セッションに接続するためにサポートされているリモート デスクトップ クライアント。 次のクライアントがサポートされています。
Windows 10 以降を実行しているローカル PC 上の Windows デスクトップ クライアント。 ローカル PC を Microsoft Entra ID または Active Directory ドメインに参加させる必要はありません。
macOS クライアント、バージョン 10.8.2 以降。
iOS クライアント、バージョン 10.5.1 以降。
Android クライアント、バージョン 10.0.16 以降。
RDP の Microsoft Entra 認証を有効にします
まず、Microsoft Entra テナントで Windows の Microsoft Entra 認証を許可する必要があります。これにより、ユーザーが Azure Virtual Desktop セッション ホストにサインインできるようにする RDP アクセス トークンの発行が可能になります。 次の Microsoft Entra アプリケーションのサービス プリンシパルの remoteDesktopSecurityConfiguration
オブジェクトで、isRemoteDesktopProtocolEnabled
プロパティを true に設定します。
アプリケーション名 | アプリケーション ID |
---|---|
Microsoft リモート デスクトップ | a4a365df-50f1-4397-bc59-1a1564b8bb9c |
Windows クラウド ログイン | 270efc09-cd0d-444b-a71f-39af4910ec45 |
重要
今後の変更の一環として、2024 年から Microsoft リモート デスクトップから Windows クラウド ログインに移行します。 両方のアプリケーションを構成することで、変更への準備が整ったことを確認できます。
サービス プリンシパルを構成するには、Microsoft Graph PowerShell SDK を使用して、サービス プリンシパルに新しい remoteDesktopSecurityConfiguration オブジェクトを作成し、プロパティ isRemoteDesktopProtocolEnabled
を true
に設定します。 Graph Explorer などのツールを使用して、Microsoft Graph API を使用することもできます。
Azure portal で PowerShell ターミナル タイプを指定して Azure Cloud Shell を開くか、ローカル デバイスで PowerShell を実行します。
Cloud Shell を使用している場合は、Azure コンテキストが、使用したいサブスクリプションに設定されていることを確認します。
PowerShell をローカルで使用している場合は、まず Azure PowerShell でサインインした後、Azure コンテキストが使用したいサブスクリプションに設定されていることを確認します。
前提条件から Microsoft Graph PowerShell SDK がインストールされていることを確認してから、次のコマンドを実行して、"認証" および "アプリケーション" の Microsoft Graph モジュールをインポートし、
Application.Read.All
とApplication-RemoteDesktopConfig.ReadWrite.All
のスコープを使用して Microsoft Graph に接続します。Import-Module Microsoft.Graph.Authentication Import-Module Microsoft.Graph.Applications Connect-MgGraph -Scopes "Application.Read.All","Application-RemoteDesktopConfig.ReadWrite.All"
次のコマンドを実行して、各サービス プリンシパルのオブジェクト ID を取得し、変数に格納します。
$MSRDspId = (Get-MgServicePrincipal -Filter "AppId eq 'a4a365df-50f1-4397-bc59-1a1564b8bb9c'").Id $WCLspId = (Get-MgServicePrincipal -Filter "AppId eq '270efc09-cd0d-444b-a71f-39af4910ec45'").Id
次のコマンドを実行して、プロパティ
isRemoteDesktopProtocolEnabled
をtrue
に設定します。 これらのコマンドからの出力はありません。If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId) -ne $true) { Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId -IsRemoteDesktopProtocolEnabled } If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId) -ne $true) { Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled }
次のコマンドを実行して、プロパティ
isRemoteDesktopProtocolEnabled
がtrue
に設定されていることを確認します。Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId
出力は次のようになります。
Id IsRemoteDesktopProtocolEnabled -- ------------------------------ id True
同意プロンプト ダイアログを非表示にする
既定では、シングル サインオンが有効になっている場合、新しいセッション ホストに接続するときに、リモート デスクトップ接続を許可するためのダイアログが表示されます。 Microsoft Entra では、このプロンプトが再び表示されるまでの 30 日間にわたって、最大 15 個のホストが記憶されます。 リモート デスクトップ接続を許可するためのこのダイアログが表示された場合は、[はい] を選択して接続できます。
信頼されたデバイスの一覧を構成することで、このダイアログを非表示にすることができます。 デバイスの一覧を構成するには、セッション ホストを含む 1 つ以上のグループを Microsoft Entra ID に作成し、そのグループ ID を SSO サービス プリンシパルの "Microsoft リモート デスクトップ" および "Windows クラウド ログイン" のプロパティに追加します。
ヒント
動的グループを使用し、すべての Azure Virtual Desktop セッション ホストが含まれるように動的メンバーシップ ルールを構成することをお勧めします。 このグループではデバイス名を使用できますが、より安全なオプションとして、Microsoft Graph API を使用してデバイス拡張機能属性を設定して使用できます。 動的グループは通常、5 - 10 分以内に更新されますが、大規模なテナントには最大 24 時間かかることがあります。
動的グループには、Microsoft Entra ID P1 ライセンスまたは Intune for Education ライセンスが必要です。 詳細については、グループの動的メンバーシップ ルールに関する記事を参照してください。
サービス プリンシパルを構成するには、Microsoft Graph PowerShell SDK を使用して、動的グループのオブジェクト ID と表示名を持つ新しい targetDeviceGroup オブジェクト をサービス プリンシパルに作成します。 Graph Explorer などのツールを使用して、Microsoft Graph API を使用することもできます。
Microsoft Entra ID に、ダイアログを非表示にするセッション ホストを含む動的グループを作成します。 次の手順のために、そのグループのオブジェクト ID をメモしておきます。
同じ PowerShell セッションで、次のコマンドを実行して
targetDeviceGroup
オブジェクトを作成し、<placeholders>
を独自の値に置き換えます。$tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup $tdg.Id = "<Group object ID>" $tdg.DisplayName = "<Group display name>"
次のコマンドを実行して、
targetDeviceGroup
オブジェクトにグループを追加します。New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $MSRDspId -BodyParameter $tdg New-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -BodyParameter $tdg
出力は次の例のようになります。
Id DisplayName -- ----------- 12345678-abcd-1234-abcd-1234567890ab Contoso-session-hosts
targetDeviceGroup
オブジェクトに追加するグループごとに (最大 10 グループ)、手順 2 と 3 を繰り返します。後で
targetDeviceGroup
オブジェクトからデバイス グループの削除が必要になった場合は、<placeholders>
を独自の値に置き換えて、次のコマンドを実行します。Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $MSRDspId -TargetDeviceGroupId "<Group object ID>" Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -TargetDeviceGroupId "<Group object ID>"
Kerberos サーバー オブジェクトを作成する
セッション ホストが以下の条件を満たしている場合は、Kerberos サーバー オブジェクトを作成する必要があります。 詳細については、「Microsoft Entra ID を使用したオンプレミス リソースへのパスワードレス セキュリティ キー サインインの有効化」、特に Kerberos サーバー オブジェクトを作成するためのセクションを参照してください。
セッション ホストが、Microsoft Entra ハイブリッド参加済みです。 ドメイン コントローラーへの認証を完了するには、Kerberos サーバー オブジェクトが必要です。
セッション ホストが Microsoft Entra 参加済みで、環境に Active Directory ドメイン コントローラーが含まれています。 オンプレミスのリソース (SMB 共有など) へアクセスするユーザーや Web サイトへの Windows 統合認証のためには、Kerberos サーバー オブジェクトが必要です。
重要
Kerberos サーバー オブジェクトを作成せずに、Microsoft Entra ハイブリッド参加済みセッション ホストでシングル サインオンを有効にすると、リモート セッションへ接続しようとした際に、以下のいずれかが発生する可能性があります。
- 特定のセッションが存在しないことを示すエラー メッセージが表示されます。
- シングル サインオンはスキップされ、セッション ホストの標準認証ダイアログが表示されます。
これらの問題を解決するには、Kerberos サーバー オブジェクトを作成してから、もう一度接続します。
条件付きアクセス ポリシーを確認する
シングル サインオンが有効になっている場合、セッション ホストに対してユーザーを認証するための新しい Microsoft Entra ID アプリが導入されます。 Azure Virtual Desktop にアクセスするときに適用される条件付きアクセス ポリシーがある場合は、多要素認証の設定に関するレコメンデーションを確認して、ユーザーが望ましいエクスペリエンスを得られるようにします。
シングル サインオンを有効にするようにホスト プールを構成する
ホスト プールでシングル サインオンを有効にするには、次の RDP プロパティを構成する必要があります。これは、Azure portal または PowerShell を使用して行うことができます。 RDP プロパティを構成する手順については、「ホスト プールのリモート デスクトップ プロトコル (RDP) プロパティをカスタマイズする」を参照してください。
Azure portal で、[Microsoft Entra single sign-on] (Microsoft Entra シングル サインオン) を [Connections will use Microsoft Entra authentication to provide single sign-on] (接続は Microsoft Entra 認証を使用してシングル サインオンを提供する) に設定します。
PowerShell の場合は、enablerdsaadauth プロパティを 1 に設定します。
次のステップ
パスワードレス認証を有効にする方法については、「セッション内のパスワードレス認証」を参照してください。
Azure Virtual Desktop のセッション ロック動作を構成する方法について学習します。.
Microsoft Entra Kerberos について詳しくは、Microsoft Entra Kerberos の詳細なしくみに関する記事をご覧ください。
問題が発生する場合は、「Microsoft Entra 参加済み VM への接続のトラブルシューティング」をご覧ください。