我已经为 Terraform 创建了一个服务帐户。我们的部分流程是创建一些存储桶并通过 Terraform 维护它们。
然而,当我们运行时,terraform apply
我们得到以下错误:
google_storage_bucket.state_bucket: googleapi: Error 403: terraform@{project}.iam.gserviceaccount.com does not have storage.buckets.create access to project {project_id}.
我已应用以下 IAM 权限,但无济于事:
Project Owner
Storage Admin
Storage Object Admin
答案1
我也遇到了同样的问题。我们在 GCP 上使用组织。我使用了这个脚本在 terraform-admin 项目中创建 terraform 帐户,我创建该项目只是为了保存主 terraform 服务帐户,我们使用该帐户设置更高级别的项目和环境。
事实证明,我在管理项目中为 terraform@{project}.iam.gserviceaccount.com 设置的角色是该项目的本地角色。即,在组织 IAM 视图中,此服务帐户仅显示“帐单帐户用户”和“项目创建者”。
我不确定,但我认为其他组织范围的项目无法读取其他项目中设置的角色(或者特定服务帐户的其他项目中设置的角色被该服务帐户的组织范围角色中设置的角色覆盖。)
将“存储管理员”和“查看者”角色添加到组织范围服务帐户可修复此错误。
PS,我认为使用 terraform enterprise 可以管理组织范围内的用户,从而可以在组织范围内创建和管理 terraform 服务帐户,避免需要手动将组织范围角色添加到社区版本所体验的服务帐户中。