Citrix Virtual Apps and Desktops

Microsoft Azureへの接続

(/ja-jp/citrix-virtual-apps-desktops/install-configure/connections.html)では、接続を作成するウィザードについて説明しています。以下の情報は、Azure Resource Managerクラウド環境に固有の詳細を扱っています。

注:

Microsoft Azureへの接続を作成する前に、Azureアカウントをリソースの場所として設定を完了する必要があります。(/ja-jp/citrix-virtual-apps-desktops/install-configure/install-prepare/azure.html)を参照してください。

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

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

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

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

  • Web Studio を使用してサービスプリンシパルと接続を作成する(/ja-jp/citrix-virtual-apps-desktops/install-configure/connections/connection-azure-resource-manager.html#create-a-service-principal-and-connection-using-web-studio)
  • (/ja-jp/citrix-virtual-apps-desktops/install-configure/connections/connection-azure-resource-manager.html#create-a-service-principal-using-powershell)
  • (/ja-jp/citrix-virtual-apps-desktops/install-configure/connections/connection-azure-resource-manager.html#get-the-application-secret-in-azure)
  • 既存のサービスプリンシパルを使用して接続を作成する(/ja-jp/citrix-virtual-apps-desktops/install-configure/connections/connection-azure-resource-manager.html#create-a-connection-using-an-existing-service-principal)

考慮事項

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

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

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

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

重要:

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

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

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

  • サブスクリプションの Microsoft Entra テナントにユーザーアカウントがあること。
  • 認証に使用するアカウントには、Azure RBAC を使用してサブスクリプションでロールを割り当てる権限が必要です。例:サブスクリプションの Owner、Role Based Access Control Administrator、または User Access Administrator。
  • 認証には、グローバル管理者、アプリケーション管理者、またはアプリケーション開発者の権限が必要です。これらの権限は、ホスト接続を作成した後に取り消すことができます。ロールの詳細については、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 で作成するアプリケーションの名前。

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

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

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

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

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

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

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

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

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

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

  5. PowerShell コンソールの出力ウィンドウから、ApplicationId をメモします。ホスト接続を作成する際に、その ID を指定します。

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

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

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

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

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

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

以下の項目を用意してください。

  • SubscriptionId
  • ActiveDirectoryID (テナントID)
  • アプリケーションID
  • アプリケーションシークレット

    詳細については、「アプリケーションシークレットの取得」(#get-the-application-secret-in-azure)を参照してください。

  • シークレットの有効期限

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

接続とリソースの追加ウィザードで、次の手順を実行します。

  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 Globalの場合は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。この(*)はキーコンテナー名のワイルドカード文字です。例: https://<your-key-vault-name>.vault.azure.net
      • サービスバスサフィックス: https://*.servicebus.windows.net。この(*)はグローバルAzureクラウドで作成された名前空間のワイルドカード文字です。例: https://{serviceNamespace}.servicebus.windows.net/{path}
  5. 保存を選択すると、接続の詳細ページに戻ります。次へを選択して次のページに進みます。
  6. 接続のリソースを構成します。リソースには、リージョンとネットワークが含まれます。

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

サービスプリンシパルと接続を管理する

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

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 です。
  • MaximumConcurrentProvisioningOperations パラメーターを PowerShell コマンド Set-item を使用して構成します。

Azure でのイメージ共有を有効にする

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

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

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

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

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

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

テナント: tenant 1

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

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

テナント: tenant 1

subscription 2 のイメージを subscription 1 (SPN 1) と共有したい場合は、subscription 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 コマンドを使用して別のサブスクリプションからイメージを選択する方法については、「[別のサブスクリプションからイメージを選択する]」(#select-an-image-from-a-different-subscription)を参照してください。

テナント間でイメージを共有する

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 を使用してホスティング接続のカスタムプロパティを更新する] (#update-hosting-connection-custom-properties-with-shared-tenant-ids)。
  2. [別のテナントからイメージを選択する] (#select-an-image-from-a-different-tenant)。

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-->
    
  4. リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。

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

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

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
    <!--NeedCopy-->
    
  7. 以下の要素を使用して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でホスティング接続のカスタムプロパティを更新します。CustomPropertiesにプロパティSharedTenantsを追加します。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 portal を介して、接続のアプリケーションシークレットを作成できます。

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

    注:

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

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

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

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

注:

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

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

Azure 拡張ゾーン

Azure Extended Zones は、既存の Azure リージョンの小規模な拡張機能であり、組織がワークロードをユーザーの近くで実行できるようにすることで、パフォーマンスとコンプライアンスを向上させます。Azure 上の MCS は、Extended Zones 内の VM のプロビジョニングと電源管理をサポートするようになりました。

Azure Extended Zones の詳細については、Microsoft ドキュメント「Azure Extended Zones documentation」を参照してください。

ユースケース

この機能は、永続カタログと非永続カタログに適用されます。

  • 電源管理のみの VM: 既存の拡張ゾーン VM を電源管理のみのカタログにインポートし、Citrix MCS で電源管理できます。

  • MCS プロビジョニング済み VM: 新しい VM を Extended Zone にプロビジョニングし、MCS で管理できます。この機能には、イメージ管理ワークフローのサポートも含まれています。

制限事項

現在、Azure Extended Zones の使用にはいくつかの制限があります。これらの制限の多くは、現在の Azure の制約によるものです。

  • 専用ホストはサポートされていません。
  • 容量予約はサポートされていません。
  • 近接配置グループはサポートされていません。
  • スポットVMはサポートされていません。
  • 拡張ゾーンではアベイラビリティゾーンはサポートされていません。
  • StandardSSD_LRS および Premium_LRS ストレージタイプのみがサポートされています。
  • 現在、UseSharedImageGallery 機能を使用して、マスターイメージを拡張ゾーンのAzure Compute Gallery(またはShared Image Gallery)に保存することはできません。その結果、エフェメラルOSディスクもサポートされていません。
  • Azure Compute Galleryのイメージバージョンをマスターイメージとして使用している場合、使用する前に拡張ゾーンでのレプリケーションが完全に完了していることを確認してください。レプリケーションが完了する前にイメージバージョンを使用しようとすると、展開が失敗する可能性があります。

前提条件

拡張ゾーンを使用する前に、以下の前提条件となる手順を完了していることを確認してください。

  1. Azureに登録する:

    1. 拡張ゾーンはデフォルトでは有効になっていません。
    2. AzureサブスクリプションでMicrosoft.EdgeZonesリソースプロバイダーを登録します: リソースプロバイダー Microsoft.EdgeZones のサブスクリプションを登録する
    3. 必要な各拡張ゾーンを個別に登録します(例: LosAngeles、Perth): Azure 拡張ゾーンに登録する
  2. Citrixリソースを準備する:

    1. 拡張ゾーンに仮想ネットワークを作成します。
    2. 必要に応じて、マスターイメージとスナップショットを作成します。

必要な権限

拡張ゾーンにカタログを作成するには、サービスプリンシパルに次の権限が必要です: Microsoft.EdgeZones/extendedZones/read

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

構成手順

  1. 拡張ゾーンにホスティングユニットを作成する

    .extendedzoneタイプを使用する拡張ゾーンは、Citrix MCSインベントリのリージョンと並んで表示されます。拡張ゾーンにプロビジョニングするには、その拡張ゾーンに紐付けられた新しいホスティングユニットを作成する必要があります。

    例: ロサンゼルス拡張ゾーンにホスティングユニットを作成する

    $RootPath = "XDHyp:\Connections\MyConnectionName\Los Angeles.extendedzone"
    
    $NetworkPath = "XDHyp:\Connections\MyConnectionName\Los Angeles.extendedzone\virtualprivatecloud.folder\MyResourceGroup.resourcegroup\MyExtendedZoneNetwork.virtualprivatecloud\MyExtendedZoneSubnet.network"
    
    $HostingUnitPath = "XDHyp:\HostingUnits\MyHostingUnitName"
    
    New-Item -HypervisorConnectionName MyConnectionName -NetworkPath @($NetworkPath) -Path @($HostingUnitPath) -RootPath $RootPath -StoragePath @()
    <!--NeedCopy-->
    
  2. 拡張ゾーンにMCSカタログを作成する

    ホスティングユニットを作成したら、StudioまたはPowerShellを使用してカタログの作成に進みます。カタログが拡張ゾーンホスティングユニットを参照していることを確認してください。

トラブルシューティング

問題が発生した場合は、以下を確認してください。

  1. サブスクリプションが拡張ゾーンに登録されていることを確認してください。
    1. サブスクリプションがMicrosoft.EdgeZonesリソースプロバイダーに登録されていることを確認してください。
    2. 各拡張ゾーンが個別に登録されていることを確認してください。
  2. サービスプリンシパルに新しい権限があることを確認してください。

    1. サービスプリンシパルにはMicrosoft.EdgeZones/extendedZones/read権限が必要です。

登録または権限が不足している場合、拡張ゾーンのインベントリアイテムは「不明な拡張ゾーン」と表示されることがあります。

注:

拡張ゾーンのマスターイメージを使用して親リージョンにカタログを作成する場合でも、拡張ゾーンの登録と権限が必要です。

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

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

前提条件

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

  • 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. 更新された CustomProperties 設定を確認するには、dir を実行します。

注:

更新が反映されるまでに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 を使用して空のリソースグループをフィルターします。

例:

  • 1ページあたりの最大レコード数を取得します:

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

     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 internal tag を持つすべてのリソースグループを取得し、MaxRecords で最大レコード数を制限します。

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

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

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

     Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
     <!--NeedCopy-->
    
  • タグ Citrix internal tag を持つイメージをフィルターし、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",
     <!--NeedCopy-->
    
  • Azureテンプレート仕様をマシンプロファイルとして使用する場合:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

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

マスターイメージが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",
<!--NeedCopy-->

コスト管理

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

"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->

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

"Microsoft.CostManagement/query/read"
<!--NeedCopy-->

注:

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

一般的な権限

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

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

"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"
<!--NeedCopy-->

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

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

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

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

権限を検証するには、以下を実行します。

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

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon"
    <!--NeedCopy-->
    

    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
    <!--NeedCopy-->
    

    例:

    高レベルの承認なしでリソースグループレベルで接続をテストするには:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties $customProperties | Format-List
    <!--NeedCopy-->
    

    注:

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

    例:

    リソースグループレベルでより高いレベルの認証を持つ接続をテストするには、次の手順を実行します。

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

権限については、「必要な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"/>
<!--NeedCopy-->

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

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

    Add-PSSnapin citrix*.
    cd XDHyp:\Connections\
    dir
    <!--NeedCopy-->
    
  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. 更新されたCustomProperties設定を確認するために、dirを実行します。

    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
    <!--NeedCopy-->
    

権限のホスト接続を検証する

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

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

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

     Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>  -CustomProperties $CustomProperties
    
     $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>'
     <!--NeedCopy-->
    

次のステップ

詳細情報