Citrix DaaS

Azure Active Directory参加済みカタログの作成

この記事では、Citrix DaaSを使用してAzure Active Directory(AD)参加済みカタログを作成する方法について説明します。

要件、制限、および考慮事項については、「Azure Active Directory参加済み」を参照してください。

マシンカタログを作成する前に、次のものが必要です:

  1. 新しいリソースの場所
    • Citrix Cloudの管理UIで左上のハンバーガーメニューから [リソースの場所] を選択します。
    • [+リソースの場所] をクリックします。
    • リソースの場所の新しい名前を入力し、[保存] をクリックします。
  2. ホスト接続を作成します。詳しくは、「接続の作成と管理」セクションを参照してください。Azureにマシンを展開する場合は、「Azure Resource Managerへの接続」を参照してください。
  3. 古いAzure ADデバイスを一貫して削除し、新しいデバイスがAzure ADに参加できるようにするために、Cloud Device Administratorの役割をプロビジョニングのサービスプリンシパルに割り当てることができます。Azureの古いADデバイスを削除しない場合、対応する非永続的な仮想マシンは、Azure ADポータルから手動で削除するまで初期化状態のままになります。これを行うには、Studioを使用してホスト接続のAzure AD参加済みデバイスの管理を有効にするか、次の手順を実行します:

    1. Azure Portalにサインインし、[Azure Active Directory]>[Roles and administrators] に移動します。
    2. 組み込みのCloud Device Administratorの役割を検索し、[Add assignments] をクリックして、ホスト接続で使用されるアプリケーションのサービスプリンシパルにこの役割を割り当てます。
    3. Citrix Remote PowerShell SDKを使用して次のコマンドを実行し、ホスト接続の既存のCustomPropertiesを取得します。${HostingConnectionName}はホスト接続の名前です。

      1. PowerShellウィンドウを開きます。
      2. asnp citrix*を実行し、Citrix固有のPowerShellモジュールをロードします。
      3. 次のコマンドを実行して、ホスト接続の既存のカスタムプロパティを取得します。

        (Get-Item -LiteralPath XDHyp:\Connections${HostingConnectionName}).CustomProperties
        <!--NeedCopy-->
        
      4. CustomPropertiesを接続からメモ帳にコピーし、プロパティ設定<Property xsi:type="StringProperty" Name="AzureAdDeviceManagement" Value="true" />を追加します。
      5. PowerShellウィンドウで、変更したカスタムプロパティに変数を割り当てます。例:$UpdatedCustomProperties=’<CustomProperties …</CustomProperties>’
      6. カスタムプロパティをホスト接続に設定し直します:

        Set-Item -LiteralPath XDHyp:\Connections${HostingConnectionName} -CustomProperties ${UpdatedCustomProperties} -ZoneUid ${ZoneUid}
        <!--NeedCopy-->
        
      7. コマンド(Get-Item -LiteralPath XDHyp:\Connections\${HostingConnectionName}).CustomPropertiesを実行して、更新されたカスタムプロパティ設定を確認します。

StudioまたはPowerShellを使用して、Azure AD参加済みカタログを作成できます。

Studioの使用

以下の情報は、「マシンカタログの作成」のガイダンスを補完する情報です。Azure AD参加済みカタログを作成するには、Azure AD参加済みカタログに固有の詳細に注意しながら、その記事の一般的なガイダンスに従ってください。

カタログ作成ウィザードで次の操作を行います:

  1. イメージ ページ:
    • 機能レベルとして2106以降を選択します。
    • [マシンプロファイルを使用する] を選択し、一覧から適切なマシンを選択します。
  2. [マシンID] ページで、[Azure Active Directory参加済み] を選択します。作成済みのマシンは、組織によって所有され、その組織に属するAzure ADアカウントでサインインします。作成済みのマシンはクラウドにのみ存在します。

    注:

    • [Azure Active Directory参加済み] のIDの種類を使用するには、カタログの最小機能レベルとして、バージョン2106以降が必要です。
    • マシンは、ホスト接続がバインドされているテナントに関連付けられたAzure ADドメインに参加済みです。
  3. ユーザーは、AAD資格情報を使用してマシンにログインするために、Azureでの明示的なアクセスが許可されている必要があります。詳しくは、「Azure Active Directory参加済み」セクションを参照してください。

