管理服务边界

本页面介绍了如何在 VPC Service Controls 中管理服务边界。如需详细了解如何创建新的服务边界,请参阅创建服务边界

本页面包括以下部分:

准备工作

列出和描述服务边界

列出组织中的所有服务边界:

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击安全,然后点击 VPC Service Controls

    转到 VPC Service Controls 页面

  2. VPC Service Controls 页面的表中,点击要查看的服务边界的名称。

gcloud

要列出您组织的服务边界,请使用 list 命令:

gcloud access-context-manager perimeters list \
  [--policy=POLICY_ID]

替换以下内容:

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

您应该会看到您组织的边界列表。例如:

NAME           TITLE
ProdPerimeter  Production Perimeter

要查看某个服务边界的详细信息,请使用 describe 命令:

gcloud access-context-manager perimeters \
  describe PERIMETER_ID \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是您要获取其详细信息的服务边界的 ID。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

您应该会看到该边界的详细信息。例如:

accessLevels:
- accessPolicies/626111171578/accessLevels/corpAccess
resources:
- projects/111584792408
restrictedServices:
- bigquery.googleapis.com
- storage.googleapis.com
title: Production Perimeter

列出服务边界(已设置格式)

使用 gcloud 命令行工具,您可以获取 YAML 或 JSON 格式的服务边界列表。

要获取设置了格式的边界列表,请使用 list 命令。

gcloud access-context-manager perimeters list \
  --format=FORMAT \
  [--policy=POLICY_ID]

替换以下内容:

  • FORMAT 是以下任一值:

    • list(YAML 格式)

    • json(JSON 格式)

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

以下输出为 YAML 格式的示例列表:

- name: accessPolicies/165717541651/servicePerimeters/On_Prem
  status: {'resources': ['projects/167410821371'], 'restrictedServices': ['bigquery.googleapis.com', 'storage.googleapis.com']}
  title: On Prem
- name: accessPolicies/165717541651/servicePerimeters/Private
  spec: {'resources': ['projects/136109111311'], 'restrictedServices': ['bigquery.googleapis.com', 'storage.googleapis.com', 'logging.googleapis.com']}
  status: {'resources': ['projects/136109111311', 'projects/401921913171'], 'restrictedServices': ['bigquery.googleapis.com']}
  title: Private
  useExplicitDryRunSpec: True
- name: accessPolicies/165717541651/servicePerimeters/OnpremBridge
  perimeterType: PERIMETER_TYPE_BRIDGE
  status: {'resources': ['projects/167410821371']}
  title: OnpremBridge

以下输出是 JSON 格式的示例列表:

[
  {
    "name": "accessPolicies/165717541651/servicePerimeters/On_Prem",
    "status": {
      "resources": [
        "projects/167410821371"
      ],
      "restrictedServices": [
        "bigquery.googleapis.com",
        "storage.googleapis.com"
      ]
    },
    "title": "On Prem"
  },
  {
    "name": "accessPolicies/165717541651/servicePerimeters/Private",
    "spec": {
      "resources": [
        "projects/136109111311"
      ],
      "restrictedServices": [
        "bigquery.googleapis.com",
        "storage.googleapis.com",
        "logging.googleapis.com"
      ]
    },
    "status": {
      "resources": [
        "projects/136109111311",
        "projects/401921913171"
      ],
      "restrictedServices": [
        "bigquery.googleapis.com"
      ]
    },
    "title": "Private",
    "useExplicitDryRunSpec": true
  },
  {
    "name": "accessPolicies/165717541651/servicePerimeters/OnpremBridge",
    "perimeterType": "PERIMETER_TYPE_BRIDGE",
    "status": {
      "resources": [
        "projects/167410821371"
      ]
    },
    "title": "OnpremBridge"
  }
]

更新服务边界

本部分介绍如何更新单个服务边界。要在一次操作中更新组织的所有服务边界,请参阅对服务边界进行批量更改

您可以执行以下任务来更新服务边界:

更新了服务边界后,更改会在 30 分钟内传播和生效。在此期间,边界可能会阻止请求,并显示以下错误消息:Error 403: Request is prohibited by organization's policy.

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击安全,然后点击 VPC Service Controls

    转到 VPC Service Controls 页面

  2. VPC Service Controls 页面的表中,点击要修改的服务边界的名称。

  3. 修改 VPC 服务边界页面上,更新服务边界。

  4. 点击保存

gcloud

要向边界添加新资源,请使用 update 命令并指定要添加的资源:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --add-resources=RESOURCES \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是您要获取其详细信息的服务边界的 ID。

  • RESOURCES 是包含一个或多个项目编号或 VPC 网络名称的逗号分隔列表。例如 projects/12345//compute.googleapis.com/projects/my-project/global/networks/vpc1。 仅允许项目和 VPC 网络。项目格式:projects/project_number。VPC 格式://compute.googleapis.com/projects/project-id/global/networks/network_name

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

如需更新受限服务的列表,请使用 update 命令并以英文逗号分隔的列表形式指定要添加的服务:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --add-restricted-services=SERVICES \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是您要获取其详细信息的服务边界的 ID。

  • SERVICES 是包含一个或多个服务的列表(以英文逗号分隔)。例如 storage.googleapis.comstorage.googleapis.com,bigquery.googleapis.com

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

