Microsoft Azureへの接続
接続とリソースの作成および管理では、接続を作成するウィザードについて説明しています。以下の情報は、Azure Resource Managerクラウド環境に固有の詳細を扱っています。
注:
Microsoft Azureへの接続を作成する前に、Azureアカウントをリソースの場所として設定を完了する必要があります。Microsoft Azure Resource Managerクラウド環境を参照してください。
-
サービスプリンシパルと接続の作成
-
接続を作成する前に、接続がAzureリソースにアクセスするために使用するサービスプリンシパルを設定する必要があります。接続を作成する方法は2つあります。
- Web Studioを使用してサービスプリンシパルと接続を同時に作成する
-
以前に作成したサービスプリンシパルを使用して接続を作成する
-
このセクションでは、以下のタスクを完了する方法について説明します。
- Web Studioを使用してサービスプリンシパルと接続を作成する
- PowerShellを使用してサービスプリンシパルを作成する
- Azureでアプリケーションシークレットを取得する
-
考慮事項
- 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組み込みロールを参照してください
接続とリソースの追加ウィザードを使用して、サービスプリンシパルと接続を同時に作成します。
-
接続ページで、新しい接続の作成、Microsoft Azure接続タイプ、およびAzure環境を選択します。
-
- 仮想マシンを作成するために使用するツールを選択し、次へを選択します。
-
- 接続の詳細ページで、AzureサブスクリプションIDと接続の名前を入力します。サブスクリプションIDを入力すると、新規作成ボタンが有効になります。
-
注:
接続名には1~64文字を含めることができ、空白のみ、または文字
\/;:#.*?=<>|[]{}"'()'を含めることはできません。
-
- 新規作成を選択し、Microsoft Entraアカウントのユーザー名とパスワードを入力します。
- サインインを選択します。
- 同意を選択して、Citrix Virtual Apps and Desktops™にリストされた権限を付与します。Citrix Virtual Apps and Desktopsは、指定されたユーザーに代わってAzureリソースを管理できるサービスプリンシパルを作成します。
- 同意を選択すると、ウィザードの接続ページに戻ります。
-
注:
-
Azureへの認証に成功し、必要な権限の付与に同意すると、新規作成ボタンと既存の使用ボタンは表示されなくなります。「接続成功」というテキストが緑色のチェックマークとともに表示され、Azureサブスクリプションへの接続が成功したことを示します。
-
接続の詳細ページで、次へを選択します。
注:
Azureに正常に認証し、必要な権限の付与に同意するまで、次のページに進むことはできません。
-
接続のリソースを構成します。リソースはリージョンとネットワークで構成されます。
- リージョンページで、リージョンを選択します。
-
ネットワークページで、以下を実行します。
- リージョンとネットワークの組み合わせを識別するのに役立つ1~64文字のリソース名を入力します。リソース名には空白のみ、または文字
\/;:#.*?=<>|[]{}"'()'を含めることはできません。 - 仮想ネットワーク/リソースグループのペアを選択します。(同じ名前の仮想ネットワークが複数ある場合、ネットワーク名とリソースグループをペアにすることで一意の組み合わせが提供されます。)前のページで選択したリージョンに仮想ネットワークがない場合は、そのページに戻り、仮想ネットワークがあるリージョンを選択します。
- リージョンとネットワークの組み合わせを識別するのに役立つ1~64文字のリソース名を入力します。リソース名には空白のみ、または文字
-
概要ページで、設定の概要を確認し、完了を選択してセットアップを完了します。
アプリケーションIDの表示
接続を作成した後、その接続がAzureリソースにアクセスするために使用するアプリケーションIDを表示できます。
接続とリソースの追加リストで、接続を選択して詳細を表示します。詳細タブにアプリケーション ID が表示されます。
your-key-vault-name
サービスプリンシパルの作成 (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-
- サービスプリンシパルを作成する Azure Resource Manager サブスクリプションを選択します。
-
Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription -
- AD テナントにアプリケーションを作成します。
$AzureADApplication = New-AzADApplication -DisplayName $ApplicationName-
- サービスプリンシパルの作成
```
- 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
```
-
-
サービスプリンシパルへのロールの割り当て
``` - Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"```
-
- PowerShellコンソールの出力ウィンドウからApplicationIdをメモします。ホスト接続を作成する際に、このIDを指定します。
-
Azureでのアプリケーションシークレットの取得
- 既存のサービスプリンシパルを使用して接続を作成するには、まずAzureポータルでサービスプリンシパルのアプリケーションIDとシークレットを取得する必要があります。
- 詳細な手順は次のとおりです。
- Web StudioまたはPowerShellを使用して、アプリケーションIDを取得します。
- Azureポータルにサインインします。
-
- Azureで、Microsoft Entra IDを選択します。
-
- Microsoft Entra IDのアプリの登録から、アプリケーションを選択します。
-
-
証明書とシークレットに移動します。
-
- クライアントシークレットをクリックします。
-
-
証明書とシークレットに移動します。
-
既存のサービスプリンシパルを使用した接続の作成
サービスプリンシパルが既にある場合は、それを使用してWeb Studioで接続を作成できます。
次の項目を準備してください。
- SubscriptionId
- ActiveDirectoryID (テナントID)
- アプリケーションID
-
アプリケーションシークレット
詳細については、「Azureでのアプリケーションシークレットの取得」を参照してください。
- シークレットの有効期限
詳細な手順は次のとおりです。
接続とリソースの追加ウィザードで:
-
- 接続ページで、新しい接続の作成、Microsoft Azure接続タイプ、およびAzure環境を選択します。
- 仮想マシンの作成に使用するツールを選択し、次へを選択します。
-
- 接続の詳細ページで、AzureサブスクリプションIDと接続の名前を入力します。
注:
接続名には1~64文字を含めることができ、空白のみ、または文字
\/;:#.*?=<>|[]{}"'()'を含めることはできません。
-
既存を使用を選択します。既存のサービスプリンシパルの詳細ウィンドウで、既存のサービスプリンシパルに対して次の設定を入力します。詳細を入力すると、保存ボタンが有効になります。保存を選択します。有効な詳細情報を提供するまで、このページから先に進むことはできません。
- サブスクリプション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}です。
- 認証URL:
- 保存を選択すると、接続の詳細ページに戻ります。次へを選択して次のページに進みます。
-
接続のリソースを構成します。リソースには、リージョンとネットワークが含まれます。
- リージョンページで、リージョンを選択します。
-
ネットワークページで、次の操作を行います。
- リージョンとネットワークの組み合わせを識別するために、1~64文字のリソース名を入力します。リソース名には空白のみ、または文字
\/;:#.\*?=<>|\[]{}\"'\()'を含めることはできません。 - 仮想ネットワーク/リソースグループのペアを選択します。(同じ名前の仮想ネットワークが複数ある場合、ネットワーク名とリソースグループをペアにすることで一意の組み合わせが提供されます。)前のページで選択したリージョンに仮想ネットワークがない場合は、そのページに戻り、仮想ネットワークがあるリージョンを選択します。
- リージョンとネットワークの組み合わせを識別するために、1~64文字のリソース名を入力します。リソース名には空白のみ、または文字
-
- 概要ページで、設定の概要を確認し、完了を選択してセットアップを完了します。
サービスプリンシパルと接続の管理
このセクションでは、サービスプリンシパルと接続を管理する方法について詳しく説明します。
- Azureスロットリング設定の構成
- Azureでのイメージ共有の有効化
- Web Studioを使用した接続への共有テナントの追加
- PowerShellを使用したイメージ共有の実装
- アプリケーションシークレットとシークレットの有効期限の管理
Azureスロットリング設定の構成
Azure Resource Managerは、サブスクリプションとテナントのリクエストをスロットリングし、プロバイダーの特定のニーズに合わせて定義された制限に基づいてトラフィックをルーティングします。詳細については、Microsoftサイトの「Resource Manager要求のスロットリング」を参照してください。サブスクリプションとテナントには制限があり、多数のマシンを管理すると問題が発生する可能性があります。たとえば、多数のマシンを含むサブスクリプションでは、電源操作に関連するパフォーマンスの問題が発生する可能性があります。
ヒント:
詳細については、「Machine Creation ServicesによるAzureパフォーマンスの向上」を参照してください。
これらの問題を軽減するために、MCSの内部スロットリングを削除して、Azureから利用可能なリクエストクォータをより多く使用できます。
大規模なサブスクリプション(たとえば、1,000台のVMを含むサブスクリプション)でVMの電源をオンまたはオフにする場合、次の最適な設定をお勧めします。
-
絶対同時操作数: 500
- 1分あたりの最大新規操作数: 2000
-
最大同時操作数: 500
- 指定された Azure 接続の Azure 操作を構成するには、Web Studio を使用します。
- Web Studio で、左ペインの [ホスティング] を選択します。
- 接続を選択します。
- [接続の編集] ウィザードで、[詳細設定] を選択します。
- [詳細設定] ページで、構成オプションを使用して、同時アクションの数、1 分あたりの最大新規アクション数、および追加の接続オプションを指定します。

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 のアプリケーション登録を作成します。詳細については、「アプリ登録を作成する」を参照してください。
-
ブラウザーを使用してサインインを要求することで、テナント 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 にアクセスを許可する」を参照してください。
-
アプリケーションにテナント 2 のリソースグループへのアクセスを許可します。テナント 2 としてサインインし、ギャラリーイメージを持つリソースグループへのアプリケーション登録アクセスを許可します。詳細については、「テナント間で要求を認証する」を参照してください。
PowerShell コマンドを使用して別のテナントのイメージからカタログを作成するには:
Web Studio を使用した接続への共有テナントの追加
Web Studio でマシンカタログを作成または更新する際、異なる Azure テナントおよびサブスクリプションからの共有イメージ (Azure Compute Gallery を介して共有) を選択できます。この機能では、関連するホスト接続の共有テナントおよびサブスクリプション情報を提供する必要があります。
注:
テナント間でイメージ共有を有効にするために、Azure で必要な設定を構成していることを確認してください。詳細については、「テナント間でのイメージ共有」を参照してください。
-
接続に対して次の手順を実行します。
-
- Web Studio で、左ペインの [ホスティング] を選択します。
-
接続を選択し、アクションバーで [接続の編集] を選択します。

