使用严格的“充当”模式

严格的“充当”模式会对 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 角色

Service Account User 角色 (roles/iam.serviceAccountUser) 包含 iam.serviceAccounts.actAs 权限,该权限是严格的“充当”模式所必需的。使用 Dataform API 时,您必须根据要调用的 projects.locations.repositories 方法,为有效服务账号授予 Service Account User 角色:

  • createpatch
    • 如果设置了 Repository.ServiceAccount 属性,则您应为该媒体资源授予 Service Account User 角色。
    • 如果您要调用 patch 方法,则应为代码库中所有工作流配置中的所有有效服务账号授予 Service Account User 角色。
  • workflowConfigs.createworkflowConfigs.patch
    • 您应为工作流配置中使用的有效服务账号授予 Service Account User 角色。
  • releaseConfigs.patch
    • 您应为使用此版本配置的工作流配置中使用的所有有效服务账号授予 Service Account User 角色。
  • workflowInvocations.create
    • 您应为工作流调用中使用的有效服务账号授予“服务账号用户”角色。

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

代码库的自动发布

启用 act-as 模式后,系统会停用 Dataform 仓库发布配置的自动发布功能。这不适用于连接到第三方代码库的代码库。

此外,如果您启用“充当”模式,系统会检查代码库是否使用 Cron 时间表设置了自动发布配置。这不适用于连接到第三方代码库的代码库。

后续步骤