PowerShellの使用

以下は、Studioでの操作に相当するPowerShellの手順です。

オンプレミスAD参加済みカタログとAzure AD参加済みカタログの違いは、IDプールとプロビジョニングスキームの作成にあります。

Azure AD参加済みカタログのIDプールを作成するには、以下の手順に従います:

New-AcctIdentityPool -AllowUnicode -IdentityType="AzureAD" -WorkgroupMachine -IdentityPoolName "AzureADJoinedCatalog" -NamingScheme "AzureAD-VM-##" -NamingSchemeType "Numeric" -Scope @() -ZoneUid "81291221-d2f2-49d2-ab12-bae5bbd0df05"
<!--NeedCopy-->

Azure AD参加済みカタログのプロビジョニングスキームを作成するには、New-ProvSchemeにMachineProfileパラメーターが必要です:

New-ProvScheme -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"UseManagedDisks`" Value=`"true`" /><Property xsi:type=`"StringProperty`" Name=`"StorageType`" Value=`"StandardSSD_LRS`" /><Property xsi:type=`"StringProperty`" Name=`"LicenseType`" Value=`"Windows_Server`" /></CustomProperties>" -HostingUnitName "AzureResource" -IdentityPoolName "AzureADJoinedCatalog" -InitialBatchSizeHint 1 -MachineProfile "XDHyp:\HostingUnits\AzureResource\image.folder\azuread-rg.resourcegroup\MasterVDA.vm" -MasterImageVM "XDHyp:\HostingUnits\AzureResource\image.folder\azuread-rg.resourcegroup\azuread-small_OsDisk_1_5fb42fadf7ff460bb301ee0d56ea30da.manageddisk" -NetworkMapping @{"0"="XDHyp:\HostingUnits\AzureResource\virtualprivatecloud.folder\East US.region\virtualprivatecloud.folder\azuread-rg.resourcegroup\azuread-vnet.virtualprivatecloud\Test_VNET.network"} -ProvisioningSchemeName "AzureADJoinedCatalog" -RunAsynchronously -Scope @() -SecurityGroup @() -ServiceOffering "XDHyp:\HostingUnits\AzureResource\serviceoffering.folder\Standard_DS1_v2.serviceoffering"
<!--NeedCopy-->

Azure AD参加済みカタログを作成するために使用される他のすべてのコマンドは、従来のオンプレミスAD参加済みカタログの場合と同じです。

Azure AD参加プロセスのステータスの表示

Studioでは、デリバリーグループ内のAzure AD参加マシンが電源オンの状態にあるときに、Azure AD参加プロセスのステータスが表示されます。ステータスを表示するには、[検索] を使用してそれらのマシンを識別し、下ペインの [詳細] タブで [マシンID] を1つずつチェックします。次の情報が [マシンID] に表示されることがあります:

  • Azure ADに参加済み
  • Azure AD未参加

注:

マシンがAzure AD参加済み状態にならない場合、それらのマシンはDelivery Controllerに登録されません。このような登録ステータスは [初期化] 状態として表示されます。

また、Studioで、マシンが使用できない理由を知ることができます。これを行うには、[検索] ノードでマシンをクリックし、下ペインの [詳細] タブで [登録] をオンにしてから、ツールチップを読んで追加情報を確認します。

デリバリーグループ

詳しくは、「デリバリーグループの作成」セクションを参照してください。

Rendezvousを有効にする

デリバリーグループの作成後、Rendezvousを有効化できます。詳しくは、「Rendezvous V2」を参照してください。

トラブルシューティング

