Citrix Virtual Apps and Desktops

Microsoft Azureへの接続

接続とリソースの作成および管理では、接続を作成するウィザードについて説明しています。以下の情報は、Azure Resource Managerクラウド環境に固有の詳細を扱っています。

注:

Microsoft Azureへの接続を作成する前に、Azureアカウントをリソースの場所として設定を完了する必要があります。「Microsoft Azure Resource Managerクラウド環境」を参照してください。

サービスプリンシパルと接続の作成

接続を作成する前に、接続がAzureリソースにアクセスするために使用するサービスプリンシパルを設定する必要があります。接続は次の2つの方法で作成できます。

  • Web Studioを使用してサービスプリンシパルと接続を同時に作成する
  • 以前に作成したサービスプリンシパルを使用して接続を作成する

このセクションでは、以下のタスクを完了する方法について説明します。

考慮事項

  • Citrix®では、共同作成者ロールを持つサービスプリンシパルの使用を推奨しています。ただし、最小限の権限のリストについては、「最小限の権限」セクションを参照してください。
  • 最初の接続を作成するとき、Azureは必要な権限を付与するように求めます。将来の接続では引き続き認証が必要ですが、Azureは以前の同意を記憶しており、プロンプトを再度表示しません。
  • 認証に使用されるアカウントは、Azure RBACを使用してサブスクリプションでロールを割り当てる権限を持っている必要があります。例として、サブスクリプションの所有者、ロールベースのアクセス制御管理者、またはユーザーアクセス管理者などです。
  • 認証に使用されるアカウントは、サブスクリプションのディレクトリのメンバーである必要があります。「職場または学校」アカウントと「個人用Microsoftアカウント」の2種類のアカウントに注意してください。詳細については、「CTX219211」を参照してください。
  • 既存のMicrosoftアカウントをサブスクリプションのディレクトリのメンバーとして追加して使用できますが、ユーザーが以前にディレクトリのリソースのいずれかにゲストアクセスを付与されていた場合、問題が発生する可能性があります。この場合、ディレクトリにプレースホルダーエントリが存在し、必要な権限が付与されず、エラーが返されることがあります。

    これを修正するには、ディレクトリからリソースを削除し、明示的に再度追加します。ただし、このオプションは、アカウントがアクセスできる他のリソースに意図しない影響を与える可能性があるため、慎重に実行してください。

  • 特定のアカウントが実際にはメンバーであるにもかかわらず、ディレクトリゲストとして検出される既知の問題があります。このような構成は、通常、古い確立されたディレクトリアカウントで発生します。回避策:適切なメンバーシップ値を持つアカウントをディレクトリに追加します。
  • リソースグループは単にリソースのコンテナであり、自身のリージョン以外のリージョンからのリソースを含むことができます。リソースグループのリージョンに表示されるリソースが利用可能であると期待する場合、これは混乱を招く可能性があります。
  • 必要な数のマシンをホストするのに十分な大きさのネットワークとサブネットがあることを確認してください。これにはある程度の先見性が必要ですが、Microsoftはアドレス空間容量に関するガイダンスを提供し、適切な値を指定するのに役立ちます。

Web Studioを使用したサービスプリンシパルと接続の作成

重要:

この機能は、Azure Chinaサブスクリプションではまだ利用できません。

Web Studioを使用すると、単一のワークフローでサービスプリンシパルと接続の両方を作成できます。サービスプリンシパルは、接続にAzureリソースへのアクセスを許可します。サービスプリンシパルを作成するためにAzureに認証すると、アプリケーションがAzureに登録されます。登録されたアプリケーションには、シークレットキー(クライアントシークレットまたはアプリケーションシークレットと呼ばれます)が作成されます。登録されたアプリケーション(この場合は接続)は、クライアントシークレットを使用してMicrosoft Entra IDに認証します。

開始する前に、以下の前提条件を満たしていることを確認してください。

  • サブスクリプションのMicrosoft Entraテナントにユーザーアカウントがあること。
  • 認証に使用されるアカウントは、Azure RBACを使用してサブスクリプションでロールを割り当てる権限を持っている必要があります。例として、サブスクリプションの所有者、ロールベースのアクセス制御管理者、またはユーザーアクセス管理者などです。
  • 認証のためにグローバル管理者、アプリケーション管理者、またはアプリケーション開発者の権限を持っていること。これらの権限は、ホスト接続の作成後に取り消すことができます。ロールの詳細については、「Microsoft Entra組み込みロール」を参照してください。

