适用于 BigQuery 的 VPC Service Controls
本页面介绍了如何使用 VPC Service Controls 创建边界,从而增强 BigQuery 资源的安全性。这些边界可限制对 BigQuery 进行的访问以及从 BigQuery 进行的访问,并独立于 Identity and Access Management (IAM) 控制措施。它们在以下使用场景中非常有用:
- 通过限制对资源的访问(入站流量和出站流量规则中明确允许的资源除外)来防止数据泄露。
- 从第三方来源或 Google Cloud 服务(例如 Cloud Storage)安全地将数据加载到 BigQuery 中。
- 控制将数据从 BigQuery 导出到 Cloud Storage 或其他目标。
如需了解详情,请参阅 VPC Service Controls 概览。
准备工作
- 如需获取配置服务边界所需的权限,请参阅适用于 VPC Service Controls 的使用 IAM 进行访问权限控制。
- 您必须为自己的组织设置访问权限政策。如需了解详情,请参阅创建访问权限政策。
创建边界
以下示例展示了如何创建 VPC Service Controls 边界,以限制可访问 BigQuery 项目的外部 IP 地址的范围。
创建仅允许访问指定范围内 IP 地址(例如公司网络中的 IP 地址)的访问权限级别。如需创建访问权限级别,请使用
gcloud access-context-manager levels create
命令:echo """ - ipSubnetworks: - 162.222.181.0/24 - 2001:db8::/48 """ > level.yaml gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title="TITLE" --basic-level-spec=level.yaml
替换以下内容:
ACCESS_LEVEL_NAME
:访问权限级别的 IDTITLE
:服务边界的人类可读标题
如需详细了解如何创建访问权限级别,请参阅实现示例。
通过创建或更新边界来保护 BigQuery 资源。以下示例展示了如何保护项目。如需了解其他使用场景,例如保护从其他项目中的 Cloud Storage 存储桶进行的数据传输,请参阅使用场景。
创建边界
如需创建新的边界以保护 BigQuery 项目,请使用
gcloud access-context-manager perimeters create
命令:echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME ingressTo: operations: - methodSelectors: - method: '*' serviceName: bigquery.googleapis.com resources: - '*' """ > ingress.yaml gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \ --resources=BIGQUERY_PROJECT_NUMBER \ --restricted-services=bigquery.googleapis.com \ --ingress-policies=ingress.yaml --policy=POLICY_NAME
替换以下内容:
POLICY_NAME
:访问权限政策的 IDACCESS_LEVEL_NAME
:访问权限级别的 IDPERIMETER
:边界的 IDTITLE
:服务边界的人类可读简短标题BIGQUERY_PROJECT_NUMBER
:BigQuery 项目的 IDPOLICY_NAME
:访问权限政策的 ID
更新边界
如需更新现有边界,请使用
gcloud access-context-manager perimeters update
命令:gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
将
BIGQUERY_PERIMETER
替换为保护 BigQuery 资源的边界的 ID。
测试边界
在强制执行 VPC Service Controls 边界之前,请先对其进行测试。如需了解详情,请参阅服务边界的试运行模式和使用试运行模式测试入站流量或出站流量政策。
使用场景
以下使用场景示例展示了如何使用 VPC Service Controls 保护进出 BigQuery 的数据。
查询来自其他项目中的 Cloud Storage 存储桶的外部表数据
以下示例展示了当 BigQuery 和 Cloud Storage 项目被边界分隔时,如何有选择地允许它们之间进行通信。
通过为 Cloud Storage 项目周围的边界更新出站流量规则,允许 BigQuery 项目访问 Cloud Storage 项目:
echo """ - egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - projects/BIGQUERY_PROJECT_NUMBER """ > egress.yaml gcloud access-context-manager perimeters update CLOUD_STORAGE_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress.yaml
替换以下内容:
BIGQUERY_PROJECT_NUMBER
:BigQuery 项目的 IDCLOUD_STORAGE_PERIMETER
:保护 Cloud Storage 资源的边界的 IDPOLICY_NAME
:访问权限政策的 ID
通过为 BigQuery 项目周围的边界更新出站流量规则,允许 Cloud Storage 项目访问 BigQuery 项目:
echo """ - egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - projects/CLOUD_STORAGE_PROJECT_NUMBER """ > egress1.yaml gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress1.yaml
替换以下内容:
CLOUD_STORAGE_PROJECT_NUMBER
:Cloud Storage 项目的 IDPERIMETER
:边界的 IDPOLICY_NAME
:访问权限政策的 ID
可选:如果保护 BigQuery 项目的边界将
storage.googleapis.com
作为受限制的服务包含在内,则您必须更新入站流量规则:echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME ingressTo: operations: - methodSelectors: - method: '*' serviceName: bigquery.googleapis.com - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - '*' """ > ingress.yaml gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \ --resources=BIGQUERY_PROJECT_NUMBER \ --restricted-services=bigquery.googleapis.com \ --ingress-policies=ingress.yaml --policy=POLICY_NAME
从 BigQuery Omni 导入和导出数据
您可以使用 VPC Service Controls 边界来限制 BigQuery Omni 与外部云服务之间的访问,作为一层额外的安全防御。如需了解详情和示例,请参阅在创建 Azure Blob Storage BigLake 表时使用的 VPC Service Controls 配置。
后续步骤
- 详细了解 Analytics Hub 中的 VPC Service Controls。
- 了解如何在使用外部云服务时限制 BigQuery Omni 访问权限。
- 了解风险以及如何通过 VPC Service Controls 降低风险。
- 详细了解 BigQuery 中的 VPC Service Controls 支持和限制。
- 排查 BigQuery 和 VPC Service Controls 的常见问题。