マシンがAzure AD参加済みにならない場合は、次の手順を実行します:

  • システムに割り当てられた管理対象IDがマシンに対して有効になっているかどうかを確認します。MCSでプロビジョニングされたマシンでは、自動的にこれが有効になります(有効にする必要があります)。システムに割り当てられた管理対象IDがないと、Azure ADへの参加プロセスで失敗します。MCSでプロビジョニングされたマシンでシステムに割り当てられた管理対象IDが有効になっていない場合、考えられる原因は次のとおりです:

    • プロビジョニングスキームに関連付けられているIDプールのIdentityTypeが、AzureADに設定されていない。これを確認するには、Get-AcctIdentityPoolを実行します。
  • VDAバージョン2206以前のマスターイメージを使用するカタログの場合は、マシンのAADLoginForWindows拡張機能のプロビジョニングステータスを確認してください。AADLoginForWindows拡張機能が存在しない場合、考えられる原因は次のとおりです:

    • プロビジョニングスキームに関連付けられているIDプールのIdentityTypeが、AzureADに設定されていない。これを確認するには、Get-AcctIdentityPoolを実行します。

    • AADLoginForWindows拡張機能のインストールは、Azureポリシーによってブロックされます。

  • AADLoginForWindows拡張機能のプロビジョニングの失敗についてトラブルシューティングするには、MCSでプロビジョニングされたマシンのC:\WindowsAzure\Logs\Plugins\Microsoft.Azure.ActiveDirectory.AADLoginForWindowsにあるログを確認します。

    注:

    VDAバージョン2209以降のマスターイメージを使用する場合、MCSはAADLoginForWindows拡張機能に依存せずにVMをAzure ADに参加させます。この場合、AADLoginForWindows拡張機能は、MCSでプロビジョニングされたマシンにインストールされません。したがって、AADLoginForWindows拡張機能プロビジョニングログを収集できません。

  • MCSでプロビジョニングされたマシンでdsregcmd /statusコマンドを実行して、Azure ADの参加ステータスを確認し、ログをデバッグします。

  • [アプリケーションとサービスログ]>[Microsoft]>[Windows]>[ユーザーデバイス登録] にあるWindowsイベントログを確認します。
  • Get-Item -LiteralPath XDHyp:\Connections\${HostingConnectionName}を実行して、Azure ADデバイス管理が正しく構成されているかどうかを確認します。

    次の値を確認してください:

    • CustomProperties内のAzureAdDeviceManagementプロパティがtrue
    • メタデータのCitrix_MCS_AzureAdDeviceManagement_PermissionGrantedプロパティがtrue

    Citrix_MCS_AzureAdDeviceManagement_PermissionGrantedfalseの場合、ホスト接続で使用されるアプリケーションのServicePrincipalに、Azure ADデバイス管理を実行するための十分な権限が付与されていないことを示します。これを解決するには、ServicePrincipalCloud Device Administratorの役割を割り当てます。

Azure Active Directory動的セキュリティグループ

動的グループの規則では、マシンカタログの名前付けスキームに基づいて、カタログ内の仮想マシンを動的セキュリティグループに配置します。

マシンカタログの名前付けスキームがTest###(#は番号を意味します)の場合、Citrixが動的セキュリティグループに動的メンバーシップの規則「^Test[0-9]{3}$」を作成します。これで、Citrixによって作成された仮想マシンの名前がTest001からTest999までのいずれかである場合、その仮想マシンは動的セキュリティグループに含まれます。

注:

手動で作成した仮想マシンの名前がTest001からTest999のいずれかである場合、その仮想マシンも動的セキュリティグループに含まれます。これは、動的セキュリティグループの制限の1つです。

動的セキュリティグループ機能は、Azure Active Directory(Azure AD)によって仮想マシンを管理する場合に役立ちます。これは、条件付きアクセスポリシーを適用したり、Azure AD動的セキュリティグループで仮想マシンをフィルター処理してIntuneからアプリを配布したりする場合にも役立ちます。

PowerShellコマンドを使用して、次のことができます:

  • Azure AD動的セキュリティグループを使用してマシンカタログを作成する
  • Azure ADカタログのセキュリティグループ機能を有効にする
  • Azure AD参加済みデバイスのセキュリティグループを使用してマシンカタログを削除する

重要:

  • Azure AD動的セキュリティグループを使用してマシンカタログを作成し、マシンをカタログに追加し、マシンカタログを削除するには、Azure ADアクセストークンが必要です。Azure ADアクセストークンの取得については、https://docs.microsoft.com/en-us/graph/graph-explorer/graph-explorer-features#consent-to-permissions/を参照してください。
  • Azure ADでアクセストークンを要求するために、CitrixはMicrosoft Graph APIのGroup.ReadWrite.All権限を要求します。テナント全体の管理者の同意権限を持つAzure ADユーザーは、Microsoft Graph APIのGroup.ReadWrite.All権限を付与できます。Azure Active Directory(Azure AD)内のアプリケーションにテナント全体の管理者の同意を付与する方法については、Microsoftのドキュメント(https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent/)を参照してください。

