配置 VPC Service Controls 和专用集群

本页面介绍了 VPC Service Controls 和专用集群的工作原理,以及如何在 Cloud Workstations 中设置它们。

VPC Service Controls

VPC Service Controls 可为工作站提供额外的安全保护,有助于降低数据渗漏的风险。使用 VPC Service Controls,您可以将项目添加到服务边界,从而帮助防止资源和服务受到源自边界外部的请求的影响。

以下是在 VPC 服务边界中使用 Cloud Workstations 的要求:

  • 为了帮助保护 Cloud Workstations,每当您限制 Cloud Workstations API 时,都必须限制服务边界中的 Compute Engine API。
  • 确保可从您的服务边界内的 VPC 访问 Google Cloud Storage API 和 Artifact Registry API。如需将映像拉取到工作站,必须确保这一点。 我们还建议您允许从服务边界内的 VPC 访问 Cloud Logging API 和 Cloud Error Reporting API,但这不是使用 Cloud Workstations 所必需的。

  • 确保您的工作站集群是专用集群。 配置专用集群可防止从 VPC 服务边界外连接到工作站。Cloud Workstations 服务可防止在 VPC 服务边界中创建公共集群。
  • 请确保在工作站配置中关闭公共 IP 地址。否则会导致项目中有具有公共 IP 地址的虚拟机。我们强烈建议您使用 constraints/compute.vmExternalIpAccess 组织政策限制条件来关闭 VPC 服务边界中所有虚拟机的公共 IP 地址。如需了解详情,请参阅将外部 IP 地址限制为仅用于特定虚拟机

如需详细了解服务边界,请参阅服务边界详情和配置

架构

将工作站集群配置为专用集群后,工作站集群的控制平面仅具有内部 IP 地址。这意味着公共互联网上的客户端无法连接到工作站集群中的工作站。如需使用私有集群,您必须通过 Private Service Connect 端点将私有集群手动连接到您的 Virtual Private Cloud (VPC) 网络。

使用专用集群的配置需要 2 个 PSC 端点:

  • 默认情况下,Cloud Workstations 会创建一个单独的 PSC 端点,将控制平面连接到工作站虚拟机。

  • 你必须为私有集群创建额外的 PSC 端点。 要从本地计算机连接到私有集群中的工作站,本地计算机必须连接到 VPC 网络。使用 云 VPNCloud Interconnect 将运行机器的外部网络连接到 VPC 网络。必须在与外部网络通过 Cloud VPN 或 Cloud Interconnect 连接的同一网络中创建此附加 PSC 端点。

下图展示了一个私有集群的示例架构:

图 1. 私有集群

准备工作

开始之前,请确保完成以下必要的设置步骤:

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. 启用云工作站 API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    启用 API

  4. 确保您拥有项目的 Cloud Workstations Admin IAM 角色,以便创建工作站配置。 如需在 Google Cloud 控制台中查看您的 IAM 角色,请前往 IAM 页面:

    前往 IAM

  5. Cloud Workstations 托管在从 Compute Engine 的预配置公共 Container-Optimized OS (COS) 映像启动的虚拟机上。如果强制执行 constraints/compute.trustedimageProjects 组织政策限制条件,您必须设置映像访问权限限制条件,以允许用户通过 projects/cos-cloud 或所有公共映像创建启动磁盘。
  6. Cloud Workstations 使用 Private Service Connect 连接到 Google 管理的服务。如果您的组织强制执行 constraints/compute.restrictPrivateServiceConnectProducer 组织政策限制条件,您必须将 Google 添加为允许的生产者 (under:organizations/433637338589)。
  7. 如果您的组织强制执行 constraints/compute.disablePrivateServiceConnectCreationForConsumers 组织政策限制条件,您必须确保连接到 Google API (GOOGLE_APIS) 的 Private Service Connect 端点处于允许状态。 如果您配置专用集群,则还必须允许连接到已发布服务的端点 (SERVICE_PRODUCERS)。
  8. 可选:启用 Container File System API 以缩短工作站启动时间。

    启用 Container File System API

    有关更多信息,请参阅使用图像流减少工作站启动时间

创建专用集群

请按照以下步骤创建专用集群:

  1. 在 Google Cloud 控制台中,前往 Cloud Workstations 页面。

    前往 Cloud Workstations

  2. 导航至工作站 集群管理 页面。

  3. 点击创建

  4. 输入工作站集群的名称,然后选择区域

  5. 在“网络”部分中,选择此项目中的网络

  6. 选择网络子网

  7. 对于 网关类型,选择 私有网关

  8. 可选:指定一个或多个其他项目,这些项目托管 Private Service Connect 端点,从而实现对私有集群的 HTTP 访问。默认情况下,此端点只能在工作站集群项目和 VPC 网络主机项目(如果不同)中创建。 如有需要,这些项目也可以在集群创建后指定。

  9. 点击创建。集群创建过程中,状态显示为 正在更新

    创建集群需要几分钟时间才能完成。集群创建完成后,集群状态可能显示为 降级。完成 创建 PSC 端点 部分中的步骤后,集群状态将在几分钟内变为 就绪