接続とリソースの追加ウィザードを使用して、サービスプリンシパルと接続を同時に作成します。

  1. 接続ページで、新しい接続の作成Microsoft Azure接続の種類、およびAzure環境を選択します。
  2. 仮想マシンを作成するために使用するツールを選択し、次へを選択します。
  3. 接続の詳細ページで、AzureサブスクリプションIDと接続の名前を入力します。サブスクリプションIDを入力すると、新規作成ボタンが有効になります。

    注:

    接続名には1~64文字を含めることができ、空白のみ、または文字\/;:#.*?=<>|[]{}"'()'を含めることはできません。

  4. 新規作成を選択し、Microsoft Entraアカウントのユーザー名とパスワードを入力します。
  5. サインインを選択します。
  6. 同意するを選択して、Citrix Virtual Apps and Desktops™にリストされている権限を付与します。Citrix Virtual Apps and Desktopsは、指定されたユーザーに代わってAzureリソースを管理できるサービスプリンシパルを作成します。
  7. 同意するを選択すると、ウィザードの接続ページに戻ります。

    注:

    Azureへの認証に成功し、必要な権限の付与に同意するまで、新規作成ボタンと既存を使用ボタンは表示されなくなります。接続成功というテキストが緑色のチェックマークとともに表示され、Azureサブスクリプションへの接続が成功したことを示します。

  8. 接続の詳細ページで、次へを選択します。

    注:

    Azureへの認証に成功し、必要な権限の付与に同意するまで、次のページに進むことはできません。

  9. 接続のリソースを構成します。リソースはリージョンとネットワークで構成されます。

    • リージョンページで、リージョンを選択します。
    • ネットワークページで、次の操作を行います。
      • リージョンとネットワークの組み合わせを識別するのに役立つ1~64文字のリソース名を入力します。リソース名には空白のみ、または文字\/;:#.*?=<>|[]{}"'()'を含めることはできません。
      • 仮想ネットワーク/リソースグループのペアを選択します。(同じ名前の仮想ネットワークが複数ある場合、ネットワーク名とリソースグループをペアにすることで一意の組み合わせが提供されます。)前のページで選択したリージョンに仮想ネットワークがない場合は、そのページに戻り、仮想ネットワークがあるリージョンを選択します。
  10. 概要ページで、設定の概要を確認し、完了を選択してセットアップを完了します。

アプリケーションIDの表示

接続を作成した後、接続がAzureリソースにアクセスするために使用するアプリケーションIDを表示できます。

接続とリソースの追加リストで、接続を選択して詳細を表示します。詳細タブにアプリケーションIDが表示されます。

PowerShellを使用したサービスプリンシパルの作成

PowerShellを使用してサービスプリンシパルを作成するには、Azure Resource Managerサブスクリプションに接続し、以下のセクションで提供されているPowerShellコマンドレットを使用します。

以下の項目を準備してください。

  • SubscriptionId: VDAをプロビジョニングするサブスクリプションのAzure Resource Manager SubscriptionID
  • ActiveDirectoryID: Microsoft Entra IDに登録したアプリケーションのテナントID。
  • ApplicationName: Microsoft Entra IDで作成するアプリケーションの名前。

詳細な手順は次のとおりです。

  1. Azure Resource Managerサブスクリプションに接続します。

    Connect-AzAccount

  2. サービスプリンシパルを作成するAzure Resource Managerサブスクリプションを選択します。

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. ADテナントにアプリケーションを作成します。

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. サービスプリンシパルを作成します。

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. サービスプリンシパルにロールを割り当てます。

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. PowerShellコンソールの出力ウィンドウからApplicationIdをメモします。このIDは、ホスト接続を作成するときに提供します。

Azureでのアプリケーションシークレットの取得

既存のサービスプリンシパルを使用して接続を作成するには、まずAzureポータルでサービスプリンシパルのアプリケーションIDとシークレットを取得する必要があります。

詳細な手順は次のとおりです。

  1. Web StudioまたはPowerShellを使用してアプリケーションIDを取得します。
  2. Azureポータルにサインインします。
  3. Azureで、Microsoft Entra IDを選択します。
  4. Microsoft Entra IDのアプリの登録から、アプリケーションを選択します。
  5. 証明書とシークレットに移動します。
  6. クライアントシークレットをクリックします。

既存のサービスプリンシパルを使用した接続の作成

既存のサービスプリンシパルがある場合は、それを使用してWeb Studioで接続を作成できます。

以下の項目を準備してください。

詳細な手順は次のとおりです。

接続とリソースの追加ウィザードで:

  1. 接続ページで、新しい接続の作成Microsoft Azure接続の種類、およびAzure環境を選択します。
  2. 仮想マシンを作成するために使用するツールを選択し、次へを選択します。
  3. 接続の詳細ページで、AzureサブスクリプションIDと接続の名前を入力します。

    注:

    接続名には1~64文字を含めることができ、空白のみ、または文字\/;:#.*?=<>|[]{}"'()'を含めることはできません。

  4. 既存を使用を選択します。既存のサービスプリンシパルの詳細ウィンドウで、既存のサービスプリンシパルに対して以下の設定を入力します。詳細を入力すると、保存ボタンが有効になります。保存を選択します。有効な詳細情報を提供するまで、このページから先に進むことはできません。

    • サブスクリプションID。AzureサブスクリプションIDを入力します。サブスクリプションIDを取得するには、Azureポータルにサインインし、サブスクリプション > 概要に移動します。
    • Active Directory ID(テナントID)。Azure ADに登録したアプリケーションのディレクトリ(テナント)IDを入力します。
    • アプリケーションID。Azure ADに登録したアプリケーションのアプリケーション(クライアント)IDを入力します。
    • アプリケーションシークレット。シークレットキー(クライアントシークレット)を作成します。登録されたアプリケーションは、このキーを使用してAzure ADに認証します。セキュリティ上の理由から、キーを定期的に変更することをお勧めします。後でキーを取得できないため、必ずキーを保存してください。
    • シークレットの有効期限。アプリケーションシークレットの有効期限が切れる日付を入力します。シークレットキーの有効期限が切れる14日前から、ホスティングノードの特定のホスト接続に警告アイコンが表示されます。ただし、シークレットキーの有効期限が切れると、エラーが発生します。

