为 BigQuery Omni 设置 VPC Service Controls

本文档介绍如何设置出站流量政策,以仅允许在 VPC Service Controls 边界内对指定的外部云资源进行访问。

您可以使用 VPC Service Controls 边界来限制从 BigQuery Omni 对外部云的访问。VPC Service Controls 为 Google Cloud 服务提供一层额外的、独立于 Identity and Access Management (IAM) 的安全防御。例如,通过设置 VPC Service Controls 边界,您可以将 BigQuery Omni 表中的导出限制为特定 S3 存储桶。

如需详细了解 VPC Service Controls,请参阅 VPC Service Controls 概览

准备工作

确保您拥有配置服务边界所需的权限。如需查看配置 VPC Service Controls 所需的 IAM 角色列表,请参阅 VPC Service Controls 文档中的使用 IAM 进行访问权限控制

使用控制台设置 VPC Service Controls

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

    转到 VPC Service Controls

  2. 如需为 BigQuery Omni 设置 VPC Service Controls,请按照创建服务边界指南中的步骤操作,当您处于出站流量规则窗格中时,请按照以下步骤操作:

    1. 出站流量规则面板中,点击添加规则

    2. API 客户端的属性部分中,从身份列表中选择一个选项。

    3. 选择转到外部资源的特性

    4. 如需添加外部资源,请点击添加外部资源

    5. 添加外部资源对话框中,对于外部资源名称,输入有效的资源名称。例如:

      • 对于 Amazon S3:s3://BUCKET_NAME

        BUCKET_NAME 替换为您的 Amazon S3 存储桶的名称。

      • 对于 Azure Storage:azure://myaccount.blob.core.windows.net/CONTAINER_NAME

        CONTAINER NAME 替换为 Azure Storage 容器的名称。

      如需查看出站规则特性的列表,请参阅出站规则参考

    6. 选择您要在外部资源上允许的方法:

      1. 如果要允许所有方法,请选择方法列表中的所有方法
      2. 如果要允许特定方法,请选择所选方法,点击选择方法,然后选择允许在外部资源中使用的方法。
    7. 点击创建边界

使用 gcloud CLI 设置 VPC Service Controls

如需使用 gcloud CLI 设置 VPC Service Controls,请按照以下步骤操作:

  1. 设置默认访问权限政策
  2. 创建出站流量政策输入文件
  3. 添加出站流量政策

设置默认访问权限政策

访问权限政策是规定访问权限级别和服务边界的组织范围容器。如需了解如何设置默认访问权限政策或获取访问权限政策名称,请参阅管理访问权限政策

创建出站流量政策输入文件

出站规则块定义了允许从边界内对该边界外的资源进行的访问。对于外部资源,externalResources 属性定义了允许从 VPC Service Controls 边界内访问的外部资源路径。

您可以使用 JSON 文件或 YAML 文件配置出站规则。以下示例使用 .yaml 格式:

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
      *OR*
      - permission: "externalResource.read"
    externalResources:
      - EXTERNAL_RESOURCE_PATH
  egressFrom:
    identityType: IDENTITY_TYPE
    *OR*
    identities:
    - serviceAccount:SERVICE_ACCOUNT
  • egressTo:开始 to 块,其中列出允许对指定的边界外项目中的 Google Cloud 资源执行的服务操作。

  • operations:允许满足 from 块条件的客户端访问的服务和操作或方法可访问列表。

  • serviceName:对于 BigQuery Omni,请将其设置为 bigquery.googleapis.com

  • methodSelectors:允许满足 from 块条件客户端访问的方法列表。如需查看服务的受限方法和权限列表,请参阅支持的服务方法限制

  • methodpermissionmethod 字段可以是有效的服务方法,也可以设置为 \"*\" 以允许访问指定服务的所有方法。

    permission 字段必须是有效的服务权限,例如 \"*\"externalResource.readexternalResource.write。允许需要此权限的操作访问边界外的指定资源。

  • externalResources:边界内的客户端可以访问的外部资源列表。将 EXTERNAL_RESOURCE_PATH 替换为有效的 AWS S3 存储桶(例如 s3://bucket_name)或 Azure 存储路径(例如 azure://myaccount.blob.core.windows.net/container_name)。

  • egressFrom:启动 from 块,其中列出允许对指定的边界外项目中的 Google Cloud 资源执行的服务操作。

  • identityTypeidentitiesidentityType 特性定义可用于访问边界外指定资源的身份类型。将 IDENTITY_TYPE 替换为下列其中一个有效的值:

    • ANY_IDENTITY:允许所有身份。
    • ANY_USER_ACCOUNT:允许所有用户。
    • ANY_SERVICE_ACCOUNT:允许所有服务帐号

    identities 特性是可以访问边界外指定资源的服务帐号列表。

  • serviceAccount(可选):将 SERVICE_ACCOUNT 替换为可以访问边界外的指定服务帐号的服务帐号。

示例

下面的示例政策允许从边界内对 AWS 中的 s3://mybucket S3 位置执行出站流量操作。

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - s3://mybucket
      - s3://mybucket2
  egressFrom:
    identityType: ANY_IDENTITY

下面的示例允许对 Azure Storage 存储桶执行出站流量操作:

- egressTo:
    operations:
    - serviceName: bigquery.googleapis.com
      methodSelectors:
      - method: "*"
    externalResources:
      - azure://myaccount.blob.core.windows.net/mycontainer
  egressFrom:
    identityType: ANY_IDENTITY

如需详细了解出站流量政策,请参阅出站规则参考

添加出站流量政策

如需在创建新的服务边界时添加出站流量政策,请使用 gcloud access-context-manager perimeters create 命令。例如,以下命令会创建一个名为 omniPerimeter 的新边界,其中包含项目编号为 12345 的项目,限制 BigQuery API,并添加在 egress.yaml 文件中定义的出站流量政策:

gcloud access-context-manager perimeters create omniPerimeter \
    --title="Omni Perimeter" \
    --resources=projects/12345 \
    --restricted-services=bigquery.googleapis.com \
    --egress-policies=egress.yaml

如需将出站流量政策添加到现有服务边界,请使用 gcloud access-context-manager perimeters update 命令。例如,以下命令会将在 egress.yaml 文件中定义的出站流量政策添加到名为 omniPerimeter 的现有服务边界:

gcloud access-context-manager perimeters update omniPerimeter
    --set-egress-policies=egress.yaml

验证边界

如需验证边界,请使用 gcloud access-context-manager perimeters describe 命令

gcloud access-context-manager perimeters describe PERIMETER_NAME

PERIMETER_NAME 替换为边界的名称。

例如,以下命令描述了边界 omniPerimeter

gcloud access-context-manager perimeters describe omniPerimeter

如需了解详情,请参阅管理服务边界

后续步骤