在 Terraform for GCP 中允许帐户和角色时出错

Posted

技术标签:

【中文标题】在 Terraform for GCP 中允许帐户和角色时出错【英文标题】:Getting error while allowing accounts and roles in Terraform for GCP 【发布时间】:2021-04-16 01:24:02 【问题描述】:

我正在尝试在 GCP 项目的 Terraform 文件中将角色分配给用户,但出现以下错误:

错误:请求“创建 IAM 成员角色/compute.networkAdmin 用户:someone@google.com 为“项目 \"vibrant-mantis-296207\""”返回错误:批量请求和重试单个请求“创建 IAM 成员角色” /compute.networkAdmin user:someone@google.com for "project \"vibrant-mantis-296207\""" 都失败了。最终错误:为项目“vibrant-mantis-296207”应用 IAM 策略时出错:为项目“vibrant-mantis-296207”设置 IAM 策略时出错:googleapi:错误 403:策略更新访问被拒绝。,禁止

我使用了以下代码:

module "projects_iam_bindings" 
 source  = "terraform-google-modules/iam/google//modules/projects_iam"
 version = "~> 6.4"

 projects = ["vibrant-mantis-296207"]

 bindings = 
 "roles/storage.admin" = [
 "user:someone@google.com",
    ]

 "roles/compute.networkAdmin" = [
 "user:someone@google.com",
    ]

【问题讨论】:

【参考方案1】:

Terraform 用于授权的用户/服务帐户没有权限resourcemanager.projects.setIamPolicy

解决方案是编辑用户/服务帐户的 IAM 权限,以包含一个作为该权限的角色。

具有resourcemanager.projects.setIamPolicy 权限的示例角色:

roles/iam.securityAdmin roles/resourcemanager.projectIamAdmin roles/resourcemanager.folderAdmin roles/resourcemanager.organizationAdmin

Granting, changing, and revoking access to resources

【讨论】:

【参考方案2】:

在 Google Cloud Platform 上转到 IAM,在 IAM & Admin 中选择您的 terraform 服务 yourproject.iam.gserviceaccount.com 并将 role 添加/更改为 Owner

在控制台中,再次运行您的 terraform 命令,它应该会被修复。

命令:

terraform init
terraform plan
terraform apply

【讨论】:

以上是关于在 Terraform for GCP 中允许帐户和角色时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 terraform 中正确创建具有角色的 gcp 服务帐户

Terraform GCP 将 IAM 角色分配给服务帐户

等待 GCP 基础架构更改传播的 Terraform 问题

为 Terraform 服务帐户定义 ClusterRoleBinding

我可以使用 Terraform 创建 GCP API 密钥吗?

如何在 Rider for Mac 版本中允许“不安全代码”?