注記:

セキュリティ上の理由から、有効期限を現在から2年を超える期間に設定することはできません。

  • 認証URL。このフィールドは自動的に入力され、編集できません
  • 管理URL。このフィールドは自動的に入力され、編集できません
  • ストレージサフィックス。このフィールドは自動的に入力され、編集できません
  • ディスクまたはスナップショットをアップロードまたはダウンロードするためのAzure BLOBストレージエンドポイント。このフィールドは自動的に入力され、編集できません
  • Key Vaultサービス。このフィールドは自動的に入力され、編集できません
  • サービスバスサフィックス。このフィールドは自動的に入力され、編集できません

以下のエンドポイントへのアクセスは、AzureでMCSカタログを作成するために必要です。これらのエンドポイントへのアクセスにより、ネットワークとAzureポータルおよびそのサービス間の接続が最適化されます。

  • 認証URL: https://login.microsoftonline.com
  • 管理URL: https://management.azure.com。これはAzure Resource ManagerプロバイダーAPIのリクエストURLです。管理用のエンドポイントは環境によって異なります。たとえば、Azureグローバルの場合はhttps://management.azure.com、Azure US Governmentの場合はhttps://management.usgovcloudapi.net
  • ストレージサフィックス: https://*.core.windows.net。この(*)はストレージサフィックスのワイルドカード文字です。例: https://demo.table.core.windows.net
  • ディスクまたはスナップショットをアップロードまたはダウンロードするためのAzure BLOBストレージエンドポイント: https://*.storage.azure.net。この(*)はBLOBストレージのインポートおよびエクスポート操作のワイルドカード文字です。例: https://md-impexp-xxxxx.z[00-50].blob.storage.azure.net
  • Key Vaultサービス: https://*.vault.azure.net。この(*)はKey Vault名のワイルドカード文字です。例: https://<your-key-vault-name>.vault.azure.net
  • サービスバスサフィックス: https://*.servicebus.windows.net。この(*)はグローバルAzureクラウドで作成された名前空間のワイルドカード文字です。例: https://{serviceNamespace}.servicebus.windows.net/{path}
  1. 保存を選択すると、接続の詳細ページに戻ります。次のページに進むには、次へを選択します
  2. 接続のリソースを構成します。リソースはリージョンとネットワークで構成されます

    • リージョンページで、リージョンを選択します
    • ネットワークページで、次の操作を実行します
      • リージョンとネットワークの組み合わせを識別しやすくするために、1~64文字のリソース名を入力します。リソース名には、空白のみを含めることや、文字\/;:#.*?=<>|[]{}"'()'を含めることはできません
      • 仮想ネットワーク/リソースグループのペアを選択します。(同じ名前の仮想ネットワークが複数ある場合、ネットワーク名とリソースグループをペアにすることで、一意の組み合わせが提供されます。)前のページで選択したリージョンに仮想ネットワークがない場合は、そのページに戻り、仮想ネットワークがあるリージョンを選択します
  3. 概要ページで、設定の概要を確認し、完了を選択してセットアップを完了します

サービスプリンシパルと接続の管理

このセクションでは、サービスプリンシパルと接続を管理する方法について詳しく説明します。

Azureスロットリング設定の構成

Azure Resource Managerは、サブスクリプションとテナントのリクエストをスロットルし、プロバイダーの特定のニーズに合わせて定義された制限に基づいてトラフィックをルーティングします。詳細については、MicrosoftサイトのResource Managerリクエストのスロットリングを参照してください。サブスクリプションとテナントには制限があり、多数のマシンを管理すると問題が発生する可能性があります。たとえば、多数のマシンを含むサブスクリプションでは、電源操作に関連するパフォーマンスの問題が発生する可能性があります。

ヒント:

詳細については、「Machine Creation ServicesによるAzureパフォーマンスの向上」を参照してください。

これらの問題を軽減するために、MCS内部スロットリングを削除して、Azureから利用可能なリクエストクォータをより多く使用できます。

大規模なサブスクリプション(たとえば、1,000台のVMを含むサブスクリプション)でVMの電源をオンまたはオフにする場合は、次の最適な設定をお勧めします。

  • 絶対同時操作数: 500
  • 1分あたりの最大新規操作数: 2000
  • 最大同時操作数: 500

