Citrix Virtual Apps and Desktops

Google Cloud環境への接続

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

注:

Google Cloud環境への接続を作成する前に、まずGoogle Cloudアカウントをリソースロケーションとして設定する必要があります。Google Cloud環境を参照してください。

接続の追加

-  [接続とリソースの作成](/ja-jp/citrix-virtual-apps-desktops/manage-deployment/connections.html)のガイダンスに従ってください。以下の説明では、ホスティング接続の設定について案内します。
  1. 管理 > 構成から、左ペインでホスティングを選択します。

  2. アクションバーで接続とリソースの追加を選択します。

  3. 接続ページで、新しい接続の作成Citrix Provisioning™ツールを選択し、次へを選択します。

    • 接続の種類。メニューからGoogle Cloudを選択します。
    • 接続名。接続の名前を入力します。
  4. リージョンページで、メニューからプロジェクト名を選択し、使用するリソースを含むリージョンを選択して、次へを選択します。

    1. ネットワークページで、リソースの名前を入力し、メニューから仮想ネットワークを選択し、サブネットを選択して、次へを選択します。リソース名は、リージョンとネットワークの組み合わせを識別するのに役立ちます。名前に(Shared)サフィックスが付いている仮想ネットワークは、共有VPCを表します。共有VPCのサブネットレベルのIAMロールを構成した場合、共有VPCの特定のサブネットのみがサブネットリストに表示されます。
  • 注:

    • リソース名には1~64文字を含めることができ、空白文字のみ、または文字\ / ; : # . * ? = < > | [ ] { } " ' ( ) ' )を含めることはできません。
    1. 概要ページで、情報を確認し、完了を選択して接続とリソースの追加ウィンドウを終了します。

接続とリソースを作成した後、作成した接続とリソースが一覧表示されます。接続を構成するには、接続を選択し、アクションバーで該当するオプションを選択します。

  • 同様に、接続の下に作成されたリソースを削除、名前変更、またはテストできます。これを行うには、接続の下のリソースを選択し、アクションバーで該当するオプションを選択します。

サービスエンドポイントURL

以下のURLにアクセスできる必要があります。

  • https://oauth2.googleapis.com
  • https://cloudresourcemanager.googleapis.com
  • https://compute.googleapis.com
  • https://storage.googleapis.com
  • https://cloudbuild.googleapis.com

Google Cloudプロジェクト

Google Cloudプロジェクトには基本的に2つの種類があります。

-  プロビジョニングプロジェクト:この場合、現在の管理者アカウントがプロジェクト内のプロビジョニングされたマシンを所有します。このプロジェクトはローカルプロジェクトとも呼ばれます。
    -  共有VPCプロジェクト:プロビジョニングプロジェクトで作成されたマシンが、共有VPCプロジェクトのVPCを使用するプロジェクト。プロビジョニングプロジェクトに使用される管理者アカウントは、このプロジェクトで限られた権限、特にVPCを使用する権限のみを持ちます。

    -  ## GCPマネージドトラフィックのセキュアな環境の作成

    -  Google CloudプロジェクトへのプライベートGoogleアクセスを許可できます。この実装により、機密データを処理するためのセキュリティが強化されます。これを実現するには、次のいずれかを実行できます。

    -  Cloud BuildサービスアカウントのVPCサービスコントロールの以下のイングレスルールを含めます。この手順を実行する場合、GCPマネージドトラフィックのセキュアな環境を作成するための以下の手順は実行しないでください。

```
Ingress Rule 1
From:
    -  Identities:
<ProjectID>@cloudbuild.gserviceaccount.com
-  Source > All sources allowed
To:
-  Projects =
All projects
Services =
Service name: All services
<!--NeedCopy--> ```

