web-dev-qa-db-fra.com

le compte de service n'a pas accès à storage.objects.get pour Google Cloud Storage

J'ai créé un compte de service dans Google Cloud Console et sélectionné le rôle Storage/Storage Admin (c.-à-d. contrôle total des ressources GCS).

gcloud projects get-iam-policy my_project semble indiquer que le rôle a bien été sélectionné:

- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.admin
- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.objectAdmin
- members:
  - serviceAccount:my_sa@my_project.iam.gserviceaccount.com
  role: roles/storage.objectCreator

Et documentation indique clairement que le rôle roles/storage.admin comprend les autorisations storage.objects.* (aussi bien que storage.buckets.*).

Mais lorsque j'essaie d'utiliser ce compte de service conjointement avec la bibliothèque cliente Google Cloud Storage pour Python, je reçois ce message d'erreur:

my_sa@my_project.iam.gserviceaccount.com n'a pas accès à storage.objects.get à my_project/my_bucket.

Alors pourquoi le rôle choisi ne serait-il pas suffisant dans ce contexte?

6
Drux

Le problème était apparemment que le compte de service était associé à trop de rôles, peut-être à la suite de tentatives de configuration précédentes.

Ces étapes ont résolu le problème:

  • supprimé tous les (trois) rôles pour le compte de service (membre) incriminé my_sa en dessous de IAM & Admin/IAM
  • supprimé my_sa en dessous de IAM & Admin/Service accounts
  • recréé my_sa (à nouveau avec le rôle Storage/Storage Admin)

Les effets sont comme ceci:

  • my_sa apparaît avec un rôle (Storage Admin) en dessous de IAM & Admin/IAM
  • my_sa apparaît en tant que membre sous Storage/Browser/my_bucket/Edit bucket permissions
1
Drux