Web Studioを使用して、特定のAzure接続のAzure操作を構成します。

  1. Web Studioで、左ペインのホスティングを選択します
  2. 接続を選択します
  3. 接続の編集ウィザードで、詳細設定を選択します
  4. 詳細設定ページで、構成オプションを使用して、同時アクションの数、1分あたりの最大新規アクション、および追加の接続オプションを指定します

Azureスロットリング

MCSは、デフォルトで最大500の同時操作をサポートします。または、Remote PowerShell SDKを使用して、最大同時操作数を設定できます。

PowerShellプロパティMaximumConcurrentProvisioningOperationsを使用して、Azureプロビジョニングの最大同時操作数を指定します。このプロパティを使用する際は、以下を考慮してください。

  • MaximumConcurrentProvisioningOperationsのデフォルト値は500です
  • PowerShellコマンドSet-itemを使用してMaximumConcurrentProvisioningOperationsパラメーターを構成します

Azureでのイメージ共有の有効化

マシンカタログを作成または更新する際、異なるAzureテナントおよびサブスクリプションから共有イメージを選択できます(Azure Compute Galleryを介して共有)。テナント内またはテナント間でイメージ共有を有効にするには、Azureで必要な設定を行う必要があります。

テナント内でのイメージ共有(サブスクリプション間)

異なるサブスクリプションに属するAzure Compute Galleryのイメージを選択するには、そのサブスクリプションのサービスプリンシパル(SPN)とイメージを共有する必要があります。

たとえば、Studioで次のように構成されているサービスプリンシパル(SPN 1)がある場合:

サービスプリンシパル: SPN 1

サブスクリプション: subscription 1

テナント: tenant 1

イメージが別のサブスクリプションにあり、Studioで次のように構成されている場合:

サブスクリプション: subscription 2

テナント: tenant 1

サブスクリプション2のイメージをサブスクリプション1(SPN 1)と共有したい場合は、サブスクリプション2に移動し、リソースグループをSPN1と共有します。

イメージは、Azureロールベースのアクセス制御(RBAC)を使用して別のSPNと共有する必要があります。Azure RBACは、Azureリソースへのアクセスを管理するために使用される承認システムです。Azure RBACの詳細については、Microsoftドキュメントの「Azureロールベースのアクセス制御(Azure RBAC)とは」を参照してください。アクセスを許可するには、共同作成者ロールを持つリソースグループスコープでサービスプリンシパルにロールを割り当てます。Azureロールを割り当てるには、ユーザーアクセス管理者や所有者などのMicrosoft.Authorization/roleAssignments/writeアクセス許可が必要です。別のSPNとイメージを共有する方法の詳細については、Microsoftドキュメントの「Azure portalを使用してAzureロールを割り当てる」を参照してください。

PowerShellコマンドを使用して別のサブスクリプションからイメージを選択する方法については、別のサブスクリプションからイメージを選択するを参照してください。

テナント間でのイメージ共有

Azure Compute Galleryを使用してテナント間でイメージを共有するには、アプリケーション登録を作成します。

たとえば、2つのテナント(テナント1とテナント2)があり、イメージギャラリーをテナント1と共有したい場合は、次の手順を実行します。

  1. テナント1のアプリケーション登録を作成します。詳細については、「アプリ登録を作成する」を参照してください
  2. ブラウザーを使用してサインインを要求することで、テナント2にアプリケーションへのアクセスを許可します。Tenant2 IDをテナント1のテナントIDに置き換えます。Application (client) IDを作成したアプリケーション登録のアプリケーションIDに置き換えます。置き換えが完了したら、URLをブラウザーに貼り付け、サインインプロンプトに従ってテナント2にサインインします。例:

    https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F
    <!--NeedCopy-->
    

    詳細については、「テナント2にアクセスを許可する」を参照してください

  3. アプリケーションにテナント2のリソースグループへのアクセスを許可します。テナント2としてサインインし、ギャラリーイメージを持つリソースグループへのアプリケーション登録アクセスを許可します。詳細については、「テナント間でのリクエストの認証」を参照してください

PowerShellコマンドを使用して、別のテナントのイメージからカタログを作成するには:

  1. 共有テナントIDでホスティング接続カスタムプロパティを更新する
  2. 別のテナントからイメージを選択する

Web Studioを使用した接続への共有テナントの追加

Web Studioでマシンカタログを作成または更新する際、異なるAzureテナントおよびサブスクリプションから共有イメージを選択できます(Azure Compute Galleryを介して共有)。この機能では、関連するホスト接続の共有テナントおよびサブスクリプション情報を提供する必要があります。

注記:

テナント間でイメージ共有を有効にするために、Azureで必要な設定を構成していることを確認してください。詳細については、「テナント間でのイメージ共有」を参照してください。

接続に対して次の手順を実行します。

  1. Web Studioで、左ペインのホスティングを選択します
  2. 接続を選択し、アクションバーで接続の編集を選択します

    共有テナント

  3. 共有テナントで、次の操作を実行します

    • 接続のサブスクリプションに関連付けられているアプリケーションIDとアプリケーションシークレットを指定します。Citrix Virtual Apps™ and Desktopsは、この情報を使用してMicrosoft Entra IDに対して認証を行います
    • 接続のサブスクリプションとAzure Compute Galleryを共有するテナントとサブスクリプションを追加します。テナントごとに最大8つの共有テナントと8つのサブスクリプションを追加できます
  4. 完了したら、適用を選択して変更を適用しウィンドウを開いたままにするか、OKを選択して変更を適用しウィンドウを閉じます

