使用严格的“充当”模式

严格的 act-as 模式可针对 Dataform 中的以下用户操作启用额外的安全检查:

  • 创建或更新代码库
  • 创建或更新工作流配置
  • 创建工作流调用
  • 更新版本配置

这项额外的安全检查要求执行这些操作的用户对有效服务账号(即用于运行工作流程的服务账号)拥有 iam.serviceAccounts.actAs 权限。如需了解详情,请参阅将服务账号关联到资源

您可以通过以下方式启用这些权限:

  • 创建代码库
  • 使用 strict_act_as_checks 代码库标志更新现有代码库时

所需的角色

如需获得完成本文档中的任务所需的权限,请让您的管理员为您授予自定义服务账号的 Service Account User (roles/iam.serviceAccountUser) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

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

确定有效服务账号

您可以根据资源类型和以下条件,确定正在运行工作流的有效服务账号:

资源类型 有效服务账号
代码库

如果您在创建代码库时选择自定义服务账号,则系统会使用 Repository.ServiceAccount 服务账号。

否则,此值默认为 Dataform 服务代理

工作流配置

您可以在创建工作流配置时选择自定义服务账号。

否则,此值默认为代码库的 Dataform 服务代理

工作流调用

如果编译结果为 WORKFLOW_CONFIG,则使用工作流配置的有效服务账号。

如果您从编译结果创建工作流调用,则系统会使用 WorkflowInvocation.InvocationConfig 服务账号(如果已设置)。

否则,此值默认为代码库的 Dataform 服务代理

授予 Service Account User IAM 角色

服务账号用户角色 (roles/iam.serviceAccountUser) 包含 iam.serviceAccounts.actAs 权限,这是严格的“以服务账号身份执行操作”模式所必需的权限。使用 Dataform API 时,您必须已根据所调用的 projects.locations.repositories 方法为有效服务账号授予服务账号用户角色:

  • createpatch
    • 如果设置了 Repository.ServiceAccount 属性,则您应该已获得该属性的 Service Account User 角色。
    • 如果您要调用 patch 方法,则应为代码库中所有工作流配置中的所有有效服务账号授予 Service Account User 角色。
  • workflowConfigs.createworkflowConfigs.patch
    • 您应为工作流配置中使用的有效服务账号授予服务账号用户角色。
  • releaseConfigs.patch
    • 您应针对工作流配置中使用的所有有效服务账号(使用此发布配置)获得“服务账号用户”角色。
  • workflowInvocations.create
    • 您应为工作流调用中使用的有效服务账号授予 Service Account User 角色。

如需向自定义服务账号授予“服务账号用户”角色,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往 IAM > 服务账号

    转到“服务账号”

  2. 选择一个项目。

  3. 项目“PROJECT_NAME”的服务账号页面上,选择您的自定义服务账号。

  4. 前往具有访问权限的主账号,然后点击授予访问权限

  5. 新的主账号字段中,输入您的默认 Dataform 服务代理 ID。

    默认 Dataform 服务代理 ID 采用以下格式:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. 选择角色列表中,选择 Service Account User 角色。

  7. 点击保存

如需了解详情,请参阅创建工作流配置所需的角色创建发布配置所需的角色

严格的“以特定身份行动”模式对自动发布和运行的影响

启用严格的“充当”模式后,会对自动代码库发布和自动工作流执行产生以下影响:

对于连接到第三方代码库的代码库:

  • 您无法在发布配置中为自动发布设置 Cron 时间表。强制执行此操作是为了防止由可能缺少下游服务账号的必要 iam.serviceAccounts.actAs 权限的用户所做的代码更改被自动部署。
  • 使用工作流配置中的 Cron 时间表安排的工作流运行仍处于启用状态。为了确保这些自动化运行成功完成,您必须向默认 Dataform 服务代理授予工作流配置中指定的有效服务账号iam.serviceAccounts.actAs 权限。

对于已连接到第三方代码库的代码库:

  • 允许安排发布和工作流运行。
  • 如需启用基于版本配置的自动发布或基于工作流配置的自动运行,您必须向默认 Dataform 服务代理授予相关有效服务账号iam.serviceAccounts.actAs 权限:
    • 对于自动发布配置,请向由相应发布配置触发的所有工作流配置的有效服务账号授予相应权限。
    • 对于自动工作流配置,请向该工作流配置所用的有效服务账号授予相应权限。

后续步骤

  • 如需了解如何创建代码库,请参阅创建代码库
  • 如需详细了解 Dataform 如何与 BigQuery 搭配使用,请参阅工作流概览
  • 如需了解如何创建工作流配置,请参阅安排运行
  • 如需了解如何创建发布配置,请参阅配置编译