使用严格的“充当”模式

严格的“以用户身份执行”模式可针对 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 属性,则您应该已获得该属性的服务账号用户角色。
    • 如果您要调用 patch 方法,则应为代码库中所有工作流配置中的所有有效服务账号授予 Service Account User 角色。
  • workflowConfigs.createworkflowConfigs.patch
    • 您应具有为工作流配置中使用的有效服务账号授予的服务账号用户角色。
  • releaseConfigs.patch
    • 您应针对工作流配置中使用的所有有效服务账号,授予服务账号用户角色。
  • workflowInvocations.create
    • 您应具有在工作流调用中使用的有效服务账号的“服务账号用户”角色。

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

代码库的自动发布

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

此外,如果您启用“以其他用户身份操作”模式,系统会检查代码库是否已使用 Cron 调度设置自动发布配置。这不适用于连接到第三方代码库的代码库。

后续步骤

  • 如需详细了解如何创建代码库,请参阅创建代码库
  • 如需了解如何创建工作流配置,请参阅安排运行
  • 如需了解如何创建发布配置,请参阅配置编译