PowerShellを使用したイメージ共有の実装

このセクションでは、PowerShellを使用してイメージを共有するプロセスについて説明します。

別のサブスクリプションからイメージを選択

同じAzureテナント内の別の共有サブスクリプションに属するAzure Compute Galleryのイメージを選択して、PowerShellコマンドを使用してMCSカタログを作成および更新できます。

  1. ホスティングユニットのルートフォルダーに、Citrixはsharedsubscriptionという新しい共有サブスクリプションフォルダーを作成します
  2. テナント内のすべての共有サブスクリプションを一覧表示します

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"
    <!--NeedCopy-->
    
  3. 1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription"
    <!--NeedCopy-->
  1. リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup"
    <!--NeedCopy-->
    
  2. ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery"
    <!--NeedCopy-->
    
  3. 1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
    <!--NeedCopy-->
    
  4. 次の要素を使用してMCSカタログを作成および更新します。

    • リソースグループ
    • ギャラリー
    • ギャラリーイメージ定義
    • ギャラリーイメージバージョン

    Remote PowerShell SDKを使用してカタログを作成する方法については、「https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/」を参照してください。

共有テナントIDでホスティング接続のカスタムプロパティを更新

Set-Item を使用して、共有テナントIDとサブスクリプションIDでホスティング接続のカスタムプロパティを更新します。CustomPropertiesSharedTenants プロパティを追加します。Shared Tenants の形式は次のとおりです。


[{"Tenant":"94367291-119e-457c-bc10-25337231f7bd","Subscriptions":["7bb42f40-8d7f-4230-a920-be2781f6d5d9"]},{"Tenant":"50e83564-c4e5-4209-b43d-815c45659564","Subscriptions":["06ab8944-6a88-47ee-a975-43dd491a37d0"]}]

<!--NeedCopy-->

例:


Set-Item -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"123`" />
<Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
<Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"123abc`" />
<Property xsi:type=`"StringProperty`" Name=`"SharedTenants`" Value=`"[{ 'Tenant':'123abc', 'Subscriptions':['345', '567'] }]`" />
</CustomProperties>" `
-LiteralPath @("XDHyp:\Connections\aazure") -PassThru -UserName "advc345" -SecurePassword $psd

<!--NeedCopy-->

注:

複数のテナントを追加できます。各テナントは複数のサブスクリプションを持つことができます。

別のテナントからのイメージの選択

PowerShellコマンドを使用してMCSカタログを作成および更新するために、別のAzureテナントに属するAzure Compute Galleryのイメージを選択できます。

  1. ホスティングユニットのルートフォルダーに、Citrixは sharedsubscription という新しい共有サブスクリプションフォルダーを作成します。
  2. すべての共有サブスクリプションを一覧表示します。

    Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder
    <!--NeedCopy-->
    
  3. 1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription
    <!--NeedCopy-->
    
  4. リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup
    <!--NeedCopy-->
    
  5. ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery
    <!--NeedCopy-->
    
  6. 1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition
    <!--NeedCopy-->
    
  7. 次の要素を使用してMCSカタログを作成および更新します。

    • リソースグループ
    • ギャラリー
    • ギャラリーイメージ定義
    • ギャラリーイメージバージョン

    Remote PowerShell SDKを使用してカタログを作成する方法については、「https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/」を参照してください。

アプリケーションシークレットとシークレットの有効期限の管理

シークレットの有効期限が切れる前に、接続のアプリケーションシークレットを必ず変更してください。シークレットキーの有効期限が切れる14日前から、ホスティングノードの特定のホスト接続に警告アイコンが表示されます。ただし、シークレットキーの有効期限が切れると、エラーが発生します。

Azureでアプリケーションシークレットを作成

Azureポータルを通じて接続のアプリケーションシークレットを作成できます。

  1. Microsoft Entra ID を選択します。
  2. Microsoft Entra ID の [アプリの登録] から、アプリケーションを選択します。
  3. [証明書とシークレット] に移動します。
  4. [クライアントシークレット] > [新しいクライアントシークレット] をクリックします。
  5. シークレットの説明を入力し、期間を指定します。完了したら、[追加] を選択します。

    注:

    クライアントシークレットは後で取得できないため、必ず保存してください。

  6. クライアントシークレットの値と有効期限をコピーします。
  7. Web Studioで、対応する接続を編集し、[アプリケーションシークレット] および [シークレットの有効期限] フィールドの内容をコピーした値に置き換えます。

シークレットの有効期限を変更

Web Studioを使用して、使用中のアプリケーションシークレットの有効期限を追加または変更できます。

注:

