Dataform 中的服务账号简介
创建第一个 Dataform 仓库时,Dataform 会自动生成一个默认服务账号。Dataform 会使用默认服务账号代表您与 BigQuery 交互。默认情况下,系统不会向默认的 Dataform 服务账号授予任何 BigQuery 角色或权限。您必须向默认 Dataform 服务账号授予必要的访问权限。
默认的 Dataform 服务账号 ID 采用以下格式:
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
将 YOUR_PROJECT_NUMBER 替换为您的Google Cloud 项目的数字 ID。您可以在 Google Cloud 控制台信息中心Google Cloud 中找到项目 ID。如需了解详情,请参阅标识项目。
除了默认的 Dataform 服务账号之外,您还可以使用其他服务账号代表您执行工作流。您可以配置自定义服务账号:
创建 Dataform 代码库或工作流配置时,您可以选择与您有权访问的 Google Cloud 项目关联的任何服务账号。您必须为与 Dataform 资源关联的所有服务账号配置所需权限。
与 Dataform 代码库关联的自定义服务账号仅用于执行该代码库中的工作流。所有其他代码库操作仍由默认 Dataform 服务账号执行。
Dataform 服务账号所需的角色
Dataform 中使用的默认服务账号和自定义服务账号需要具有以下 BigQuery IAM 角色,才能在 BigQuery 中执行工作流:
- 对 Dataform 需要同时拥有读取和写入权限的项目的 BigQuery Data Editor。它们通常包括托管 Dataform 代码库的项目。
- 对 Dataform 需要具有只读访问权限的项目的 BigQuery Data Viewer。
- 托管 Dataform 代码库的项目中的 BigQuery Job User。
- BigQuery Data Owner(BigQuery 数据所有者),如果您要查询 BigQuery 数据集。
- 如果您想使用 BigQuery 政策标记,请参阅用于列级访问权限控制的 BigQuery 角色。
此外,您还需要向默认 Dataform 服务账号授予 Service Account Token Creator(roles/iam.serviceAccountTokenCreator
) 角色,以便其访问您要在 Dataform 中使用的所有自定义服务账号。
Dataform 服务账号的安全注意事项
向服务账号授予 Dataform 所需的角色时,需要注意以下安全注意事项:
无论 VPC Service Controls 如何,任何被授予所需角色的服务账号都可能会获得对服务账号所属项目中的 BigQuery 或 Secret Manager 的访问权限。
如需了解详情,请参阅为 Dataform 配置 VPC Service Controls。
拥有
dataform.repositories.create
IAM 权限的任何用户都可以使用默认的 Dataform 服务账号和授予该服务账号的所有权限来执行代码。如需了解详情,请参阅 Dataform 权限的安全注意事项。
如需限制用户或服务账号可以在 BigQuery 中读取或写入的数据,您可以向所选的 BigQuery 数据集或表授予精细的 BigQuery IAM 权限。如需了解详情,请参阅控制对数据集的访问权限和控制对表和视图的访问权限。
准备工作
在 Google Cloud 控制台中,前往 Dataform 页面。
选择或创建代码库。
向在 Dataform 中使用的服务账号授予所需的 BigQuery 角色
如需向默认 Dataform 服务账号或您要在 Dataform 中使用的自定义服务账号授予所需的 BigQuery IAM 角色,请按以下步骤操作:
在 Google Cloud 控制台中,前往 IAM 页面。
点击授予访问权限。
在新的主账号字段中,输入服务账号 ID。
在选择角色下拉列表中,选择 BigQuery Job User 角色。
点击添加其他角色,然后在选择角色下拉列表中选择 BigQuery Data Editor 角色。
点击添加其他角色,然后在选择角色下拉列表中选择 BigQuery Data Viewer 角色。
点击保存。
向自定义服务账号授予令牌创建权限
如需在 Dataform 中使用自定义服务账号,默认 Dataform 服务账号必须能够访问自定义服务账号。如需授予此访问权限,您需要将默认 Dataform 服务账号作为主账号添加到具有 Service Account Token Creator 角色的自定义服务账号。
如需向默认 Dataform 服务账号授予对自定义服务账号的访问权限,请按以下步骤操作:
在 Google Cloud 控制台中,依次选择 IAM > 服务账号。
选择一个项目。
在“YOUR_PROJECT_NAME”项目的服务账号页面上,选择您的自定义 Dataform 服务账号。
前往权限,然后点击授予访问权限。
在新的主账号字段中,输入您的默认 Dataform 服务账号 ID。
默认的 Dataform 服务账号 ID 采用以下格式:
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
在选择角色下拉列表中,选择 Service Account Token Creator 角色。
点击保存。
后续步骤
- 如需详细了解 BigQuery IAM 角色和权限,请参阅使用 IAM 进行访问权限控制。
- 如需详细了解如何向 BigQuery 数据集授予精细权限,请参阅控制对数据集的访问权限。
- 如需详细了解如何向 BigQuery 表授予精细权限,请参阅控制对表和视图的访问权限。
- 如需了解如何使用 VPC Service Controls 控制对 Dataform 的访问权限,请参阅为 Dataform 配置 VPC Service Controls。