web-dev-qa-db-fra.com

Comment résoudre "Googleapi: Erreur 403: L'appelant n'a pas la permission, interdit"

J'utilise Terraform pour construire infra dans GCP. J'essaie d'attribuer des rôles à un service account Utiliser Terraform, mais incapable de le faire. Ci-dessous mon code:

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"
]

journaux de 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:[email protected]": Error retrieving IAM policy for project "poc-dev": googleapi: Error 403: The caller does not have permission, forbidden
Step #2: 

Vous trouverez ci-dessous les rôles attachés à mon cloudbuild service account: Custom Role cloudbuild, Cloud Build Service Account, Service Account Admin, Create Service Accounts, Delete Service Accounts, Service Account User, Storage Admin

2
Pritish

Le compte de service fournissant l'autorisation de Terraform est l'autorisation resourcemanager.projects.getIamPolicy Quelle est la source du message d'erreur.

Le compte de service manque également la permission resourcemanager.projects.setIamPolicy qui est tenu de modifier les politiques IAM.

Ces autorisations font partie du rôle roles/resourcemanager.projectIamAdmin (Projet iam admin).

Pour énumérer les rôles attribués au compte de service:

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

Pour énumérer les autorisations qu'un rôle contient:

gcloud iam roles describe roles/resourcemanager.projectIamAdmin

Pour ajouter le rôle requis au compte de service:

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