シークレットキーの有効期限が切れる14日前から、ホスティングノードの特定のホスト接続に警告アイコンが表示されます。

  1. [接続とリソースの追加] ウィザードで、接続を右クリックし、[接続の編集] をクリックします。
  2. [接続プロパティ] ページで、[シークレットの有効期限] をクリックして、使用中のアプリケーションシークレットの有効期限を追加または変更します。

事前作成されたネットワークセキュリティグループの使用

CitrixにNSGの作成と変更を要求する代わりに、イメージ準備用にDeny-Allネットワークセキュリティグループを作成します。PowerShellコマンド Set-Item を使用してホスティングユニットのカスタムプロパティを編集し、NsgForPreparation パラメーターを含めてDeny-Allネットワークセキュリティグループを提供します。

前提条件

サービスプリンシパルに必要な次の権限を構成します。

  • Microsoft.Network/networkSecurityGroups/join/action: ネットワークセキュリティグループをサブネットまたはネットワークインターフェイスに関連付ける
  • Microsoft.Network/networkSecurityGroups/read: ネットワークセキュリティグループを取得する
  • Microsoft.Network/networkSecurityGroups/securityRules/read: ルールを取得する

事前作成されたDeny-Allネットワークセキュリティグループの追加

事前作成されたDeny-Allネットワークセキュリティグループを追加するには、ホスティングユニットでカスタムプロパティを次のように設定します。

  1. Remote PowerShell SDKを使用してPowerShellウィンドウを開きます。
  2. 次のコマンドを実行します。

    Add-PSSnapin citrix*.
    cd XDHyp:\HostingUnits\
    Dir
    <!--NeedCopy-->
    
  3. 詳細を取得するためにホスティングユニットを選択します。

    Get-Item "XDHyp:\HostingUnits\<hostingunitname>"
    <!--NeedCopy-->
    
  4. CustomPropertiesをメモ帳にコピーし、プロパティ設定 <Property xsi:type="StringProperty" Name="NsgForPreparation" Value="{ResourceGroupName}/{NetworkSecurityGroupName}"/> を追加します。例:

    <CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Property xsi:type="StringProperty" Name="NsgForPreparation" Value="{ResourceGroupName}/{NetworkSecurityGroupName}"/></CustomProperties>
    <!--NeedCopy-->
    
  5. PowerShellウィンドウで、変更されたカスタムプロパティを変数に割り当てます。例:

    $customProperty = "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`"><Property xsi:type=`"StringProperty`" Name=`"NsgForPreparation`" Value=`"{ResourceGroupName}/{NetworkSecurityGroupName}`"/></CustomProperties>"
    <!--NeedCopy-->
    
  6. $cred = Get-Credential を実行します。プロンプトが表示されたら、接続資格情報を入力します。資格情報はAzureアプリケーションIDとシークレットです。
  7. 次のコマンドを実行します。

    Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password
    <!--NeedCopy-->
    

    重要:

    SubscriptionIdが不足しているというメッセージが表示された場合は、カスタムプロパティ内のすべての二重引用符(”)を、バッククォート文字に続く二重引用符へ置き換えてください。

  8. dir を実行して、更新された CustomProperties 設定を確認します。

注:

更新が反映されるまでに1分以上かかります。

ネットワークセキュリティグループの詳細の取得

ネットワークセキュリティグループの詳細を取得するには、まずネットワークセキュリティグループを含むリソースグループを取得し、次にリソースグループ名に基づいてネットワークセキュリティグループを取得します。

  1. ネットワークセキュリティグループを含むリソースグループを取得します。例:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}'
    <!--NeedCopy-->
    
  2. リソースグループ名に基づいてネットワークセキュリティグループを取得します。例:

    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType securitygroup -MaxRecords 5 -AdditionalDataFilter '{"location": ["eastus", "westus"], "resourcegroup":["resourcegroupname"]}'
    <!--NeedCopy-->
    

空のリソースグループのフィルター

マシンカタログ作成時にマスターイメージ、マシンプロファイル、または準備済みイメージを選択する際、PowerShellコマンド Get-HypInventoryItem を使用して空のリソースグループをフィルターします。

例:

  • ページ内の最大レコードを取得します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • ページ内の最大レコードを取得し、特定のリソースを持つリソースコンテナーを検索するようにフィルターします。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • スキップを使用してページを直接指定して取得し、特定のリソースを持つリソースコンテナーを検索するようにフィルターします。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -skip 20 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
     <!--NeedCopy-->
    
  • トークンを使用して次のページを取得し、特定のリソースを持つリソースコンテナーを検索するようにフィルターします。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' -ContinuationToken 'ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDUsDQogICJSb3dzVG9Ta2lwIjogMjUsDQogICJLdXN0b0NsdXN0ZXJVcmwiOiAiaHR0cHM6Ly9hcmctbmV1LTEzLXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=='
     <!--NeedCopy-->
    
  • Citrix内部タグを持つすべてのリソースグループを取得し、MaxRecordsで最大レコードを制限します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
     <!--NeedCopy-->
    
  • Citrix内部タグを持つマシンプロファイル(マスターイメージ)をフィルターし、MaxRecordsで最大レコードを制限します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Citrix内部タグを持つ準備済みイメージをフィルターし、MaxRecordsで最大レコードを制限します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion"]}'
     <!--NeedCopy-->
    
  • Citrix内部タグを持つマシンプロファイル(準備済みイメージ)をフィルターし、MaxRecordsで最大レコードを制限します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • Citrix内部タグを持つイメージをフィルターし、MaxRecordsと場所で最大レコードを制限します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"], "location": ["eastus", "westus"]}'
     <!--NeedCopy-->
    
  • CitrixResourceタグを考慮せずにすべてのリソースグループを取得します。

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $true
     <!--NeedCopy-->
    

