配置 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 端点将专用集群手动连接到虚拟私有云 (VPC) 网络。

具有专用集群的配置需要两个 PSC 端点:

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

  • 您必须为专用集群创建额外的 PSC 端点。如需从本地机器连接到专用集群中的工作站,您的本地机器必须连接到 VPC 网络。使用 Cloud VPN 或 Cloud Interconnect 将运行机器的外部网络连接到 VPC 网络。此额外的 PSC 端点必须在外部网络通过 Cloud VPN 或 Cloud Interconnect 连接到的同一网络中创建。

下图展示了专用集群的示例架构:

图 1. 专用集群

准备工作

在开始之前,请确保您已完成以下必需的设置步骤:

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 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

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

  4. 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

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

  6. 启用 Cloud Workstations API(如果尚未启用)。

    启用 API 所需的角色

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

    启用 API

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

    进入 IAM

  8. Cloud Workstations 托管在从 Compute Engine 预配置的公共 Container-Optimized OS (COS) 映像启动的虚拟机上。如果强制执行 constraints/compute.trustedimageProjects 组织政策限制条件,您必须设置映像访问权限限制,以允许用户通过 projects/cos-cloud 或所有公共映像创建启动磁盘。
  9. Cloud Workstations 使用 Private Service Connect 连接到 Google 管理的服务。如果您的组织强制执行 constraints/compute.restrictPrivateServiceConnectProducer 组织政策限制条件,则您必须将 Google 添加为允许的提供方 (under:organizations/433637338589)。
  10. 如果您的组织中强制执行了 constraints/compute.disablePrivateServiceConnectCreationForConsumers 组织政策限制条件,则必须确保允许连接到 Google API (GOOGLE_APIS) 的 Private Service Connect 端点。 如果您配置了专用集群,则还必须允许连接到已发布服务 (SERVICE_PRODUCERS) 的端点。
  11. 可选:启用容器文件系统 API 以加快工作站启动速度。

    启用容器文件系统 API

    如需了解详情,请参阅使用映像流式传输缩短工作站启动时间。

创建专用集群

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

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

    前往 Cloud Workstations

  2. 前往工作站集群管理页面。

  3. 点击创建。

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

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

  6. 选择网络和子网。

  7. 对于网关类型,选择专用网关。

  8. 可选:指定一个或多个其他项目,这些项目托管 Private Service Connect 端点,该端点支持对专用集群进行 HTTP 访问。默认情况下,此端点只能在工作站集群项目和 VPC 网络宿主项目(如果两者不同)中创建。如果需要,也可以在创建集群后指定这些项目。

  9. 点击创建。在创建集群时,状态会显示为正在更新。

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

启用私有集群连接

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

  1. 创建以工作站服务连接为目标的 PSC 端点。

  2. 创建专用 DNS 区域。

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

创建 Private Service Connect 端点

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

  1. 在 Google Cloud 控制台中,前往 Private Service Connect。

    前往 Private Service Connect

  2. 点击已连接的端点标签页,然后点击 add连接端点。

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

  4. 在目标服务字段中,输入为工作站集群创建的服务连接 URI。如需查找此信息,请在控制台中前往您的工作站集群,然后在投放网络设置下查找服务连接 URI 字段。

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

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

  7. 为端点选择 IP 地址。

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

    1. 为 IP 地址输入名称和可选的描述。
    2. 对于静态 IP 地址,选择自动分配。对于自定义 IP 地址,请选择让我选择,然后输入您要使用的 IP 地址。
    3. 对于用途,选择非共享。
    4. 点击保留。
  8. 从下拉列表中选择命名空间,或者创建新的命名空间。 系统会根据所选子网填充区域。

  9. 点击添加端点。

  10. 复制端点的 IP 地址,以便在下一部分中创建专用 DNS 区域和 DNS 记录。

创建专用 DNS 区域

请按照以下步骤为此工作站集群创建一个专用 DNS 区域,并将 DNS 名称设置为您的 clusterHostname,您可以在控制台中前往工作站集群找到该名称。

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

    前往“创建 DNS 区域”

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

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

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

    如需查找 clusterHostname,请前往 Google Cloud 控制台中的 Cloud Workstations  > 集群管理页面,然后点击您的工作站集群以查看主机名。

  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 网络的机器中的浏览器。您可以使用 Cloud VPN 或 Cloud Interconnect 从运行浏览器的外部网络连接到 VPC 网络。

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

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

为映像流式传输配置 VPC Service Controls

如果您选择启用映像流式传输来缩短工作站启动时间,并且工作站集群位于 VPC Service Controls 边界内,则必须在边界政策中配置以下内容:

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

后续步骤