【问题标题】:ERROR: (gcloud.composer.environments.update) Failed to impersonate when terraform runs impersonating as a second account错误:(gcloud.composer.environments.update)当 terraform 作为第二个帐户运行时无法模拟
【发布时间】: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


【解决方案1】:

重述:
要授予用户模拟服务帐户的权限,请按照this 文档中列出的说明进行操作。
根据用例,您可以授予用户以下角色:

  • roles/iam.serviceAccountUser
  • roles/iam.serviceAccountTokenCreator
  • roles/iam.workloadIdentityUser

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多