启用私有集群连接

客户端无法从公共互联网连接到私有工作站集群中的工作站。客户端必须位于使用 专用服务连接 (PSC) 连接到工作站集群的网络上。 请按照本节中的步骤连接到工作站:

  1. 创建一个 PSC 端点,该端点指向您的工作站服务附件。

  2. 创建私有 DNS 区域

  3. 使用云 DNS 创建 DNS 记录,将集群的主机名映射到 PSC 端点。

创建 Private Service Connect 端点

请按照以下步骤创建 PSC 端点:

  1. 在 Google Cloud 控制台中,转到 Private Service Connect。

    前往私人服务连接

  2. 单击“已连接端点”选项卡,然后单击“添加连接端点”。

  3. 对于目标,选择已发布的服务

  4. 目标服务 字段中,输入为工作站集群创建的服务附件 URI。您可以通过在控制台上导航到工作站集群,并在 网络设置 下查找 服务附件 URI 字段来找到它。

  5. Endpoint 字段中,输入端点名称。

  6. 选择端点的 网络,然后选择 子网络。 此网络应该是您要用来连接工作站的网络,并且必须是您的外部网络通过 Cloud VPN 或 Cloud Interconnect 连接到的网络。

  7. 为端点选择一个 IP 地址

    如果您需要新的 IP 地址,请选择 创建 IP 地址

    1. 为 IP 地址输入名称和可选的描述
    2. 对于 静态 IP 地址,请选择 自动分配。 对于自定义 IP 地址,请选择让我选择并输入您要使用的 IP 地址。
    3. 对于 目的,选择 非共享
    4. 点击保留
  8. 从下拉列表中选择一个 命名空间 或创建一个新的命名空间。 Region 根据所选子网络进行填充。

  9. 点击添加端点

  10. 复制端点的 IP 地址,以便在下一节中使用它来 创建私有 DNS 区域和 DNS 记录

创建私有 DNS 区域

请按照以下步骤为该工作站集群创建私有 DNS 区域,并将 DNS 名称设置为您的 clusterHostname,您可以通过在控制台上导航到您的工作站集群来找到它。

  1. 在 Google Cloud 控制台中,前往创建 DNS 区域页面。

    前往创建 DNS 区域

  2. 对于可用区类型,请选择专用

  3. 输入可用区名称,例如 private-workstations-cluster-zone

  4. 为专用地区输入 DNS 名称后缀。该区域内的所有记录都具有相同的后缀。将此名称设置为您的clusterHostname

    找到你的clusterHostname导航至Cloud Workstations  > 集群管理页面 Google Cloud 控制台,然后单击您的工作站集群以查看主机名。

  5. 可选:添加说明。

  6. 选项下,选择默认(专用)

  7. 在创建 PSC 端点的网络中选择该网络。上一节因为该 IP 地址仅在该网络上有效。

  8. 点击创建

有关私有 DNS 区域的更多信息,请参阅 Cloud DNS 文档,了解如何操作。创建私人区域Cloud DNS 私有区域的最佳实践

创建 DNS 记录

要添加一条将 *.<clusterHostname> 映射到创建 Private Service Connect 端点时保留的 IP 地址的记录,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Cloud DNS 区域页面。

    前往 Cloud DNS 区域

  2. 点击要在其中添加记录的托管区域的名称。

  3. 区域详情页面上,点击添加标准

  4. 创建记录集页面,在DNS 名称输入字段*.<clusterHostname>

  5. IP 地址 字段中,输入您在上一节中为 Private Service Connect 端点保留的 IP 地址。

  6. 点击创建

  7. 您的 VPC 网络现在应该已连接到工作站集群,您可以使用此网络连接工作站。

启用本地 DNS 解析

要在工作站上使用默认的基于浏览器的编辑器,请使用连接到 VPC 网络的计算机上的浏览器。您可以使用 云 VPNCloud Interconnect 从运行浏览器的外部网络连接到 VPC 网络。

要从外部网络连接,需要在外部网络中配置 DNS。与前面的步骤类似,您可以为 clusterHostname 创建一个 DNS 区域,并添加一条记录,将 *.<clusterHostname> 映射到创建 Private Service Connect 端点时保留的 IP 地址。或者,您可以设置 DNS 转发区域或 DNS 服务器策略,以允许在您的本地环境和 Google Cloud 环境之间查找 DNS 名称。

您可能还需要将 *cloudworkstations.dev 添加到本地基础架构的允许列表中。

配置用于图像流的 VPC 服务控件

如果您选择启用 图像流 以减少工作站启动时间,并且您的工作站集群位于 VPC Service Controls 边界内,则必须在边界策略中配置以下内容:

  • 将容器文件系统 API (containerfilesystem.googleapis.com) 包含在服务边界的受限服务中。
  • 在服务边界中添加一条出口规则,允许工作站配置中指定的服务账号访问托管容器镜像的项目上的容器文件系统 API。
  • 如果您使用的是 预配置 IDE,则还必须配置出口规则以允许访问 cloud-workstations-images 项目(项目编号 662288601415)。

后续步骤