-
[共有テナント] で、次の操作を行います。
- 接続のサブスクリプションに関連付けられているアプリケーション ID とアプリケーションシークレットを指定します。Citrix Virtual Apps™ and Desktops はこの情報を使用して Microsoft Entra ID に対して認証を行います。
- Azure Compute Gallery を接続のサブスクリプションと共有するテナントとサブスクリプションを追加します。テナントごとに最大 8 つの共有テナントと 8 つのサブスクリプションを追加できます。
-
完了したら、[適用] を選択して変更を適用し、ウィンドウを開いたままにするか、[OK] を選択して変更を適用し、ウィンドウを閉じます。
PowerShell を使用したイメージ共有の実装
このセクションでは、PowerShell を使用してイメージを共有するプロセスについて説明します。
別のサブスクリプションからのイメージ選択
PowerShellコマンドを使用してMCSカタログを作成および更新するために、同じAzureテナント内の別の共有サブスクリプションに属するAzure Compute Galleryのイメージを選択できます。
- ホスティングユニットのルートフォルダーに、Citrixは
sharedsubscriptionという新しい共有サブスクリプションフォルダーを作成します。 -
テナント内のすべての共有サブスクリプションを一覧表示します。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder" <!--NeedCopy--> -
1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription" <!--NeedCopy--> -
リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup" <!--NeedCopy--> -
ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery" <!--NeedCopy--> -
1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。
Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition" <!--NeedCopy-->-
- 次の要素を使用して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のイメージを選択できます。
- ホスティングユニットのルートフォルダーに、Citrixは
sharedsubscriptionという新しい共有サブスクリプションフォルダーを作成します。 -
すべての共有サブスクリプションを一覧表示します。
Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder <!--NeedCopy--> -
1つの共有サブスクリプションを選択し、その共有サブスクリプションのすべての共有リソースグループを一覧表示します。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription <!--NeedCopy--> -
リソースグループを選択し、そのリソースグループのすべてのギャラリーを一覧表示します。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup <!--NeedCopy--> -
ギャラリーを選択し、そのギャラリーのすべてのイメージ定義を一覧表示します。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery <!--NeedCopy--> -
1つのイメージ定義を選択し、そのイメージ定義のすべてのイメージバージョンを一覧表示します。
Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition <!--NeedCopy--> -
次の要素を使用してMCSカタログを作成および更新します。
- リソースグループ
- ギャラリー
- ギャラリーイメージ定義
- ギャラリーイメージバージョン
Remote PowerShell SDKを使用してカタログを作成する方法については、https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/を参照してください。
アプリケーションシークレットとシークレット有効期限の管理
接続のアプリケーションシークレットは、有効期限が切れる前に必ず変更してください。シークレットキーの有効期限が切れる14日前から、ホスティングノードの特定のホスト接続に警告アイコンが表示されます。ただし、シークレットキーの有効期限が切れると、エラーが発生します。
Azureでのアプリケーションシークレットの作成
Azure portal を介して接続用のアプリケーションシークレットを作成できます。
- Microsoft Entra ID を選択します。
- Microsoft Entra ID の アプリの登録 から、アプリケーションを選択します。
- 証明書とシークレット に移動します。
- クライアントシークレット > 新しいクライアントシークレット をクリックします。
-
シークレットの説明を入力し、期間を指定します。完了したら、追加 を選択します。
注記:
クライアントシークレットは後で取得できないため、必ず保存してください。
- クライアントシークレットの値と有効期限をコピーします。
- Web Studio で、対応する接続を編集し、アプリケーションシークレット および シークレットの有効期限 フィールドの内容をコピーした値に置き換えます。
シークレットの有効期限の変更
Web Studio を使用して、使用中のアプリケーションシークレットの有効期限を追加または変更できます。
注記:
シークレットキーの有効期限が切れる14日前から、ホスティング ノードの特定のホスト接続に警告アイコンが表示されます。
-
- 接続とリソースの追加 ウィザードで、接続を右クリックし、接続の編集 をクリックします。
- 接続プロパティ ページで、シークレットの有効期限 をクリックして、使用中のアプリケーションシークレットの有効期限を追加または変更します。
事前作成されたネットワークセキュリティグループの使用
- 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 ネットワークセキュリティグループを追加するには、ホスティングユニットでカスタムプロパティを次のように設定します。
- Remote PowerShell SDK を使用して PowerShell ウィンドウを開きます。
-
次のコマンドを実行します。
Add-PSSnapin citrix*. cd XDHyp:\HostingUnits\ Dir <!--NeedCopy--> -
詳細を取得するホスティングユニットを選択します。
Get-Item "XDHyp:\HostingUnits\<hostingunitname>" <!--NeedCopy--> -
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--> -
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--> -
\$cred = Get-Credentialを実行します。プロンプトが表示されたら、接続資格情報を入力します。資格情報は Azure アプリケーションIDとシークレットです。 -
次のコマンドを実行します。
Set-Item -PSPath XDHyp:\HostingUnits\<hostingunitname> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password <!--NeedCopy-->重要:
SubscriptionId が見つからないというメッセージが表示された場合は、カスタムプロパティ内のすべての二重引用符 (”) をバッククォートの後に二重引用符 (`”) に置き換えてください。
-
dirを実行して、更新されたCustomProperties設定を確認します。
注記:
更新が反映されるまでに1分以上かかります。
ネットワークセキュリティグループの詳細の取得
ネットワークセキュリティグループの詳細を取得するには、まずネットワークセキュリティグループを含むリソースグループを取得し、次にリソースグループ名に基づいてネットワークセキュリティグループを取得します。
-
ネットワークセキュリティグループを含むリソースグループを取得します。例:
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 5 -AdditionalDataFilter '{"containedresourcetypes": ["networksecuritygroup"]}' <!--NeedCopy--> -
リソースグループ名に基づいてネットワークセキュリティグループを取得します。例:
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--> -
skipを使用してページを直接指定して取得し、特定のリソースを持つリソースコンテナを検索するためにフィルタリングします。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を考慮せずにすべてのリソースグループを取得します。
Azure Sovereign Airgapクラウド環境への接続
Azure Sovereign Airgapクラウド環境は、分離されたネットワークドメイン上に存在する必要がある最高機密のワークロードに適しています。ホスト接続の作成時にカスタムプロパティ DisableInstanceDiscovery を使用して、Azure Sovereign Airgapクラウド環境に接続できます。
```
Get-HypInventoryItem -LiteralPath "XDHyp:\HostingUnits\ctx04con01unit01" -ResourceType resourceGroup -MaxRecords 50 -AdditionalDataFilter '{"containedresourcetypes": ["manageddisk", "snapshot", "imageversion", "storageaccount"]}' -Force $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”,
```
-
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”,
```
-
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マシンカタログを作成および管理するために実行できるアクションまたはタスク。
- 修正措置: 管理者がユーザーの不足している権限の不一致を解決するために実行する必要がある手順。
- 不足している権限: カテゴリごとの不足している権限のリスト。
権限を検証するには、次の手順を実行します:
- Azureへのホスト接続を作成します
- Delivery Controller™ホストからPowerShellウィンドウを開きます
-
asnp citrix*を実行して、Citrix固有のPowerShellモジュールをロードします -
接続をテストするために必要な権限があるかどうかを確認するには、次のコマンドを実行します
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
-
権限を確認するために必要な不足している権限を追加した後、さまざまなカテゴリで権限があるかどうかを確認するには、次のコマンドを実行します
例:
より高いレベルの認証が必要なサブスクリプションレベルで接続をテストするには:
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 をカスタムプロパティとして追加します。手順は次のとおりです。
- Remote PowerShell SDK を使用して PowerShell ウィンドウを開きます。
-
次のコマンドを実行します。
Add-PSSnapin citrix*. cd XDHyp:\Connections\ dir <!--NeedCopy--> - 接続から
CustomPropertiesをメモ帳にコピーし、プロパティ設定<Property xsi:type="StringProperty" Name="AuthenticationObjectId" Value="Object ID of the service principal"/>をCustomPropertiesに追加します。 - PowerShell ウィンドウで、変更されたカスタムプロパティに変数名を割り当てます。
-
$cred = Get-Credentialを実行します。プロンプトが表示されたら、接続資格情報を入力します。資格情報は Azure アプリケーション ID とシークレットです。 -
Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.passwordを実行します。 -
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 <!--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-->
次のステップ
- 初期展開プロセス中の場合は、マシンカタログの作成を参照してください。
- Azure 固有の情報については、Microsoft Azure カタログの作成を参照してください。