向现有边界添加访问权限级别

创建访问权限级别后,您可以将其应用于服务边界以控制访问。

更新了服务边界后,更改会在 30 分钟内传播和生效。在此期间,边界可能会阻止请求,并显示以下错误消息:Error 403: Request is prohibited by organization's policy.

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击安全,然后点击 VPC Service Controls

    转到 VPC Service Controls 页面

  2. VPC Service Controls 页面的表中,点击要修改的服务边界的名称。

  3. 修改 VPC 服务边界页面上,点击选择访问权限级别框。

  4. 选择与要应用于服务边界的访问权限级别对应的复选框。

  5. 点击保存

gcloud

要向现有服务边界添加访问权限级别,请使用 update 命令:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --add-access-levels=LEVEL_NAME \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • LEVEL_NAME 是您要添加到边界的访问权限级别的名称。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

删除服务边界

删除服务边界时,与该边界关联的安全控制不再适用于关联的 Google Cloud 项目。对成员 Google Cloud 项目或关联资源没有任何其他影响。

控制台

  1. 在 Google Cloud 控制台导航菜单中,点击安全,然后点击 VPC Service Controls

    转到 VPC Service Controls 页面

  2. VPC Service Controls 页面上,在与要删除的边界相对应的表行中,点击

gcloud

要删除服务边界,请使用 delete 命令:

gcloud access-context-manager perimeters delete PERIMETER_ID \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

使用 VPC 可访问服务限制对边界内服务的访问权限

本部分介绍如何启用、添加、移除和停用 VPC 可访问服务。

您可以使用 VPC 可访问服务功能来限制可从服务边界内的网络端点访问的一组服务。您可以将 VPC 可访问服务添加到服务边界,但不能添加到边界网桥。

如需详细了解 VPC 可访问服务功能,请参阅 VPC 可访问服务

启用 VPC 可访问服务

要为服务边界启用 VPC 可访问服务,请使用以下命令:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --enable-vpc-accessible-services \
  --add-vpc-allowed-services=SERVICES \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • SERVICES 是一个逗号分隔列表,其中列出了您要允许边界内网络访问的一个或多个服务。对此列表中未包含的任何服务的访问都会被阻止。

    要快速添加受该边界保护的服务,请将 RESTRICTED-SERVICES 添加到 SERVICES 列表中。除了 RESTRICTED-SERVICES,您还可以添加其他服务。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

例如,如需确保边界中的 VPC 网络仅可访问 Logging 和 Cloud Storage 服务,请使用以下命令:

gcloud access-context-manager perimeters update example_perimeter \
  --enable-vpc-accessible-services \
  --add-vpc-allowed-services=RESTRICTED-SERVICES,logging.googleapis.com,storage.googleapis.com \
  --policy=11271009391

将服务添加到 VPC 可访问服务

要为边界的 VPC 可访问服务添加其他服务,请使用以下命令:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --add-vpc-allowed-services=SERVICES \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • SERVICES 是一个逗号分隔列表,其中列出了您要允许边界内网络访问的一个或多个服务。

    要快速添加受该边界保护的服务,请将 RESTRICTED-SERVICES 添加到 SERVICES 列表中。除了 RESTRICTED-SERVICES,您还可以添加独立的服务。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

例如,如果您启用 VPC 可访问服务,并且要求边界中的 VPC 网络有权访问 Pub/Sub 服务,请使用以下命令:

gcloud access-context-manager perimeters update example_perimeter \
  --add-vpc-allowed-services=RESTRICTED-SERVICES,pubsub.googleapis.com \
  --policy=11271009391

从 VPC 可访问服务中移除服务

要从服务边界的 VPC 可访问服务中移除服务,请使用以下命令:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --remove-vpc-allowed-services=SERVICES \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • SERVICES 是一个逗号分隔列表,其中列出了您要从服务边界内的网络允许访问的服务列表中移除的一个或多个服务。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

例如,如果您启用 VPC 可访问服务,并且不再希望边界中的 VPC 网络访问 Cloud Storage 服务,请使用以下命令:

gcloud access-context-manager perimeters update example_perimeter \
  --remove-vpc-allowed-services=storage.googleapis.com \
  --policy=11271009391

停用 VPC 可访问服务

要为服务边界停用 VPC 服务限制,请使用以下命令:

gcloud access-context-manager perimeters update PERIMETER_ID \
  --no-enable-vpc-accessible-services \
  --clear-vpc-allowed-services \
  [--policy=POLICY_ID]

替换以下内容:

  • PERIMETER_ID 是服务边界的 ID。

  • POLICY_ID 是您组织的访问权限政策的 ID。只有在未设置默认访问权限政策的情况下,才需要指定此值。

例如,要为 example_perimeter 停用 VPC 服务限制,请使用以下命令:

gcloud access-context-manager perimeters update example_perimeter \
  --no-enable-vpc-accessible-services \
  --clear-vpc-allowed-services \
  --policy=11271009391

VPC 可访问服务和 Access Context Manager API

您还可以使用 Access Context Manager API 来管理 VPC 可访问服务。创建或修改服务边界时,请使用响应正文中的 ServicePerimeterConfig 对象来配置 VPC 可访问服务。