-  プライベートワーカープールを使用している場合は、`CustomProperties`に`UsePrivateWorkerPool`を追加します。プライベートワーカープールの詳細については、[プライベートプール概要](https://cloud.google.com/build/docs/private-pools/private-pools-overview)を参照してください。

GCPマネージドトラフィックのセキュアな環境を作成するための要件

GCPマネージドトラフィックのセキュアな環境を作成するための要件は次のとおりです。

-  カスタムプロパティを更新する際は、ホスティング接続がメンテナンスモードであることを確認します。
-  プライベートワーカープールを使用するには、以下の変更が必要です。
-  Citrix Cloud™サービスアカウントに、以下のIAMロールを追加します。
    -  Cloud Buildサービスアカウント
    -  Compute Instance Admin
    -  Service Account User
    -  Service Account Token Creator
    -  Cloud Build WorkerPool Owner
-  ホスティング接続の作成に使用するのと同じプロジェクトにCitrix Cloudサービスアカウントを作成します。
-  [DNS構成](https://cloud.google.com/vpc/docs/configure-private-google-access#config-domain)で説明されているように、`private.googleapis.com`および`gcr.io`のDNSゾーンを設定します。

    ![private-googleapis-comのDNSゾーン](/en-us/citrix-virtual-apps-desktops/media/private-dns-zone.png)

    ![gcr.ioのDNSゾーン](/en-us/citrix-virtual-apps-desktops/media/gcr-dns-zone.png)

-  プライベートネットワークアドレス変換(NAT)を設定するか、プライベートサービス接続を使用します。詳細については、[エンドポイントを介したGoogle APIへのアクセス](https://cloud.google.com/vpc/docs/configure-private-service-connect-apis)を参照してください。

    ![プライベートサービス接続](/en-us/citrix-virtual-apps-desktops/media//private-service-connect.png)

-  ピアリングされたVPCを使用している場合は、ピアリングされたVPCへのCloud DNSゾーンピアリングを作成します。詳細については、[ピアリングゾーンの作成](https://cloud.google.com/dns/docs/zones/peering-zones)を参照してください。

    ![ピアリングゾーンの作成](/en-us/citrix-virtual-apps-desktops/media/cloud-dns-zone-peering.png)

-  VPCサービスコントロールで、APIとVMがインターネットと通信できるようにイングレスルールを設定します。イングレスルールはオプションです。例:

    ```
    Egress Rule 1
  • From:
  • Identities:ANY_IDENTITY To: Projects =
    • All projects
    • Service = Service name: All services

      ```

プライベートワーカープールの有効化

-  プライベートワーカープールを有効にするには、ホスト接続でカスタムプロパティを次のように設定します。

-  1.  Delivery ControllerホストからPowerShellウィンドウを開くか、Remote PowerShell SDKを使用します。Remote PowerShell SDKの詳細については、[SDKとAPI](/ja-jp/citrix-daas/sdk-api.html#citrix-virtual-apps-and-desktops-remote-powershell-sdk)を参照してください。
-  1.  次のコマンドを実行します。
    1. Add-PSSnapin citrix®*
    2. cd XDHyp:\Connections\
    3. dir
  1. 接続からCustomPropertiesをメモ帳にコピーします。
  2. プロパティ設定<Property xsi:type="StringProperty" Name="UsePrivateWorkerPool" Value="True"/>を追加します。例:

    ```
    <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
    <Property xsi:type="StringProperty" Name="UsePrivateWorkerPool" Value="True"/> -  </CustomProperties>
    <!--NeedCopy--> ```
    
  3. PowerShell ウィンドウで、変更されたカスタムプロパティに変数を割り当てます。例: $customProperty = '<CustomProperties…</CustomProperties>'
      1. $gcpServiceAccount = "<ENTER YOUR SERVICE ACCOUNT EMAIL HERE>" を実行します。
  4. $gcpPrivateKey = "<ENTER YOUR SERVICE ACCOUNT PRIVATE KEY HERE AFTER REMOVING ALL INSTANCES OF \n >" を実行します。
  5. $securePassword = ConvertTo-SecureString $gcpPrivateKey -AsPlainText -Force" を実行します。
  6. 既存のホスト接続を更新するには、以下を実行します。

    Set-Item -PassThru -Path @('XDHyp:\\Connections\\<ENTER YOUR CONNECTION NAME HERE>') -SecurePassword $securePassword -UserName $gcpServiceAccount -CustomProperties $customProperty
    <!--NeedCopy-->
    

CMEK のグローバルキーとリージョンキーの指定

注:

GCP での CMEK のサポートは現在プレビュー段階です。

GCP には、顧客管理の暗号化キー (CMEK) が 2 種類あります。

-  リージョン: 同じリージョン内のリソースのみが使用できる暗号化キー。
-  グローバル: 複数のリージョンのリソースが使用できる暗号化キー。

サービスアカウントがアクセスできるすべてのプロジェクトから、グローバルまたはリージョンの顧客管理暗号化キー (CMEK) を参照して使用できます。その後、そのキーを使用して CMEK 対応の MCS マシンカタログを作成し、Set-ProvScheme コマンドを使用して既存の CMEK 対応 MCS マシンカタログを更新できます。PowerShell を使用して CMEK 対応カタログを作成する方法については、「カスタムプロパティを使用した CMEK 対応カタログの作成」を参照してください。

  • この機能には、次の 2 つのサービスアカウントに対する追加の権限が必要です。

    • ホスティング接続が作成される現在のプロジェクトのサービスアカウント。
  • 現在のプロジェクトの Compute Engine Service Agent (メールアドレス: service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com)。詳細については、「Compute Engine Service Agent」を参照してください。

サービスアカウントでは、使用する暗号キーがあるプロジェクト (共有プロジェクトなど) で次のロールを割り当てる必要があります。

-  Cloud KMS Viewer
-  Cloud KMS CryptoKey Encrypter/Decrypter

ロールを割り当てない場合は、次の権限があることを確認してください。

-  resourcemanager.projects.get
-  cloudkms.keyRings.list
-  cloudkms.keyRings.get
-  cloudkms.cryptoKeys.get
-  cloudkms.cryptoKeys.list
-  cloudkms.cryptoKeyVersions.useToDecrypt
-  cloudkms.cryptoKeyVersions.useToEncrypt

暗号化キーの一覧表示

  • PowerShell コマンドを使用して、同じプロジェクト内およびアクセス可能な他のすべてのプロジェクト内のグローバルおよびリージョンの暗号化キーを一覧表示できます。これを行うには、次の手順を実行します。

      1. Delivery Controller™ ホストまたはリモート PowerShell から PowerShell ウィンドウを開きます。
  1. コマンド asnp citrix* を実行して、Citrix 固有の PowerShell モジュールをロードします。
      1. 暗号化キーを一覧表示するには、次のコマンドを実行します。例:
    • encryptionKeys フォルダーの内容を一覧表示するには:

      ```

    • Get-ChildItem XDHyp:\HostingUnits\my-hostingunit\encryptionKeys.folder

      ```

    • 同じプロジェクト内のグローバル暗号化キーを取得するには:

       Get-Item XDHyp:\HostingUnits\my-hostingunit\encryptionKeys.folder\myglobalkeyring.globalkeyring\myglobalkey.cryptokey
       <!--NeedCopy-->
      
    • 同じプロジェクト内のリージョン暗号化キーを取得するには:

       Get-Item XDHyp:\HostingUnits\my-hostingunit\encryptionKeys.folder\regional-ring.keyring\shared-key.cryptokey
       <!--NeedCopy-->
      
    • アクセス可能な別のプロジェクト (例: myanotherproject) からグローバル暗号化キーを取得するには:

       Get-Item XDHyp:\HostingUnits\my-hostingunit\encryptionKeys.folder\myanotherproject.project\shared-global-ring.globalkeyring\shared-key.cryptokey
       <!--NeedCopy-->
      
    • アクセス可能な別のプロジェクト (例: myanotherproject) からリージョン暗号化キーを取得するには:

       Get-Item XDHyp:\HostingUnits\my-hostingunit\encryptionKeys.folder\myanotherproject .project.project\shared-uscentral.keyring\shared-uscentral-key.cryptokey
       <!--NeedCopy-->
      

注:

-  グローバルキーリングのキーリングインベントリアイテムの拡張子は `.globalkeyring` です。
-  グローバルキーリングの ID には `global` という単語が含まれています。

必要な GCP 権限

このセクションには、GCP 権限の完全なリストが含まれています。機能が正しく動作するように、このセクションに記載されている権限の完全なセットを使用してください。

注:

GCP は、2024 年 4 月 29 日以降、Cloud Build Services のデフォルトの動作とサービスアカウントの使用に変更を導入しています。詳細については、「Cloud Build Service Account Change」を参照してください。2024 年 4 月 29 日より前に Cloud Build API が有効になっている既存の Google プロジェクトは、この変更の影響を受けません。ただし、4 月 29 日以降も既存の Cloud Build Service の動作を維持したい場合は、API を有効にする前に、組織ポリシーを作成または適用して制約の適用を無効にすることができます。新しい組織ポリシーを設定した場合でも、このセクションの既存の権限と Cloud Build Service Account Change の前とマークされている項目に従うことができます。そうでない場合は、既存の権限と Cloud Build Service Account Change の後とマークされている項目に従ってください。

ホスト接続の作成

-  プロビジョニングプロジェクトで Citrix Cloud Service Account に必要な最小限の権限:

```
compute.instanceTemplates.list
compute.instances.list
compute.networks.list
compute.projects.get
compute.regions.list
compute.subnetworks.list
compute.zones.list
resourcemanager.projects.get
<!--NeedCopy--> ```

次の Google 定義ロールには、上記にリストされている権限があります。

-  Compute Admin
-  Cloud Datastore User

-  Shared VPC プロジェクトで Citrix Cloud Service Account の Shared VPC に必要な追加の権限:

```
compute.networks.list
compute.subnetworks.list
resourcemanager.projects.get
<!--NeedCopy--> ```

次の Google 定義ロールには、上記にリストされている権限があります。

-  Compute Network User
  • サービスアカウントでは、使用する暗号キーがあるプロジェクト (共有プロジェクトなど) で次のロールを割り当てる必要があります。

    • Cloud KMS Viewer
    • Cloud KMS CryptoKey Encrypter/Decrypter

    ロールを割り当てない場合は、次の権限があることを確認してください。

    • resourcemanager.projects.get
    • cloudkms.keyRings.list
    • cloudkms.keyRings.get
    • cloudkms.cryptoKeys.get
    • cloudkms.cryptoKeys.list
    • cloudkms.cryptoKeyVersions.useToDecrypt
    • cloudkms.cryptoKeyVersions.useToEncrypt

VMの電源管理

電源管理のみのカタログの場合に、プロビジョニングプロジェクト内のCitrix Cloudサービスアカウントに必要な最小限の権限:

compute.instanceTemplates.list
compute.instances.list
compute.instances.get
compute.instances.reset
compute.instances.resume
compute.instances.start
compute.instances.stop
compute.instances.suspend
compute.networks.list
compute.projects.get
compute.regions.list
compute.subnetworks.list
compute.zones.list
resourcemanager.projects.get
compute.zoneOperations.get
<!--NeedCopy-->

以下のGoogle定義ロールには、上記にリストされている権限があります:

-  Compute管理者
  • Cloud Datastoreユーザー

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

  • プロビジョニングプロジェクト内のCitrix Cloudサービスアカウントに必要な最小限の権限:

    ``` cloudbuild.builds.create cloudbuild.builds.get cloudbuild.builds.list compute.acceleratorTypes.list compute.diskTypes.get compute.diskTypes.list compute.disks.create compute.disks.createSnapshot compute.disks.delete

    • compute.disks.get
    • compute.disks.list compute.disks.setLabels
    • compute.disks.use
    • compute.disks.useReadOnly compute.firewalls.create compute.firewalls.delete compute.firewalls.list compute.globalOperations.get compute.images.create compute.images.delete compute.images.get compute.images.list compute.images.setLabels compute.images.useReadOnly compute.instanceTemplates.create compute.instanceTemplates.delete compute.instanceTemplates.get compute.instanceTemplates.list compute.instanceTemplates.useReadOnly compute.instances.attachDisk compute.instances.create compute.instances.delete compute.instances.detachDisk compute.instances.get compute.instances.getSerialPortOutput compute.instances.list compute.instances.reset compute.instances.resume compute.instances.setDeletionProtection compute.instances.setLabels compute.instances.setMetadata compute.instances.setServiceAccount compute.instances.setTags compute.instances.start compute.instances.stop compute.instances.suspend compute.machineTypes.get compute.machineTypes.list compute.networks.list compute.networks.updatePolicy compute.nodeGroups.list compute.nodeTemplates.get compute.projects.get compute.regions.list compute.snapshots.create compute.snapshots.delete compute.snapshots.list
    • compute.snapshots.get
    • compute.snapshots.setLabels

    • compute.snapshots.useReadOnly
  • compute.subnetworks.get compute.subnetworks.list compute.subnetworks.use compute.zoneOperations.get compute.zoneOperations.list compute.zones.get compute.zones.list iam.serviceAccounts.actAs
    • resourcemanager.projects.get
    • storage.buckets.create
    • storage.buckets.delete storage.buckets.get
    • storage.buckets.list
    • storage.buckets.update storage.objects.create storage.objects.delete storage.objects.get storage.objects.list compute.networks.get compute.resourcePolicies.use

    ```

    • 以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Compute管理者
    • Storage管理者
    • Cloud Build編集者
    • サービスアカウントユーザー
    • Cloud Datastoreユーザー
  • 共有VPCプロジェクトからVPCとサブネットワークを使用してホスティングユニットを作成するために、共有VPCプロジェクト内のCitrix Cloudサービスアカウントの共有VPCに必要な追加の権限:

     compute.firewalls.list
     compute.networks.list
     compute.projects.get
     compute.regions.list
     compute.subnetworks.get
     compute.subnetworks.list
     compute.subnetworks.use
     compute.zones.list
     resourcemanager.projects.get
     <!--NeedCopy-->
    

    以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Computeネットワークユーザー
    • Cloud Datastoreユーザー

    準備指示ディスクをMCSにダウンロードする際に必要な最小限の権限:

    • (Cloud Buildサービスアカウント変更前): これらの権限をプロビジョニングプロジェクト内のCloud Buildサービスアカウントに割り当てます。
    • (Cloud Buildサービスアカウント変更後): これらの権限をプロビジョニングプロジェクト内のCloud Computeサービスアカウントに割り当てます。
     compute.disks.create
     compute.disks.delete
     compute.disks.get
     compute.disks.list
     compute.disks.setLabels
     compute.disks.use
     compute.disks.useReadOnly
     compute.images.get
     compute.images.list
     compute.images.useReadOnly
     compute.instances.create
     compute.instances.delete
     compute.instances.get
     compute.instances.getSerialPortOutput
     compute.instances.list
     compute.instances.setLabels
     compute.instances.setMetadata
     compute.instances.setServiceAccount
     compute.machineTypes.list
     compute.networks.get
     compute.networks.list
     compute.projects.get
     compute.subnetworks.list
     compute.subnetworks.use
     compute.subnetworks.useExternalIp
     compute.zoneOperations.get
     compute.zones.list
     iam.serviceAccounts.actAs
     logging.logEntries.create
     pubsub.topics.publish
     resourcemanager.projects.get
     source.repos.get
     source.repos.list
     storage.buckets.create
     storage.buckets.get
     storage.buckets.list
     storage.objects.create
     storage.objects.delete
     storage.objects.get
     storage.objects.list
     <!--NeedCopy-->
    

    以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Cloud Buildサービスアカウント (Cloud Buildサービスアカウント変更後はCloud Computeサービスアカウント)
    • Computeインスタンス管理者
    • サービスアカウントユーザー
  • 準備指示ディスクをMCSにダウンロードする際に、Google Cloud Buildサービスによってプロビジョニングプロジェクト内のCloud Computeサービスアカウントに必要とされる最小限の権限:

     resourcemanager.projects.get
     storage.objects.create
     storage.objects.get
     storage.objects.list
     <!--NeedCopy-->
    

    以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Computeネットワークユーザー
    • Storageアカウントユーザー
    • Cloud Datastoreユーザー

    準備指示ディスクをMCSにダウンロードする際に、共有VPCに必要な追加の権限:

    • (Cloud Buildサービスアカウント変更前): これらの権限をプロビジョニングプロジェクト内のCloud Buildサービスアカウントに割り当てます。
    • (Cloud Buildサービスアカウント変更後): これらの権限をプロビジョニングプロジェクト内のCloud Computeサービスアカウントに割り当てます。
     compute.firewalls.list
     compute.networks.list
     compute.subnetworks.list
     compute.subnetworks.use
     resourcemanager.projects.get
     <!--NeedCopy-->
    

    以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Computeネットワークユーザー
    • Storageアカウントユーザー
    • Cloud Datastoreユーザー
  • プロビジョニングプロジェクト内のCitrix CloudサービスアカウントのCloud Key Management Service (KMS) に必要な追加の権限:

     cloudkms.cryptoKeys.get
     cloudkms.cryptoKeys.list
     cloudkms.keyRings.get
     cloudkms.keyRings.list
     <!--NeedCopy-->
    

    以下のGoogle定義ロールには、上記にリストされている権限があります:

    • Compute KMS閲覧者

一般的な権限

以下は、MCSでサポートされているすべての機能について、プロビジョニングプロジェクト内のCitrix Cloudサービスアカウントの権限です。これらの権限は、将来にわたって最高の互換性を提供します:

resourcemanager.projects.get
cloudbuild.builds.create
cloudbuild.builds.get
cloudbuild.builds.list
compute.acceleratorTypes.list
compute.diskTypes.get
compute.diskTypes.list
compute.disks.create
compute.disks.createSnapshot
compute.disks.delete
compute.disks.get
compute.disks.setLabels
compute.disks.use
compute.disks.useReadOnly
compute.firewalls.create
compute.firewalls.delete
compute.firewalls.list
compute.globalOperations.get
compute.images.create
compute.images.delete
compute.images.get
compute.images.list
compute.images.setLabels
compute.images.useReadOnly
compute.instanceTemplates.create
compute.instanceTemplates.delete
compute.instanceTemplates.get
compute.instanceTemplates.list
compute.instanceTemplates.useReadOnly
compute.instances.attachDisk
compute.instances.create
compute.instances.delete
compute.instances.detachDisk
compute.instances.get
compute.instances.getSerialPortOutput
compute.instances.list
compute.instances.reset
compute.instances.resume
compute.instances.setDeletionProtection
compute.instances.setLabels
compute.instances.setMetadata
compute.instances.setTags
compute.instances.start
compute.instances.stop
compute.instances.suspend
compute.instances.update
compute.instances.updateAccessConfig
compute.instances.updateDisplayDevice
compute.instances.updateSecurity
compute.instances.updateShieldedInstanceConfig
compute.instances.updateShieldedVmConfig
compute.machineTypes.get
compute.machineTypes.list
compute.networks.list
compute.networks.updatePolicy
compute.nodeGroups.list
compute.nodeTemplates.get
compute.projects.get
compute.regions.list
compute.snapshots.create
compute.snapshots.delete
compute.snapshots.list
compute.snapshots.get
compute.snapshots.setLabels
compute.snapshots.useReadOnly
compute.subnetworks.get
compute.subnetworks.list
compute.subnetworks.use
compute.subnetworks.useExternalIp
compute.zoneOperations.get
compute.zoneOperations.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
storage.buckets.create
storage.buckets.delete
storage.buckets.get
storage.buckets.list
storage.buckets.update
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
cloudkms.cryptoKeys.get
cloudkms.cryptoKeys.list
cloudkms.keyRings.get
cloudkms.keyRings.list
compute.disks.list
compute.instances.setServiceAccount
compute.networks.get
compute.networks.use
compute.networks.useExternalIp
iam.serviceAccounts.actAs
compute.resourcePolicies.use
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToEncrypt
<!--NeedCopy-->

次のステップ

詳細情報

Google Cloud環境への接続