我想使用地形为基础设施部署创建一个云构建触发器。我希望使用用户指定的“地形服务帐户”来创建和运行云构建触发器(即希望在云构建中实现服务帐户模拟概念)。“地形服务帐户”存在于另一个项目中,而不是云构建项目中。
执行的步骤:
手动创建两个项目-“种子项目”&;“cicd项目”。
Terraform服务帐户和gcs桶(用于存储tf状态文件)是在“种子项目”中创建的。
云构建触发器需要在“cicd项目”中创建。
要使用,请在云构建触发器中使用用户指定的服务帐户,请遵循参考文章中的以下权限。
a) 禁用了“种子项目”上的组织策略“disableCrossProjectServiceAccountUsage”。
b) 将“roles/iam.serviceAccountTokenCreator”角色授予在“种子项目”中创建的terraform服务帐户上的项目“cicd项目”的云构建服务代理。
参考:https://cloud.google.com/build/docs/securing-builds/configure-user-specified-service-accounts
- 此外,由于我正在手动创建云构建触发器,因此我已授予用户电子邮件以下权限
a) “种子项目”的“所有者”角色。
b) “cicd项目”上的“所有者”角色。
c) “种子项目”中存在的地形服务帐户上的“服务帐户令牌创建者”角色。
错误:
创建生成触发器时,我收到以下错误:
未能创建触发器:generic::permission_denied:用户对指定的触发器服务帐户没有模拟权限:projects/ccid project/serviceAccounts/terraform-manual-sa@seed-project.iam.gserviceaccount.com
我无法理解实现这个用例所需的缺失权限。
任何帮助都将不胜感激。提前感谢。