Azure Sovereign Airgapクラウド環境への接続

Azure Sovereign Airgapクラウド環境は、分離されたネットワークドメイン上にある必要がある最高機密のワークロードに適しています。ホスト接続の作成時に、カスタムプロパティ DisableInstanceDiscovery を使用してAzure Sovereign Airgapクラウド環境に接続できます。

<Property xsi:type="StringProperty" Name="DisableInstanceDiscovery" Value="true" />
<!--NeedCopy-->

Azureホスト接続の作成の詳細については、Create-HostingConnection.ps1を参照してください。

必要なAzure権限

このセクションには、Azureに必要な最小限の一般的な権限が含まれています。

最小限の権限

最小限の権限は、より優れたセキュリティ制御を提供します。ただし、追加の権限を必要とする新機能は、最小限の権限のみを使用しているため失敗します。

ホスト接続の作成

Azureから取得した情報を使用して、新しいホスト接続を追加します。

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/tenants/read",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read"
<!--NeedCopy-->

VMの電源管理

マシンインスタンスの電源をオンまたはオフにします。

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
<!--NeedCopy-->

VMの作成、更新、または削除

マシンカタログを作成し、マシンを追加、削除、更新し、マシンカタログを削除します。

以下は、マスターイメージがマネージドディスクであるか、スナップショットがホスト接続と同じリージョンにある場合に必要となる最小限の権限のリストです。

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Features/providers/features/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"

<!--NeedCopy-->

以下の機能については、最小限の権限に基づいて以下の追加権限が必要です。

  • マスターイメージがホスト接続と同じリージョンにあるストレージアカウント内のVHDである場合:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • マスターイメージが共有イメージギャラリーのImageVersionである場合:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • マスターイメージがマネージドディスクであり、スナップショットまたはVHDがホスト接続のリージョンとは異なるリージョンにある場合:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     "Microsoft.Storage/checknameavailability/read",
     "Microsoft.Storage/locations/usages/read",
     "Microsoft.Storage/skus/read",
     <!--NeedCopy-->
    
  • Citrix管理のリソースグループを使用する場合:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • マスターイメージを共有テナントまたはサブスクリプションのAzure Compute Gallery(旧Shared Image Gallery)に配置する場合:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     "Microsoft.Resources/subscriptions/read",
     <!--NeedCopy-->
    
  • Azure専用ホストサポートを使用する場合:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • カスタマーマネージドキー(CMK)を使用したサーバー側暗号化(SSE)を使用する場合:

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • ARMテンプレート(マシンプロファイル)を使用してVMを展開する場合:

“Microsoft.Resources/deployments/write”, “Microsoft.Resources/deployments/operationstatuses/read”, “Microsoft.Resources/deployments/read”, “Microsoft.Resources/deployments/delete”, “Microsoft.Insights/DataCollectionRuleAssociations/Read”, “Microsoft.Insights/dataCollectionRules/read”, ```

  • マシンプロファイルとしてAzureテンプレートスペックを使用する場合:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
    

アンマネージドディスクを使用したマシンの作成、更新、および削除

マスターイメージがVHDであり、管理者が提供するリソースグループを使用する場合に必要となる最小限の権限のリストは次のとおりです。

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",

コスト管理

VMの価格を取得するために必要となる最小限の権限は次のとおりです。

"Microsoft.Consumption/pricesheets/read"

VMのコストを取得するために必要となる最小限の権限は次のとおりです。

"Microsoft.CostManagement/query/read"

注:

Azureマシンカタログのコストインサイトタブを表示するには、コスト管理 > 管理 > コストの読み取り権限(クラウド管理者向けのデフォルト)が必要です。コストインサイトタブの詳細については、カタログの詳細を表示を参照してください。

一般的な権限

共同作成者ロールは、すべてのリソースを管理するためのフルアクセス権を持っています。この権限セットは、新しい機能の取得を妨げるものではありません。

以下の権限セットは、現在の機能セットで必要とされる以上の権限を含んでいますが、今後も最高の互換性を提供します。

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tenants/read",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Insights/DataCollectionRuleAssociations/Read",
"Microsoft.Insights/dataCollectionRules/read",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/securityRules/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"

Azure非シークレット環境でのホスト接続の検証

ホスト接続の権限を検証して、MCSマシンカタログの作成および管理に関連するタスクを実行できます。この実装は、VMの作成、削除、更新、VMの電源管理など、さまざまなシナリオで必要となる不足している権限を事前に特定するのに役立ち、重要な時にブロックされるのを回避できます。

PowerShellコマンドTest-HypHypervisorConnectionを使用して、ホスト接続の権限を検証できます。このコマンドの結果はリストとしてキャプチャされ、リスト内の各項目は3つのセクションに分かれています。

  • カテゴリ: ユーザーがMCSマシンカタログを作成および管理するために実行できるアクションまたはタスク。
  • 是正措置: 管理者がユーザーの不足している権限の不一致を解決するために実行する必要がある手順。
  • 不足している権限: カテゴリごとの不足している権限のリスト。

権限を検証するには、次の手順を実行します。

  1. Azureへのホスト接続を作成します。
  2. Delivery Controller™ホストからPowerShellウィンドウを開きます。
  3. asnp citrix*を実行して、Citrix固有のPowerShellモジュールをロードします。
  4. 接続をテストするために必要な権限があるかどうかを確認するには、次のコマンドを実行します。

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon"
    

    SPNに必要となるロールレベルの権限:

    • Microsoft.Authorization/roleDefinitions/read(サブスクリプションレベル、またはリソースグループが提供されている場合はリソースグループレベル)
    • Microsoft.Authorization/roleAssignments/read(サブスクリプションレベル、またはリソースグループが提供されている場合はリソースグループレベル)

    SPNに必要となるAPIレベルの権限:

    Microsoft.Graph:

    • Application.Read.All
    • Directory.Read.All
    • ServicePrincipalEndpoint.Read.All
  5. 権限を検索するために必要な不足している権限を追加した後、さまざまなカテゴリで権限があるかどうかを確認するには、次のコマンドを実行します。

    例:

    より高いレベルの認証が必要なサブスクリプションレベルで接続をテストする場合:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\ AzureCon -SecurePassword $password -UserName 922e65d5-38ae-4cf5-xxxx-xxxxxxxxx
    

    例:

    高レベルの認証なしでリソースグループレベルで接続をテストする場合:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties \$customProperties | Format-List
    

    注:

    CustomPropertiesパラメーターは、リソースグループが接続固有の情報であるため、リソースグループレベルを提供するために使用されます。

    例:

    リソースグループレベルでより高いレベルの認証を使用して接続をテストする場合:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -SecurePassword $password -UserName 922e65d5-38ae-4cf5-832b-54122196b7dd -CustomProperties $customProperties
    

権限の詳細については、必要なAzure権限を参照してください。

Azureシークレット環境でのホスト接続の検証

PowerShellコマンドTest-HypHypervisorConnectionを使用して、ホスト接続がAzureシークレット環境で必要な権限を持っているかどうかを検証できます。

ただし、検証結果を正常に取得するには、既存のホスト接続を作成または更新して、カスタムプロパティAuthenticationObjectIdを持たせる必要があります。このプロパティには、ホスティング接続に関連付けられたサービスプリンシパルのオブジェクトIDが格納されます。

注:

サービスプリンシパルのオブジェクトIDはAzureポータルから取得します。アプリケーションのIDは使用しないでください。

AuthenticationObjectIdを含めるためのホスト接続の作成または更新

New-Itemを使用してホスト接続を作成し、AuthenticationObjectIdをカスタムプロパティとして追加します。例:

New-Item -ConnectionType 'Azure' -HypervisorAddress @('http://hypervisorhost1.example.com','http://hypervisorhost2.example.com')`
    -LoggingId $loggingId -Path @('XDHyp:\Connections\Example') -Persist -Scope @() `
    -Password 'Password' -UserName 'root' -CustomProperties '<Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>'

Set-Itemを使用して既存のホスト接続を更新し、AuthenticationObjectIdをカスタムプロパティとして追加します。これを行う手順は次のとおりです。

  1. Remote PowerShell SDKを使用してPowerShellウィンドウを開きます。
  2. 次のコマンドを実行します。

    Add-PSSnapin citrix*.
    cd XDHyp:\Connections\
    dir
    
  3. 接続からCustomPropertiesをメモ帳にコピーし、プロパティ設定<Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>CustomPropertiesに追加します。
  4. PowerShellウィンドウで、変更されたカスタムプロパティを変数に割り当てます。
  5. $cred = Get-Credentialを実行します。プロンプトが表示されたら、接続資格情報を入力します。資格情報はAzureアプリケーションIDとシークレットです。
  6. Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.passwordを実行します。
  7. dirを実行して、更新されたCustomProperties設定を確認します。

    Set-Item -PSPath XDHyp:\Connections\$connName -CustomProperties '<Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>' -username $cred.username -Securepassword $cred.password
    

権限のホスト接続の検証

必要なロールと権限のホスト接続を検証するには、次のコマンドを実行します。

  • ロールと権限がサブスクリプションレベルで割り当てられている場合:

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>
    
  • ロールと権限がリソースグループレベルで割り当てられている場合:

     $CustomProperties = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">' + `
     '<Property xsi:type="StringProperty" Name="ResourceGroups" Value="ExampleResourceGroup" />' + `
     '</CustomProperties>'
        
     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>  -CustomProperties $CustomProperties
    

次のステップ

詳細情報