Azure AD動的セキュリティグループを使用してマシンカタログを作成する

  1. Webベースのコンソールの、マシンカタログのセットアップ用ユーザーインターフェイスで、[マシンID] ページの [Azure Active Directory参加] を選択します。
  2. Azure ADにログインします。
  3. MS Graph APIへのアクセストークンを取得します。PowerShellコマンドを実行するときに、このアクセストークンを$AzureADAccessTokenパラメーターの値として使用します。
  4. 次のコマンドを実行して、動的セキュリティグループ名がテナントに存在するかどうかを確認します。

    Get-AcctAzureADSecurityGroup
    –AccessToken  $AzureADAccessToken
    –Name "SecurityGroupName"
    <!--NeedCopy-->
    
  5. テナントID、アクセストークン、および動的セキュリティグループを使用してマシンカタログを作成します。次のコマンドを実行し、IdentityType=AzureADを使用してIdentityPoolを作成し、Azureに動的セキュリティグループを作成します。

    New-AcctIdentityPool
    -AllowUnicode
    -IdentityPoolName "SecurityGroupCatalog"
    -NamingScheme "SG-VM-###"
    -NamingSchemeType "Numeric" -Scope @()
    -ZoneUid "81291221-d2f2-49d2-ab12-bae5bbd0df05"
    -WorkgroupMachine
    -IdentityType "AzureAD"
    -DeviceManagementType "None"
    -AzureADTenantId  620387bb-9167-4bdd-8435-e3dccc58369e
    -AzureADSecurityGroupName "SecurityGroupName"
    -AzureADAccessToken $AzureADAccessToken
    <!--NeedCopy-->
    

Azure ADカタログのセキュリティグループ機能を有効にする

動的セキュリティグループ機能を有効にせずに作成されたAzure ADカタログの動的セキュリティ機能を有効にすることができます。これを行うには、以下の手順を実行します:

  1. 新しい動的セキュリティグループを手動で作成します。既存の動的セキュリティグループを再利用することもできます。
  2. Azure ADにログインし、MS Graph APIへのアクセストークンを取得します。PowerShellコマンドを実行するときに、このアクセストークンを$AzureADAccessTokenパラメーターの値として使用します。

    注:

    Azure ADユーザーに必要な権限については、https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/grant-admin-consent#prerequisites/を参照してください。

  3. 次のコマンドを実行し、IdentityPoolを作成済みのAzure AD動的セキュリティグループに接続します。

    Set-AcctIdentityPool
    -IdentityPoolName "SecurityGroupCatalog"
    -AzureADTenantId 620387bb-9167-4bdd-8435-e3dccc58369e
    -AzureADSecurityGroupNam "ExistingSecurityGroupName"
    -AzureADAccessToken $AzureADAccessToken
    <!--NeedCopy-->
    

名前付けスキームを更新すると、Citrixはその名前付けスキームで新しいメンバーシップ規則を更新します。カタログを削除すると、セキュリティグループではなく、メンバーシップ規則が削除されます。

Azure AD参加済みデバイスのセキュリティグループを使用してマシンカタログを削除する

マシンカタログを削除すると、Azure AD参加済みデバイスのセキュリティグループも削除されます。

Azure AD動的セキュリティグループを削除するには、次の手順を実行します:

  1. Azure ADにログインします。
  2. MS Graph APIへのアクセストークンを取得します。PowerShellコマンドを実行するときに、このアクセストークンを$AzureADAccessTokenパラメーターの値として使用します。
  3. 次のコマンドを実行します:

    Remove-AcctIdentityPool
    -IdentityPoolName "SecurityGroupCatalog"
    -AzureADAccessToken $AzureADAccessToken
    <!--NeedCopy-->
    

既存のAzure AD割り当て済みセキュリティグループの下にAzure AD動的セキュリティグループを作成する

既存のAzure AD割り当て済みセキュリティグループの下にAzure AD動的セキュリティグループを作成できます。以下の操作を実行できます:

  • セキュリティグループ情報を取得します。
  • オンプレミスのADサーバーから同期されたすべての既存のAzure AD割り当て済みセキュリティグループ、またはAzure ADの役割を割り当てることができる割り当て済みセキュリティグループを取得します。
  • すべてのAzure AD動的セキュリティグループを取得します。
  • Azure AD動的セキュリティグループをAzure AD割り当て済みグループのメンバーとして追加します。
  • Azure AD動的セキュリティグループがマシンカタログとともに削除されるときに、Azure AD動的セキュリティグループとAzure AD割り当て済みセキュリティグループの間のメンバーシップを削除します。

