为 Dataform 配置 VPC Service Controls

VPC Service Controls 是一项 Google Cloud 功能,可让您设置边界,以防范数据渗漏。本指南介绍了如何将 VPC Service Controls 与 Dataform 搭配使用,以增强服务的安全性。

VPC Service Controls 为Google Cloud 服务提供一层额外的防御,该防御独立于 Identity and Access Management (IAM) 提供的保护。

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

限制

Dataform 支持 VPC Service Controls,但存在以下限制:

安全注意事项

为 Dataform 设置 VPC Service Controls 边界时,您应查看向 Dataform 服务账号授予的权限,并确保这些权限与您的安全架构相符。

无论 VPC Service Controls 如何,该服务账号都可能拥有对其所属项目中的 BigQuery 或 Secret Manager 数据的访问权限,具体取决于您向该 Dataform 服务账号授予的权限。在这种情况下,使用 VPC Service Controls 边界限制 Dataform 不会阻止与 BigQuery 或 Secret Manager 的通信。

如果您不需要执行来自 Dataform 代码库的任何工作流调用,则应阻止与 BigQuery 的通信。如需详细了解如何屏蔽与 BigQuery 的通信,请参阅屏蔽与 BigQuery 的通信

如果您的所有 Dataform 代码库都未连接到第三方 Git 代码库,您应阻止与 Secret Manager 的通信。如需详细了解如何屏蔽与 Secret Manager 的通信,请参阅屏蔽与 Secret Manager 的通信

准备工作

在为 Dataform 配置 VPC Service Controls 服务边界之前,请按照限制远程代码库指南设置 dataform.restrictGitRemotes 组织政策。

必须采用 dataform.restrictGitRemotes 组织政策,以确保在使用 Dataform 时强制执行 VPC Service Controls 检查,并限制第三方对 Dataform Git 代码库的访问权限。

所需的角色

如需获得配置 VPC Service Controls 服务边界所需的权限,请让管理员向您授予项目的 Access Context Manager Editor (roles/accesscontextmanager.policyEditor) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

如需详细了解 VPC Service Controls 权限,请参阅使用 IAM 进行访问权限控制

配置 VPC Service Controls

您可以通过以下方式使用 VPC Service Controls 服务边界限制 Dataform:

  • 将 Dataform 添加到限制 BigQuery 的现有服务边界。
  • 创建一个同时限制 Dataform 和 BigQuery 的服务边界。

如需将 Dataform 添加到限制 BigQuery 的服务边界,请按照 VPC Service Controls 文档中的更新服务边界指南操作。

如需创建一个同时限制 Dataform 和 BigQuery 的新服务边界,请按照 VPC Service Controls 文档中的创建服务边界指南操作。

可选:屏蔽与 BigQuery 的通信

Dataform 与 BigQuery 通信的方式取决于 Dataform 中使用的服务账号类型

默认的 Dataform 服务账号使用 bigquery.jobs.create 权限与 BigQuery 通信。在授予 Dataform 在 BigQuery 中运行 SQL 工作流所需的角色时,您会授予包含此权限的默认 Dataform 服务账号角色。

如需阻止默认 Dataform 服务账号与 BigQuery 之间的通信,您需要撤消已授予默认 Dataform 服务账号的所有包含 bigquery.jobs.create 权限的预定义角色和自定义角色。如需撤消角色,请按照管理对项目、文件夹和组织的访问权限指南中的说明操作。

自定义 Dataform 服务账号使用以下权限和角色与 BigQuery 通信:

  • 向自定义服务账号授予的 bigquery.jobs.create 权限。
  • 向自定义服务账号中的默认 Dataform 服务账号授予的 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 角色。

您可以通过以下任一方式阻止自定义 Dataform 服务账号与 BigQuery 之间的通信:

  • 撤消向所选自定义 Dataform 服务账号的默认服务账号授予的 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 角色。如需撤消 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) 角色,请按照管理对服务账号的访问权限指南中的说明操作。

  • 撤消在项目级别向包含 bigquery.jobs.create 权限的自定义服务账号授予的所有预定义角色和自定义角色。如需撤消角色,请按照管理对项目、文件夹和组织的访问权限指南中的说明操作。

bigquery.jobs.create 权限包含在以下必须撤消的预定义 BigQuery IAM 角色中:

可选:屏蔽与 Secret Manager 的通信

Dataform 使用 secretmanager.versions.access 权限访问各个 Secret Manager Secret。当您将 Dataform 代码库关联到第三方代码库时,可以向所选 Secret Manager 密钥的默认 Dataform 服务账号授予此权限。

如需阻止 Dataform 与 Secret Manager 之间的通信,您需要撤消默认 Dataform 服务账号对所有 Secret 的访问权限。

如需撤消默认 Dataform 服务账号对 Secret Manager Secret 的访问权限,请按照 Secret Manager 文档中的管理对 Secret 的访问权限指南操作。您必须撤消向所选密钥的默认 Dataform 服务账号授予的所有包含 secretmanager.versions.access 权限的预定义角色和自定义角色。

以下预定义的 Secret Manager IAM 角色包含 secretmanager.versions.access 权限:

后续步骤