【问题标题】:Google Cloud Service Account assign datastore.owner via TerraformGoogle Cloud Service Account 通过 Terraform 分配 datastore.owner
【发布时间】:2020-04-29 03:46:20
【问题描述】:

我在 Terraform 中创建了一个 Google 云服务帐户用户:

resource "google_service_account" "firestore_sa" {
  account_id   = "firestore_sa_${random_id.project-unique-id.hex}"
}

我想授予服务帐户所有者访问 Firestore 的权限并尝试了此操作,但没有成功:

resource "google_service_account_iam_binding" "firestore_sa_role" {
  service_account_id = google_service_account.firestore_sa.name
  role               = "roles/datastore.owner"
  members            = ["serviceAccount:${google_service_account.firestore_sa.email}"]
}

我得到的错误是:

错误 400:此资源不支持角色角色/datastore.owner。错误请求

我可以使用 GCloud 轻松添加:

gcloud projects add-iam-policy-binding MyProject-ABC123 \
  --member serviceAccount:firestore_sa@myproject-abc123.iam.gserviceaccount.com \
  --role roles/datastore.owner

我在两者之间翻译时遇到问题,需要一些帮助。

【问题讨论】:

    标签: terraform-provider-gcp


    【解决方案1】:

    我明白了!

    第一部分是 gcloud 命令隐藏了 Terraform 没有隐藏的东西 - 你需要所有这 3 个:

    1. google_service_account (+key)
    2. google_project_iam_binding
    3. google_project_iam_member

    第二部分是我使用google_service_account_iam_binding 而不是使用项目绑定。项目绑定是我在这里真正需要的。所以我的最终配置看起来像:

    resource "google_project_iam_binding" "firestore_sa_binding" 
    {
      role    = "roles/datastore.owner"
      members = ["serviceAccount:${google_service_account.firestore_sa.email}"]
    }
    
    resource "google_project_iam_member" "firestore_sa_member" {
      role   = "roles/datastore.owner"
      member = "serviceAccount:${google_service_account.firestore_sa.email}"
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 2020-06-26
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      相关资源
      最近更新 更多