【问题标题】:How to resolve "googleapi: Error 403: The caller does not have permission, forbidden"如何解决“googleapi:错误403:调用者没有权限,禁止”
【发布时间】:2021-08-26 15:19:44
【问题描述】:

我正在使用 terraform 在 GCP 中构建基础设施。我正在尝试使用 terraform 将角色分配给service account,但无法这样做。以下是我的代码:

sa.tf:

resource "google_service_account" "mojo-terra" {
  account_id   = "mojo-terra"
  description  = "Service account used for terraform script"
}

resource "google_project_iam_member" "mojo-roles" {
  count = length(var.rolesList)
  role =  var.rolesList[count.index]
  member = "serviceAccount:${google_service_account.mojo-terra.email}"
}

dev.tfvars:

rolesList = [
    "roles/iam.serviceAccountUser"
]

cloudbuild 日志:

Step #2: Error: Error when reading or editing Resource "project \"poc-dev\"" with IAM Policy: Error retrieving IAM policy for project "poc-dev": googleapi: Error 403: The caller does not have permission, forbidden
Step #2: 
Step #2: 
Step #2: 
Step #2: Error: Error when reading or editing Resource "project \"poc-dev\"" with IAM Member: Role "roles/iam.serviceAccountUser" Member "serviceAccount:asadsfs@poc-dev-1221.iam.gserviceaccount.com": Error retrieving IAM policy for project "poc-dev": googleapi: Error 403: The caller does not have permission, forbidden
Step #2: 

以下是附加到我的cloudbuild service account 的角色: Custom Role cloudbuild, Cloud Build Service Account, Service Account Admin, Create Service Accounts, Delete Service Accounts, Service Account User, Storage Admin

【问题讨论】:

    标签: google-cloud-platform terraform terraform-provider-gcp google-cloud-iam


    【解决方案1】:

    向 Terraform 提供授权的服务帐户缺少权限 resourcemanager.projects.getIamPolicy,这是错误消息的来源。

    服务帐号也缺少更改 IAM 政策所需的权限 resourcemanager.projects.setIamPolicy

    这些权限是角色 roles/resourcemanager.projectIamAdmin(项目 IAM 管理员)的一部分。

    列出分配给服务帐户的角色:

    gcloud projects get-iam-policy <YOUR GCLOUD PROJECT ID> \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:<YOUR SERVICE ACCOUNT>"
    

    列出角色包含的权限:

    gcloud iam roles describe roles/resourcemanager.projectIamAdmin
    

    将所需角色添加到服务帐户:

    gcloud projects add-iam-policy-binding <YOUR GCLOUD PROJECT ID> \
    --member=serviceAccount:<YOUR SERVICE ACCOUNT> \
    --role=roles/resourcemanager.projectIamAdmin
    

    【讨论】:

    • 您好,我已将 Project IAM 管理员角色分配给 cloudbuild 服务帐户。现在,我收到此错误Step #2: Step #2: Error: Request "Create IAM Members roles/iam.serviceAccountUser serviceAccount:mojo-terra@poc-de.iam.gserviceaccount.com for \"project \\\"poc-de"\"" returned error: Error applying IAM policy for project "poc-de": Error setting IAM policy for project "poc-de": googleapi: Error 403: Policy update access denied., forbidden Step #2: Step #2: on serviceAccount.tf line 34, in resource "google_project_iam_member" "mojo-roles": Step #2:
    • @Pritish 如果您收到该错误,您没有正确授予角色。运行我的第一个命令并将输出发布到您的问题中。
    猜你喜欢
    • 2020-06-02
    • 2022-11-09
    • 1970-01-01
    • 2021-04-06
    • 2021-05-31
    • 2021-06-16
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多