Autorisations IAM pour les commandes gsutil

Le tableau ci-dessous répertorie les autorisations IAM (Identity and Access Management) requises pour exécuter chaque commande gsutil de Cloud Storage sur une ressource donnée. Les autorisations IAM sont regroupées pour créer des rôles, qui sont attribués aux utilisateurs et aux groupes.

Cette page contient également des informations sur les éléments suivants :

Commande Sous-commande Autorisations IAM requises
autoclass get storage.buckets.get
autoclass set storage.buckets.update
cat storage.objects.get
compose storage.objects.get
storage.objects.create
storage.objects.delete1
config Aucun
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2 (pour le bucket de destination)
storage.objects.get (pour les objets sources)
storage.objects.create (pour le bucket de destination)
storage.objects.delete3 (pour le bucket de destination)
defstorageclass get storage.buckets.get
defstorageclass set storage.buckets.update
du storage.objects.get
hash storage.objects.get
help Aucun
hmacKeys create storage.hmacKeys.create
hmacKeys delete storage.hmacKeys.delete
hmacKeys get storage.hmacKeys.get
hmacKeys list storage.hmacKeys.list
hmacKeys update storage.hmacKeys.update
iam get storage.buckets.get
storage.buckets.getIamPolicy
iam set ou ch storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy (pour la clé Cloud KMS autorisée)
kms encryption storage.buckets.get
kms encryption -d storage.buckets.get
storage.buckets.update
kms encryption -k storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
kms serviceaccount resourceManager.projects.get
label get storage.buckets.get
label set/ch storage.buckets.update
lifecycle get storage.buckets.get
lifecycle set/ch storage.buckets.update
logging get storage.buckets.get
logging set storage.buckets.update
ls (création de listes de buckets) storage.buckets.list
storage.buckets.getIamPolicy6
ls (création de fiches d'objets) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2 (pour le bucket de destination)
storage.objects.get (pour les objets sources)
storage.objects.create (pour le bucket de destination)
storage.objects.delete (pour le bucket source)
storage.objects.delete3 (for the destination bucket)
notification create storage.buckets.update
pubsub.topics.get (pour le projet contenant le sujet Pub/Sub)
pubsub.topics.create8 (pour le projet contenant le sujet Pub/Sub)
pubsub.topics.getIamPolicy (pour les notifications de réception de sujets Pub/Sub)
pubsub.topics.setIamPolicy8 (pour les notifications de réception de sujets Pub/Sub)
notification create -s storage.buckets.update
notification delete storage.buckets.get
storage.buckets.update
notification list storage.buckets.get
notification watchbucket storage.buckets.update
notification stopchannel storage.buckets.update
pap get storage.buckets.get
pap set storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
perfdiag storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb storage.buckets.delete
requesterpays get storage.buckets.get
requesterpays set on storage.buckets.update
requesterpays set off storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock ou set storage.buckets.update
retention event ou temp storage.objects.get
storage.objects.list
storage.objects.update
retention get storage.buckets.get
rewrite -k storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm storage.objects.delete
rm -a storage.objects.delete
storage.objects.list
rm -r (suppression d'un bucket) storage.buckets.delete
storage.objects.delete
storage.objects.list
rpo get storage.buckets.get
rpo set storage.buckets.get
storage.buckets.update
rsync storage.objects.get (pour les objets sources et le bucket de destination)
storage.objects.create (pour le bucket de destination)
storage.objects.delete11 (pour le bucket de destination)
storage.objects.list (pour les buckets source et de destination)
rsync -n storage.objects.list (pour les buckets sources et de destination)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl Aucun ; toutefois, le compte de service dont la clé est utilisée dans le cadre de cette commande doit être autorisé à effectuer l'encodage de la requête dans l'URL signée.
stat storage.objects.get
test Aucun
ubla set storage.buckets.get
storage.buckets.update
ubla get storage.buckets.get
update None
version Aucun
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

1 Cette autorisation n'est requise que si l'objet composé a le même nom qu'un objet présent dans le bucket.

2 Cette autorisation n'est requise que lorsque la destination dans la commande contient un chemin d'accès à un objet.

3 Cette autorisation n'est requise que si vous utilisez des importations composites parallèles ou si vous n'utilisez pas l'option -n, mais insérez un objet qui porte le même nom qu'un objet déjà présent dans le bucket.

4 Cette autorisation n'est requise que si aucun compte de service Cloud Storage n'est associé au projet.

5 Si vous utilisez gsutil kms encryption -k et que le compte de service de votre projet n'est pas autorisé à accéder à la clé Cloud KMS demandée, gsutil exécute gsutil kms authorize afin d'accorder à votre compte de service l'autorisation requise.

6 Cette autorisation n'est requise que si vous souhaitez que les stratégies IAM soient incluses dans les détails.

7 Cette autorisation n'est requise que si vous souhaitez que les stratégies IAM soient incluses dans les détails. Elle ne s'applique pas aux buckets pour lesquels l'accès uniforme au niveau du bucket est activé.

8 Cette autorisation n'est pas requise si le sujet existe déjà et si le compte de service approprié y a accès.

9 Cette autorisation n'est nécessaire que si vous n'incluez pas de projet de facturation dans votre requête. Pour plus d'informations, consultez la section Exigences relatives à l'utilisation et aux accès sur la page "Paiements du demandeur".

10Cette autorisation n'est pas requise si la commande ne modifie pas le paramètre du bucket.

11 Cette autorisation n'est requise que si vous utilisez l'option -d ou si vous insérez un objet portant le même nom qu'un objet qui existe déjà dans le bucket mais ayant des données différentes.

Méthodes associées aux LCA

Le tableau suivant répertorie les autorisations IAM requises pour exécuter des commandes gsutil qui s'appliquent spécifiquement à la gestion des LCA. Ces commandes ne s'appliquent qu'aux buckets pour lesquels l'accès uniforme au niveau du bucket est désactivé.

Commande Sous-commande Ressource concernée Autorisations IAM requises
acl get Buckets storage.buckets.get
storage.buckets.getIamPolicy
acl set ou ch Buckets storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get Objets storage.objects.get
storage.objects.getIamPolicy
acl set ou ch Objets storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a ou cp -p Objets storage.objects.lista (pour le bucket de destination)
storage.objects.get (pour les objets sources)
storage.objects.create (pour le bucket de destination)
storage.objects.deleteb (pour le bucket de destination)
storage.objects.getIamPolicy (pour les objets sources)
storage.objects.setIamPolicy (for the destination bucket)
defacl get Buckets storage.buckets.get
storage.buckets.getIamPolicy
defacl set ou ch Buckets storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get Objets storage.objects.get
storage.objects.getIamPolicy
iam set ou ch Objets storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a ou mv -p Objets storage.objects.lista (pour le bucket de destination)
storage.objects.get (pour les objets sources)
storage.objects.create (pour le bucket de destination)
storage.objects.delete (pour le bucket source)
storage.objects.deleteb (pour le bucket de destination)
storage.objects.getIamPolicy (pour les objets sources)
storage.objects.setIamPolicy (pour le bucket de destination)
rsync -a ou rsync -p Objets storage.objects.get (pour les objets sources et le bucket de destination)
storage.objects.create (pour le bucket de destination)
storage.objects.deletec (pour le bucket de destination)
storage.objects.list (pour les buckets source et de destination)
storage.objects.getIamPolicy (pour les objets sources)
storage.objects.setIamPolicy (pour le bucket de destination)

a Cette autorisation n'est requise que lorsque la destination dans la commande contient un chemin d'accès à un objet.

b Cette autorisation n'est requise que si vous utilisez des importations composites parallèles ou si vous n'utilisez pas l'option -n, mais insérez un objet qui porte le même nom qu'un objet déjà présent dans le bucket.

c Cette autorisation n'est requise que si vous utilisez l'option -d ou si vous insérez un objet portant le même nom qu'un objet qui existe déjà dans le bucket mais ayant des données différentes.

Indicateur de niveau supérieur -u

Si vous utilisez l'option globale -u pour spécifier un projet qui doit être facturé pour votre requête, vous devez obtenir l'autorisation serviceusage.services.use pour le projet que vous spécifiez. L'indicateur -u est utilisé, par exemple, lors de l'accès à un bucket avec l'option Paiements du demandeur activée.

Caractères génériques et indicateurs récursifs

Si vous utilisez des caractères génériques d'URI pour sélectionner plusieurs objets dans une commande, vous devez disposer d'une autorisation storage.objects.list pour le bucket contenant les objets. De même, si vous utilisez des caractères génériques d'URI pour sélectionner plusieurs buckets dans une commande, vous devez disposer d'une autorisation storage.buckets.list pour le ou les projets contenant les buckets.

Si vous utilisez les indicateurs récursifs (-r et -R), vous devez disposer de l'autorisation storage.objects.list pour le bucket concerné, en plus des autorisations requises pour la commande spécifique que vous utilisez.

Indicateur de niveau supérieur -m

Normalement, si vous utilisez une commande gsutil qui agit sur plusieurs objets ou buckets, la commande échoue à la première erreur. Cependant, lorsque vous utilisez l'option globale -m, gsutil enregistre les erreurs rencontrées et poursuit l'opération.

Par exemple, supposons que vous tentiez d'exécuter une commande acl set sur une série d'objets, mais que vous ne soyez autorisé à le faire que sur certains objets. Si vous n'utilisez pas l'indicateur -m, gsutil applique les LCA jusqu'à parvenir à un objet pour lequel vous n'êtes pas autorisé à appliquer une LCA. À ce stade, gsutil échoue. Si vous utilisez l'indicateur -m, gsutil enregistre les erreurs qui surviennent lors des tentatives d'application d'une LCA à un objet pour lequel vous ne disposez pas de l'autorisation, mais poursuit l'opération.

Étape suivante