严格的“以用户身份执行”模式可针对 Dataform 中的以下用户操作启用额外的安全检查:
- 创建或更新代码库
- 创建或更新工作流配置
- 创建工作流调用
- 更新发布配置
这项额外的安全检查要求执行这些操作的用户对有效服务账号(即用于执行工作流的服务账号)拥有 iam.serviceAccounts.actAs
权限。如需详细了解服务账号,请参阅将服务账号附加到资源。
您可以通过以下方式启用此模式:
- 创建代码库时
- 使用
strict_act_as_checks
代码库标志更新现有代码库时
所需的角色
如需获得完成本文档中的任务所需的权限,请让您的管理员为您授予自定义服务账号的 Service Account User (roles/iam.serviceAccountUser
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
确定有效服务账号
您可以根据资源类型和以下条件,确定正在执行工作流程的有效服务账号:
资源类型 | 有效服务账号 |
---|---|
代码库 | 如果您在创建仓库时选择服务账号,则使用 否则,此值默认为 Dataform 服务账号。 |
工作流配置 | 您可以在创建工作流配置时选择服务账号。 否则,此值默认为代码库的 Dataform 服务账号。 |
工作流调用 | 如果编译结果为 如果您从编译结果创建工作流调用,则系统会使用 否则,此值默认为代码库的 Dataform 服务账号。 |
授予 Service Account User IAM 角色
服务账号用户角色 (roles/iam.serviceAccountUser
) 包含 iam.serviceAccounts.actAs
权限,这是严格的“以服务账号身份执行操作”模式所必需的权限。使用 Dataform API 时,您必须根据所调用的 projects.locations.repositories
方法为有效服务账号授予服务账号用户角色:
create
或patch
- 如果设置了
Repository.ServiceAccount
属性,则您应该已获得该属性的服务账号用户角色。 - 如果您要调用
patch
方法,则应为代码库中所有工作流配置中的所有有效服务账号授予 Service Account User 角色。
- 如果设置了
workflowConfigs.create
或workflowConfigs.patch
- 您应具有为工作流配置中使用的有效服务账号授予的服务账号用户角色。
releaseConfigs.patch
- 您应针对工作流配置中使用的所有有效服务账号,授予服务账号用户角色。
workflowInvocations.create
- 您应具有在工作流调用中使用的有效服务账号的“服务账号用户”角色。
如需了解详情,请参阅创建工作流配置所需的角色和创建发布配置所需的角色。
代码库的自动发布
启用 act-as 模式后,系统会针对 Dataform 仓库发布配置停用自动发布功能。这不适用于连接到第三方代码库的代码库。
此外,如果您启用“以其他用户身份操作”模式,系统会检查代码库是否已使用 Cron 调度设置自动发布配置。这不适用于连接到第三方代码库的代码库。