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 つのタスクを実行する必要があります。

  1. リモート デスクトップ プロトコル (RDP) の Microsoft Entra 認証を有効にします。

  2. ターゲット デバイス グループを構成します。

  3. Active Directory Domain Services が環境の一部である場合は、"Kerberos Server オブジェクト" を作成します。 条件の詳細については、そのセクションに含まれています。

  4. あなたの条件付きアクセス ポリシーを見直します。

  5. シングル サインオンを有効にするようにホスト プールを構成します。

シングル サインオンを有効にする前に

シングル サインオンを有効にする前に、お使いの環境でシングル サインオンを使用するための次の情報を確認してください。

セッションがロックされている場合の切断

シングル サインオンが有効になっている場合は、Windows へのパスワードレス認証がサポートされている、Microsoft Entra ID 認証トークンを使って Windows にサインインします。 リモート セッションの Windows ロック画面では、Microsoft Entra ID 認証トークンや FIDO キーなどのパスワードレス認証方法はサポートされていません。 これらの認証方法がサポートされていないということは、ユーザーがリモート セッションで画面のロックを解除できないことを意味します。 ユーザー アクションまたはシステム ポリシーを使用してリモート セッションをロックしようとすると、セッションは切断され、サービスからユーザーに対して、切断されたことを説明するメッセージが送信されます。

セッションを切断すると、一定期間操作がない後に接続が再開されたときに、適用される条件付きアクセス ポリシーが Microsoft Entra ID によって確実に再評価されるようにすることができます。

シングル サインオンでの Active Directory ドメイン管理者アカウントの使用

Active Directory Domain Services (AD DS) とハイブリッド ユーザー アカウントを持つ環境では、読み取り専用ドメイン コントローラーの既定の "パスワード レプリケーション ポリシー" によって、"ドメイン管理者" および "管理者" セキュリティ グループのメンバーのパスワード レプリケーションが拒否されます。 このポリシーにより、これらの管理者アカウントによる Microsoft Entra ハイブリッド参加済みホストへのサインインが妨げられ、資格情報の入力が引き続き求められる場合があります。 また、管理者アカウントが、Microsoft Entra 参加済みホストからの Kerberos 認証を使用するオンプレミス リソースにアクセスすることも妨げられます。

シングル サインオンが有効な場合にこれらの管理者アカウントの接続を許可するには、「Active Directory ドメイン管理者アカウントの接続を許可する」を参照してください。

前提条件

シングル サインオンを有効にするには、次の前提条件を満たしている必要があります。

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 オブジェクトを作成し、プロパティ isRemoteDesktopProtocolEnabledtrue に設定します。 Graph Explorer などのツールを使用して、Microsoft Graph API を使用することもできます。

  1. PowerShell ターミナルの種類を指定して、Azure portal で Azure Cloud Shell を起動するか、ローカル デバイスで Azure CLI を実行します。

    1. Cloud Shell を使用している場合は、使用するサブスクリプションに Azure コンテキストが設定されていることを確認します。

    2. Azure PowerShell をローカルで使用している場合は、まず Azure PowerShell でサインインしてから、使用するサブスクリプションに Azure コンテキストが設定されていることを確認します。

  1. 前提条件から Microsoft Graph PowerShell SDK がインストールされていることを確認してから、次のコマンドを実行して、"認証" および "アプリケーション" の Microsoft Graph モジュールをインポートし、Application.Read.AllApplication-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"
    
  2. 次のコマンドを実行して、各サービス プリンシパルのオブジェクト 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
    
  3. 次のコマンドを実行して、プロパティ isRemoteDesktopProtocolEnabledtrue に設定します。 これらのコマンドからの出力はありません。

    If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId) -ne $true) {
        Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId -IsRemoteDesktopProtocolEnabled
    }
    
    If ((Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId) -ne $true) {
        Update-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId -IsRemoteDesktopProtocolEnabled
    }
    
  4. 次のコマンドを実行して、プロパティ isRemoteDesktopProtocolEnabledtrue に設定されていることを確認します。

    Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $MSRDspId
    Get-MgServicePrincipalRemoteDesktopSecurityConfiguration -ServicePrincipalId $WCLspId
    

    出力は次のようになります。

    Id IsRemoteDesktopProtocolEnabled
    -- ------------------------------
    id True
    

ターゲット デバイス グループを構成する

RDP に対して Microsoft Entra 認証を有効にしたら、ターゲット デバイス グループを構成する必要があります。 既定では、シングル サインオンを有効にすると、ユーザーは、新しいセッション ホストへの接続を開始したときに、Microsoft Entra ID に対して認証を行い、リモート デスクトップ接続を許可することが求められます。 Microsoft Entra では、このプロンプトが再び表示されるまでの 30 日間にわたって、最大 15 個のホストが記憶されます。 リモート デスクトップ接続を許可するダイアログが表示された場合は、[はい] を選択して接続します。

このダイアログを非表示にし、すべてのセッション ホストへの接続にシングル サインオンを提供するには、信頼できるデバイスのリストを構成します。 セッション ホストを含む 1 つ以上のグループを Microsoft Entra ID に作成してから、そのグループに対して、前のセクションで使用したのと同じ "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 を使用することもできます。

  1. Microsoft Entra ID に、ダイアログを非表示にするセッション ホストを含む動的グループを作成します。 次の手順のために、そのグループのオブジェクト ID をメモしておきます。

  2. 同じ PowerShell セッションで、次のコマンドを実行して targetDeviceGroup オブジェクトを作成し、<placeholders> を独自の値に置き換えます。

    $tdg = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphTargetDeviceGroup
    $tdg.Id = "<Group object ID>"
    $tdg.DisplayName = "<Group display name>"
    
  3. 次のコマンドを実行して、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 を繰り返します。

  4. 後で targetDeviceGroup オブジェクトからデバイス グループの削除が必要になった場合は、<placeholders> を独自の値に置き換えて、次のコマンドを実行します。

    Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $MSRDspId -TargetDeviceGroupId "<Group object ID>"
    Remove-MgServicePrincipalRemoteDesktopSecurityConfigurationTargetDeviceGroup -ServicePrincipalId $WCLspId -TargetDeviceGroupId "<Group object ID>"
    

Kerberos サーバー オブジェクトを作成する

セッション ホストが次の条件を満たしている場合は、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 に設定します。

Active Directory ドメイン管理者アカウントに接続を許可する

シングル サインオンが有効になっているときに Active Directory ドメイン管理者アカウントに接続を許可するには、次の手順を実行します。

  1. Active Directory ドメインの管理に使用するデバイスで、Domain Admins セキュリティ グループのメンバーであるアカウントを使用して、[Active Directory ユーザーとコンピューター] コンソールを開きます。

  2. 実際のドメインのドメイン コントローラー組織単位を開きます。

  3. [AzureADKerberos] オブジェクトを見つけて右クリックし、[プロパティ] を選びます。

  4. [パスワード レプリケーション ポリシー] タブを選択します。

  5. [ドメイン管理者] のポリシーを "拒否" から "許可" に変更します。

  6. [管理者] のポリシーを削除します。 ドメイン管理者グループは管理者グループのメンバーであるため、管理者のレプリケーションを拒否すると、ドメイン管理者でも拒否されます。

  7. [OK] を選択して変更を保存します。

次のステップ