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?
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:
my_sa
en dessous de IAM & Admin
/IAM
my_sa
en dessous de IAM & Admin
/Service accounts
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