Citrix DaaS

与 Google Cloud 环境的连接

创建和管理连接和资源介绍了用于创建连接的向导。以下信息涵盖了特定于 Google Cloud 环境的详细信息。

注意:

在创建与 Google Cloud 环境的连接之前,需要先完成将 Google Cloud 帐户设置为资源位置的过程。查看 Google Cloud 虚拟化环境

添加连接

在完整配置界面中,按照创建和管理连接和资源中的指导进行操作。以下说明将指导您完成设置托管连接的过程:

  1. 管理 > 完整配置中,选择左侧窗格中的托管
  2. 在操作栏中选择添加连接和资源
  3. 连接页面上,选择创建新连接Citrix Provisioning 工具,然后选择下一步

    • 区域名称。选择您希望主机资源驻留的区域(等同于资源位置)。当您创建资源位置并向其中添加 Cloud Connector 时,会自动创建区域。有关详细信息,请参阅区域
    • 连接类型。从菜单中选择 Google 云端平台
    • 服务帐户密钥。导入您的 Google 凭据文件 (.json) 中包含的密钥。您可以粘贴凭据文件中的密钥,也可以浏览到凭据文件。要粘贴密钥,请执行以下操作:
      1. 找到您的凭据文件
      2. 使用记事本(或任何文本编辑器)打开文件
      3. 复制内容。
      4. 返回“连接”页面,选择“添加密钥”,粘贴内容,然后选择“完成”。
    • 服务帐户 ID。该字段会自动填充来自服务帐户密钥的信息。
    • 连接名称。键入连接的名称。
    • 通过 Citrix Cloud Connector 路由流量。要通过可用的 Citrix Cloud Connector 路由 API 请求,请选中此复选框。您也可以选中“启用 Google Cloud Build 以使用专用池”复选框以获得额外的安全保障。

      或者,您可以使用 PowerShell 启用此功能。有关详细信息,请参阅为 GCP 管理的流量创建安全的环境

    注意:

    仅当您的部署中有活动的 Citrix Cloud Connector 时,此选项才可用。目前,Connector Appliance 不支持此功能。

    • 使用创建虚拟机。选择创建虚拟机的方法。
  4. 区域页面上,从菜单中选择项目名称,选择包含要使用的资源的区域,然后选择下一步

  5. 网络网络上,键入资源的名称,从菜单中选择虚拟网络,选择子集,然后选择下一步。资源名称可帮助您识别此区域和网络的组合名称后面附加了 (Shared) 后缀的虚拟网络表示共享 VPC。如果您为共享 VPC 配置了子网级别的 IAM 角色,则子网列表中仅显示共享 VPC 的特定子网。

    注意:

    • 资源名称可以包含 1-64 个字符,不能仅包含空格或字符 \ / ; : # . * ? = < > | [ ] { } " ' ( ) ' )
  6. 摘要页面上,确认信息,然后选择完成退出添加连接和资源窗口。

创建连接和资源后,将列出您创建的连接和资源。要配置连接,请选择该连接,然后选择操作栏中的适用选项。

同样,可以删除、重命名或测试在连接下创建的资源。为此,请选择连接下的资源,然后选择操作栏中的适用选项。

为 GCP 托管流量创建安全的环境

您只能允许 Google 私密访问您的 Google Cloud 项目。这种实现增强了处理敏感数据的安全性。为此,您需要:

  1. 在要执行 VPC 服务控制的 VPC 中安装 Cloud Connector。有关详细信息,请参阅 VPC 服务控制
  2. 如果是 Citrix Cloud 部署,则可以在 CustomProperties 中添加 ProxyHypervisorTrafficThroughConnector。如果您使用的是专用工作人员池,请将 UsePrivateWorkerPool 加入到 CustomProperties 中。有关专用工作人员池的信息,请参阅专用池概述

注意:

目前,Connector Appliance 不支持此功能。

为 GCP 管理的流量创建安全环境的要求

为 GCP 托管流量创建安全环境的要求如下:

  • 更新自定义属性时,请确保托管连接处于维护模式。
  • 要使用专用工作程序池,需要进行以下更改:
    • 对于 Citrix Cloud 服务帐户,请添加以下 IAM 角色:
      • 云构建服务帐户
      • 计算实例管理员
      • 服务帐户用户
      • 服务帐户令牌创建者
      • Cloud Build WorkerPool 所有者
    • 在用于创建托管连接的同一项目中创建 Citrix Cloud 服务帐户。
    • 按照 DNS 配置中所述为 private.googleapis.comgcr.io 设置 DNS 区域。

      private-googleapis-com 的 DNS 区域

      gcr.io 的 DNS 区域

    • 设置专用网络地址转换 (NAT) 或使用专用服务连接。有关详细信息,请参阅通过端点访问 Google API

      专用服务连接

    • 如果使用对等 VPC,请创建一个与对等 VPC 对等的 Cloud DNS 区域。有关详细信息,请参阅创建对等区域

      创建对等区域

    • 在 VPC 服务控制中,设置出口规则以便 API 与 VM 可以与 Internet 通信。入口规则为选填。例如:

       Egress Rule 1
       From:
       Identities:ANY_IDENTITY
       To:
       Projects =
       All projects
       Service =
       Service name: All services
       <!--NeedCopy-->
      