操作のいずれかが失敗した場合にも、明示的なエラーメッセージが表示される可能性があります。

要件:

PowerShellコマンドを実行するときは、MS Graph APIへのアクセストークンが必要です。

アクセストークンを取得するには、以下の手順に従います:

  1. Microsoft Graphエクスプローラーを開き、Azure ADにログインします。
  2. Group.ReadWrite.AllおよびGroupMember.ReadWrite.All権限に対する同意があることを確認してください。
  3. Microsoft Graphエクスプローラーからアクセストークンを取得します。PowerShellコマンドを実行するときに、このアクセストークンを使用します。

グループIDでセキュリティグループ情報を取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. Azure PortalからグループオブジェクトIDを検索します。
  3. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token> -GroupId <GroupUid>
    <!--NeedCopy-->
    

グループの表示名でセキュリティグループを取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token>
    -Name <TargetGroupDisplayName>
    <!--NeedCopy-->
    

表示名に部分文字列が含まれるセキュリティグループを取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token>
    -SearchString <displayNameSubString>
    <!--NeedCopy-->
    

オンプレミスのADサーバーから同期されたすべての既存のAzure AD割り当て済みセキュリティグループ、またはAzure ADの役割を割り当てることができる割り当て済みセキュリティグループを取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token>
    -Assigned true
    <!--NeedCopy-->
    

すべてのAzure AD動的セキュリティグループを取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token>
    -Dynamic true
    <!--NeedCopy-->
    

Azure AD割り当て済みセキュリティグループを最大レコード数とともに取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroup
    -AccessToken <token>
    -Assigned true
    -MaxRecordCount 10
    <!--NeedCopy-->
    

Azure AD動的セキュリティグループをAzure AD割り当て済みグループのメンバーとして追加するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Add-AcctAzureADSecurityGroupMember
    -AccessToken <token>
    -GroupId <ASG-Id>
    -RefGroupId <DSG-Id>
    <!--NeedCopy-->
    

Azure AD割り当て済みセキュリティグループメンバーを取得するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Get-AcctAzureADSecurityGroupMember
    -AccessToken <token>
    -GroupId <ASG-Id>
    <!--NeedCopy-->
    

    注:

    Get-AcctAzureADSecurityGroupMemberは、Azure AD割り当て済みセキュリティグループの下の、種類がセキュリティグループの直接のメンバーのみを指定します。

Azure AD動的セキュリティグループがマシンカタログとともに削除されるときに、Azure AD動的セキュリティグループとAzure AD割り当て済みセキュリティグループの間のメンバーシップを削除するには、以下の手順に従います:

  1. アクセストークンを取得します。
  2. PowerShellコンソールで次のPowerShellコマンドを実行します:

    Remove-AcctIdentityPool
    -IdentityPoolName "SecurityGroupCatalog"
    -AzureADAccessToken $AzureADAccessToken
    <!--NeedCopy-->
    

Azure AD動的セキュリティグループ名の変更

マシンカタログに関連付けられているAzure AD動的セキュリティグループ名を変更できます。この変更により、Azure AD IDプールオブジェクトに格納されているセキュリティグループ情報が、Azureポータルに格納されている情報と一致するようになります。

注:

Azure AD動的セキュリティグループには、オンプレミスADから同期されたセキュリティグループや、Office 365グループなどの他のグループの種類は含まれません。

StudioとPowerShellコマンドを使用して、Azure AD動的セキュリティグループ名を変更できます。

PowerShellを使用してAzure AD動的セキュリティグループ名を変更するには、以下の手順に従います:

  1. PowerShellウィンドウを開きます。
  2. asnp citrix*を実行し、Citrix固有のPowerShellモジュールをロードします。
  3. コマンドSet-AcctIdentityPool -AzureAdSeurityGroupName [DSG-Name]を実行します。

Azure AD動的セキュリティグループ名を変更できない場合は、適切なエラーメッセージが表示されます。