Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 想通过terraform为一个服务帐户分配多个Google cloud IAM角色吗_Google Cloud Platform_Terraform_Google Iam_Terraform Provider Gcp - Fatal编程技术网

Google cloud platform 想通过terraform为一个服务帐户分配多个Google cloud IAM角色吗

Google cloud platform 想通过terraform为一个服务帐户分配多个Google cloud IAM角色吗,google-cloud-platform,terraform,google-iam,terraform-provider-gcp,Google Cloud Platform,Terraform,Google Iam,Terraform Provider Gcp,希望通过terraform将多个IAM角色分配给单个服务帐户。准备了一个tf文件来执行此操作,但是发现了一些错误,如果我使用单个角色,那么它可以成功分配,但是当我尝试使用多个IAM角色时,会出现一些错误 data "google_iam_policy" "auth1" { binding { role = "roles/cloudsql.admin" members = [ "serviceAccount:${google_service_account.serv

希望通过terraform将多个IAM角色分配给单个服务帐户。准备了一个tf文件来执行此操作,但是发现了一些错误,如果我使用单个角色,那么它可以成功分配,但是当我尝试使用多个IAM角色时,会出现一些错误

data "google_iam_policy" "auth1" {
  binding {
    role = "roles/cloudsql.admin"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]    
    role = "roles/secretmanager.secretAccessor"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]      
    role = "roles/datastore.owner"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]  
    role = "roles/storage.admin"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]      
  }
}
您能否帮助我,如何针对单个服务帐户分配多个角色。

根据

每个文档配置必须有一个或多个绑定块,每个绑定块都接受以下参数:

你必须像这样重复绑定

data "google_iam_policy" "auth1" {
  binding {
    role = "roles/cloudsql.admin"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]
  }
  binding {
    role = "roles/secretmanager.secretAccessor"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]
  }
  binding {
    role = "roles/datastore.owner"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]
  }
  binding {
    role = "roles/storage.admin"
    members = [
      "serviceAccount:${google_service_account.service_account_1.email}",
    ]
  }
}

使用gcloud命令也是一样,您一次只能在电子邮件列表中添加一个角色。

嘿,您的问题不太清楚。。。。如果您告诉我们您收到的错误消息是什么呢?谢谢您的回答。它正在工作。但在通过terraform将此服务帐户分配给cloudrun服务时,我面临另一个错误。它表示不支持资源--
googleapi:Error 400:Role roles/datastore.owner不支持此资源。在helloworld-cloudrun.tf第60行,在资源“google_cloud_run_服务iam_策略”“auth1”:60:resource“google_cloud_运行服务iam_策略”“auth1”{
。我的云运行代码--
资源“google_cloud_run_service_iam_policy”“auth1”{location=google_cloud_run_service.helloworld.location project=google_cloud_run_service.helloworld.project service=google_cloud_run_service.helloworld.name policy_data=data.google_iam_policy.auth1.policy_data}
IAM角色一开始很奇怪。请这样想:
我想授予服务/项目/组织成员的角色
。您尝试执行的是
我想授予角色datastore.owner on member….on Cloud Run service
。Cloud Run和datastore之间没有关系。
您想授予角色吗成员上的datastore.owner…在项目上…
。在cloud run上,您只能授予有限数量的角色,
我想授予成员上的role run.invoker…用于cloud run服务
。这是有意义的。我不知道我是否清楚…所以请使用此资源
资源“google\u project\u iam\u binding”…