Google cloud platform 错误:(gcloud.composer.environments.update)在terraform作为第二个帐户运行模拟时模拟失败

Google cloud platform 错误:(gcloud.composer.environments.update)在terraform作为第二个帐户运行模拟时模拟失败,google-cloud-platform,terraform,impersonation,service-accounts,google-cloud-iam,Google Cloud Platform,Terraform,Impersonation,Service Accounts,Google Cloud Iam,当我运行terraform应用程序时,出现以下错误(请参见下文) 我正在运行Terraform 12.x GCP Cloud Build在不同的项目中运行,而非项目abcd(这些帐户所在的位置) 我的terraform代码尝试在GCP云构建容器中执行gcloud命令。它通过模仿作曲家bq来实现-sa@prj-abcd.iam.gserviceaccount.com terraform运行的服务帐户为: terraform_服务_账户=“组织-terraform@abcd.iam.gservice

当我运行terraform应用程序时,出现以下错误(请参见下文)

我正在运行Terraform 12.x

GCP Cloud Build在不同的项目中运行,而非项目abcd(这些帐户所在的位置)

我的terraform代码尝试在GCP云构建容器中执行gcloud命令。它通过模仿作曲家bq来实现-sa@prj-abcd.iam.gserviceaccount.com

terraform运行的服务帐户为: terraform_服务_账户=“组织-terraform@abcd.iam.gserviceaccount.com” (模仿前)

此IAM帐户(org)-terraform@abcd.iam.gserviceaccount.com)(非服务帐户)具有以下角色绑定(共9个): (该电子邮件中没有服务帐户)

服务帐户(composer bq)-sa@prj-abcd.iam.gserviceaccount.com)的成员之一是:org-terraform@abcd.iam.gserviceaccount.com 当我看到标题为“有权访问此服务帐户的成员”的屏幕并看到org时-terraform@abcd.iam.gserviceaccount.com,我发现它具有以下角色绑定(仅4个):

为什么即使IAM帐户显然具有正确的角色,并且它是其冒充的服务帐户的成员之一,我仍会出现以下错误

错误

重述:
要授予用户模拟服务帐户的权限,请遵循文档中列出的说明。
根据用例,您可以授予用户以下角色:

  • 角色/iam.serviceAccountUser
  • 角色/iam.serviceAccountTokenCreator
  • 角色/iam.workloadIdentityUser

看看这个,手动检查Terraform的所有功能。如果您遇到更多错误,请更新问题。谢谢。事实上,问题在于terraform@abcd.iam.gserviceaccount.com未获得冒充作曲家bq的明确权限-sa@prj-abcd.iam.gserviceaccount.com。你查阅的那份文件有这样做的指示。如果你加上上面的答案,我会接受它作为正确的答案。非常感谢。
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
Service Account Token Creator
Owner
Security Admin
Service Account Admin
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.