启用代理

要启用代理,请在主机连接上设置自定义属性,如下所示:

  1. 从Delivery Controller 主机打开 PowerShell 窗口或使用远程 PowerShell SDK。有关远程 PowerShell SDK 的详细信息,请参阅 SDK 和 API
  2. 运行以下命令:

    1. Add-PSSnapin citrix*
    2. cd XDHyp:\Connections\
    3. dir
  3. 将连接中的 CustomProperties 复制到记事本。
  4. 按如下方式附加属性设置:

    • 如果是云部署(使用公共池):将属性设置 <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True"/> 附加到 CustomProperties 以启用代理。例如:

       <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
       <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True"/>
       </CustomProperties>
       <!--NeedCopy-->
      

      允许在 VPC 服务外围使用 Cloud Build 服务帐户的入口规则。例如:

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

      有关 VPC 服务边界的信息,请参阅服务外围详细信息和配置

    • 如果是云部署中的专用工作线程池,请将属性设置 <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True"/><Property xsi:type="StringProperty" Name="UsePrivateWorkerPool" Value="True"/> 附加到 CustomProperties 以启用代理。例如:

       <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
       <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True"/>
       <Property xsi:type="StringProperty" Name="UsePrivateWorkerPool" Value="True"/>
       </CustomProperties>
       <!--NeedCopy-->
      
  5. 在 PowerShell 窗口中,为修改后的自定义属性分配一个变量。例如: $customProperty = '<CustomProperties…</CustomProperties>'
  6. 运行 $gcpServiceAccount = "<ENTER YOUR SERVICE ACCOUNT EMAIL HERE>"
  7. 运行 $gcpPrivateKey = "<ENTER YOUR SERVICE ACCOUNT PRIVATE KEY HERE AFTER REMOVING ALL INSTANCES OF \n >"
  8. 运行 $securePassword = ConvertTo-SecureString $gcpPrivateKey -AsPlainText -Force
  9. 运行以下命令更新现有的主机连接:

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

所需的 GCP 权限

本部分包含 GCP 权限的完整列表。使用本部分中给出的完整权限集以使该功能正常运行。

创建主机连接

  • 预配项目中的 Citrix Cloud Service 帐户所需的最低权限:

     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 定义的角色具有上面列出的权限:

    • 计算管理员
    • 云数据存储用户
  • 共享 VPC 项目中 Citrix Cloud Service 帐户的共享 VPC 所需的额外权限:

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

    下列 Google 定义的角色具有上面列出的权限:

    • 计算网络用户

VM 的电源管理

如果是仅限电源管理的目录,则在 Provisioning 项目中 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 定义的角色具有上面列出的权限:

  • 计算管理员
  • 云数据存储用户

创建、更新或删除 VM

  • 预配项目中的 Citrix Cloud Service 帐户所需的最低权限:

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

    下列 Google 定义的角色具有上面列出的权限:

    • 计算管理员
    • 存储管理员
    • 云构建编辑者
    • 服务帐户用户
    • 云数据存储用户
  • 共享 VPC 项目中的 Citrix Cloud Service 帐户的共享 VPC 需要额外的权限,才能使用共享 VPC 项目中的 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 定义的角色具有上面列出的权限:

    • 计算网络用户
    • 云数据存储用户
  • 将准备说明磁盘下载到 MCS 时,Google Cloud Build Service 要求的预配项目中的 Cloud Build Service 帐户所需的最低权限:

     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 定义的角色具有上面列出的权限:

    • 云构建服务帐户
    • 计算实例管理员
    • 服务帐户用户
  • 将准备说明磁盘下载到 MCS 时,Google Cloud Build Service 要求的预配项目中 Cloud Compute Service 帐户所需的最低权限:

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

    下列 Google 定义的角色具有上面列出的权限:

    • 计算网络用户
    • 存储帐户用户
    • 云数据存储用户
  • 将准备说明磁盘下载到 MCS 时,Google Cloud Build 服务要求在预配项目中为 Cloud Build Service 帐户提供共享 VPC 所需的额外权限:

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

    下列 Google 定义的角色具有上面列出的权限:

    • 计算网络用户
    • 存储帐户用户
    • 云数据存储用户
  • 预配项目中 Citrix Cloud Service 帐户的云密钥管理服务 (KMS) 所需的其他权限:

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

    下列 Google 定义的角色具有上面列出的权限:

    • 计算 KMS 查看器

一般权限

下面是预配项目中 Citrix Cloud Service 帐户对 MCS 中支持的所有功能的权限。这些权限提供了未来的最佳兼容性:

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

下一步的去向

更多信息

与 Google Cloud 环境的连接