Microsoft Azure への接続

最終公開日 : Nov 13, 2026
(/ja-jp/citrix-virtual-apps-desktops/2607-ltsr/install-configure/connections.html)では、接続を作成するウィザードについて説明します。以下の情報は、Azure Resource Managerクラウド環境に固有の詳細を扱います。
注:
Microsoft Azure への接続を作成する前に、Azure アカウントをリソースの場所として設定を完了する必要があります。(/ja-jp/citrix-virtual-apps-desktops/2607-ltsr/install-configure/install-prepare/azure.html)を参照してください。

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

接続を作成する前に、接続がAzureリソースにアクセスするために使用するサービスプリンシパルを設定する必要があります。接続は2つの方法で作成できます。
  • Web Studio を使用してサービスプリンシパルと接続を同時に作成する
  • 以前に作成したサービスプリンシパルを使用して接続を作成する
このセクションでは、次のタスクを完了する方法を示します。
  • (/ja-jp/citrix-virtual-apps-desktops/2607-ltsr/install-configure/connections/connection-azure-resource-manager.html#create-a-service-principal-using-powershell)
  • (/ja-jp/citrix-virtual-apps-desktops/2607-ltsr/install-configure/connections/connection-azure-resource-manager.html#get-the-application-secret-in-azure)
  • 既存のサービスプリンシパルを使用して接続を作成する](/ja-jp/citrix-virtual-apps-desktops/2607-ltsr/install-configure/connections/connection-azure-resource-manager.html#create-a-connection-using-an-existing-service-principal)

考慮事項

  • Citrix® は、共同作成者ロールを持つサービスプリンシパルの使用を推奨します。ただし、最小限の権限のリストについては、(#minimum-permissions)セクションを参照してください。
  • 最初の接続を作成するとき、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で作成するアプリケーションの名前。
詳細な手順は次のとおりです。
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ポータルでサービスプリンシパルのアプリケーション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
  • アプリケーションシークレット
    詳細については、「アプリケーションシークレットの取得」を参照してください。
  • シークレットの有効期限
詳細な手順は次のとおりです。
接続とリソースの追加ウィザードで、次の手順を実行します。
  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 です。
  • 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
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ポータルを使用して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
    詳細については、「テナント2へのアクセス許可」を参照してください。
  3. アプリケーションにテナント 2 のリソースグループへのアクセス権を付与します。テナント 2 としてサインインし、ギャラリーイメージを持つリソースグループにアプリケーション登録のアクセス権を付与します。詳細については、「テナント間の要求を認証する」を参照してください。
PowerShell コマンドを使用して、別のテナントのイメージからカタログを作成するには:

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を使用したイメージ共有の実装

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

同じAzureテナント内の別の共有サブスクリプションに属するAzure Compute Galleryのイメージを選択して、PowerShellコマンドを使用してMCSカタログを作成および更新できます。
  1. ホスティングユニットのルートフォルダーに、Citrixはsharedsubscriptionという新しい共有サブスクリプションフォルダーを作成します。
  2. テナント内のすべての共有サブスクリプションを一覧表示します。
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"
  3. 1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します。
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription"
  4. リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup"
  5. ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery"
  6. 1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。
    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
  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"]}]
例:
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
注:
複数のテナントを追加できます。各テナントは複数のサブスクリプションを持つことができます。

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

PowerShellコマンドを使用してMCSカタログを作成および更新するために、別のAzureテナントに属するAzure Compute Galleryのイメージを選択できます。
  1. ホスティングユニットのルートフォルダーに、Citrixはsharedsubscriptionという新しい共有サブスクリプションフォルダーを作成します。
  2. すべての共有サブスクリプションを一覧表示します。
    Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder
  3. 1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します。
    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription
  4. リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。
    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup
  5. ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。
    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery
  6. 1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。
    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition
  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 拡張ゾーンは、既存の Azure リージョンのフットプリントの小さい拡張機能であり、組織がワークロードをユーザーの近くで実行できるようにすることで、パフォーマンスとコンプライアンスを向上させます。Azure 上の MCS は、拡張ゾーン内の VM のプロビジョニングと電源管理をサポートするようになりました。
Azure 拡張ゾーンの詳細については、Microsoft ドキュメントの Azure Extended Zones documentation を参照してください。

ユースケース

この機能は、永続カタログと非永続カタログに適用できます。
  • 電源管理のみのVM: 既存の拡張ゾーンVMを電源管理のみのカタログにインポートし、Citrix MCSで電源管理できます。
  • MCSプロビジョニング済みVM: 新しいVMを拡張ゾーンにプロビジョニングし、MCSで管理できます。この機能には、イメージ管理ワークフローのサポートも含まれています。

制限事項

現在、Azure 拡張ゾーンの使用にはいくつかの制限があります。これらの制限の多くは、現在の 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 @()
  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
  3. 詳細を取得するホスティングユニットを選択します。
    Get-Item "XDHyp:\HostingUnits\<hostingunitname>"
  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>
  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>"
  6. $cred = Get-Credential を実行します。プロンプトが表示されたら、接続資格情報を入力します。資格情報は Azure アプリケーション ID とシークレットです。
  7. 次のコマンドを実行します。
    Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password
    重要:
    SubscriptionIdがありませんというメッセージが表示された場合は、カスタムプロパティ内のすべての二重引用符(“)をバッククォートの後に二重引用符(`”)に置き換えてください。
  8. 更新された CustomProperties 設定を確認するには、dir を実行します。
注:
更新が反映されるまでに1分以上かかります。

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

ネットワークセキュリティグループの詳細を取得するには、まずネットワークセキュリティグループを含むリソースグループを取得し、次にリソースグループ名に基づいてネットワークセキュリティグループを取得します。
  1. ネットワークセキュリティグループを含むリソースグループを取得します。例:
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}'
  2. リソースグループ名に基づいてネットワークセキュリティグループを取得します。例:
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType securitygroup -MaxRecords 5 -AdditionalDataFilter '{"location": ["eastus", "westus"], "resourcegroup":["resourcegroupname"]}'

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

マシンカタログ作成時にマスターイメージ、マシンプロファイル、または準備済みイメージを選択する際に、PowerShellコマンドGet-HypInventoryItemを使用して空のリソースグループをフィルターします。
例:
  • ページ内の最大レコード数を取得する:
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
  • ページ内の最大レコード数を取得し、特定のリソースを持つリソースコンテナを見つけるためにフィルタリングする。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
  • スキップを使用してページを直接指定して取得し、特定のリソースを持つリソースコンテナを見つけるためにフィルタリングする。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -skip 20 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}'
  • トークンを使用して次のページを取得し、特定のリソースを持つリソースコンテナを見つけるためにフィルタリングする。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "manageddisk", "snapshot", "imageversion", "storageaccount"]}' -ContinuationToken 'ew0KICAiJGlkIjogIjEiLA0KICAiTWF4Um93cyI6IDUsDQogICJSb3dzVG9Ta2lwIjogMjUsDQogICJLdXN0b0NsdXN0ZXJVcmwiOiAiaHR0cHM6Ly9hcmctbmV1LTEzLXNmLmFyZy5jb3JlLndpbmRvd3MubmV0Ig0KfQ=='
  • タグ「Citrix internal tag」を持つすべてのリソースグループを取得し、MaxRecordsで最大レコード数を制限する。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5
  • タグ「Citrix internal tag」を持つマシンプロファイル(マスターイメージ)をフィルタリングし、MaxRecordsで最大レコード数を制限する。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
  • タグ「Citrix internal tag」を持つ準備済みイメージをフィルタリングし、MaxRecordsで最大レコード数を制限する。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion"]}'
  • タグ「Citrix internal tag」を持つマシンプロファイル(準備済みイメージ)をフィルタリングし、MaxRecordsで最大レコード数を制限する。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["vm", "templatespecversion"]}'
  • タグ「Citrix internal tag」を持つイメージをフィルタリングし、MaxRecordsと場所で最大レコード数を制限する。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"], "location": ["eastus", "westus"]}'
  • タグを考慮せずにすべてのリソースグループを取得する CitrixResource。
    Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $true

Azure Sovereign Airgap クラウド環境に接続する

Azure Sovereign Airgap クラウド環境は、分離されたネットワークドメイン上にある必要がある最高機密のワークロードに適しています。ホスト接続の作成時に、カスタムプロパティ DisableInstanceDiscovery を使用して Azure Sovereign Airgap クラウド環境に接続できます。
<Property xsi:type="StringProperty" Name="DisableInstanceDiscovery" Value="true" />
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"

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",

仮想マシンの作成、更新、または削除

マシンカタログを作成し、マシンを追加、削除、更新し、マシンカタログを削除します。
ホスト接続と同じリージョンにマスターイメージが管理ディスクまたはスナップショットとして存在する場合に必要な最小限の権限のリストを次に示します。
"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"
以下の機能については、最小限の権限に加えて、以下の追加権限が必要です。
  • マスターイメージがホスト接続と同じリージョンにあるストレージアカウント内の VHD である場合:
    "Microsoft.Storage/storageAccounts/read",
    "Microsoft.Storage/storageAccounts/listKeys/action",
  • マスターイメージが共有イメージギャラリーの ImageVersion である場合:
    "Microsoft.Compute/galleries/read",
    "Microsoft.Compute/galleries/images/read",
    "Microsoft.Compute/galleries/images/versions/read",
  • マスターイメージが管理ディスクであり、スナップショットまたは 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",
  • Citrix 管理のリソースグループを使用する場合:
    "Microsoft.Resources/subscriptions/resourceGroups/write",
    "Microsoft.Resources/subscriptions/resourceGroups/delete",
  • マスターイメージを共有テナントまたはサブスクリプションの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",
  • Azure専用ホストサポートを使用する場合:
    "Microsoft.Compute/hostGroups/read",
    "Microsoft.Compute/hostGroups/write",
    "Microsoft.Compute/hostGroups/hosts/read",
  • 顧客管理キー (CMK) を使用してサーバー側暗号化 (SSE) を使用する場合:
    "Microsoft.Compute/diskEncryptionSets/read",
  • 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 マシンカタログの Cost Insights タブを表示するには、Cost Management > Manage > Read cost 権限 (Cloud Administrators のデフォルト) が必要です。Cost Insights タブの詳細については、「カタログの詳細を表示」を参照してください。

一般的な権限

共同作成者ロールは、すべてのリソースを管理するためのフルアクセス権を持っています。この権限セットは、新機能の取得を妨げるものではありません。
以下の権限セットは、現在の機能セットで必要とされる以上の権限が含まれていますが、今後も最高の互換性を提供します。
"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. Citrix固有のPowerShellモジュールをロードするためにasnp citrix*を実行します。
  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が格納されます。
注:
AzureポータルからサービスプリンシパルのオブジェクトIDを取得します。アプリケーションの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. 更新された 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

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

必要な役割と権限のホスト接続を検証するには、次のコマンドを実行します。
  • サブスクリプションレベルで役割と権限が割り当てられている場合:
    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\<Your-HostingConnection>
  • リソースグループレベルで役割と権限が割り当てられている場合:
    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>'

次のステップ

詳細情報