【发布时间】:2021-07-09 05:21:58
【问题描述】:
运行 terraform apply 时出现以下错误(请参见下文)。
我正在运行 Terraform 12.x。
GCP Cloud Build 在 project-abcd(这些帐户所在的位置)以外的其他项目中运行
我的 terraform 代码尝试在 GCP 云构建容器中执行 gcloud 命令。它通过冒充 composer-bq-sa@prj-abcd.iam.gserviceaccount.com
来实现terraform 运行的服务帐号如下: terraform_service_account = "org-terraform@abcd.iam.gserviceaccount.com" (冒充前)
此 IAM 帐户 (org-terraform@abcd.iam.gserviceaccount.com)(不是服务帐户)具有以下角色绑定(共 9 个): (该电子邮件没有服务帐户)
Composer Administrator
Compute Network Admin
Service Account Token Creator
Owner
Access Context Manager Admin
Security Admin
Service Account Admin
Logs Configuration Writer
Security Center Notification Configurations Editor
服务帐户 (composer-bq-sa@prj-abcd.iam.gserviceaccount.com) 的成员之一是:org-terraform@abcd.iam.gserviceaccount。 com 当我查看标题为“有权访问此服务帐户的成员”的屏幕并查看 org-terraform@abcd.iam.gserviceaccount.com 时,我看到它具有以下角色绑定(仅4):
Service Account Token Creator
Owner
Security Admin
Service Account Admin
即使 IAM 帐户显然具有正确的角色并且它是它所冒充的服务帐户的成员之一,为什么我会收到以下错误?
错误
module.gcloud_composer_bucket_env_var.null_resource.run_command[0] (local-exec): WARNING: This command
is using service account impersonation. All API calls will be executed as [**composer-bq-sa@prj-abcd.iam.gserviceaccount.com**].
module.gcloud_composer_bucket_env_var.null_resource.run_command[0] (local-exec): ERROR:
(gcloud.composer.environments.update) Failed to impersonate [**composer-bq-sa@prj-abcd.iam.gserviceaccount.com**]. Make sure the account that's trying to impersonate it has access to the service account itself and the "roles/iam.serviceAccountTokenCreator" role.
【问题讨论】:
-
看看这个document 并手动检查 Terraform 所做的一切。如果遇到更多错误,请更新问题。
-
谢谢。实际上,问题在于 terraform@abcd.iam.gserviceaccount.com 没有被明确授予冒充 composer-bq-sa@prj-abcd.iam.gserviceaccount.com 的权限。你参考的那个文件有这样做的说明。如果您将以上内容添加为答案,我将接受它作为正确答案。谢谢。
标签: google-cloud-platform terraform impersonation service-accounts google-cloud-iam