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 à des utilisateurs et à des groupes.

Consultez les sections figurant après le tableau pour obtenir des commandes supplémentaires qui ne s'appliquent qu'aux buckets pour lesquels l'accès uniforme au niveau du bucket est désactivé, ainsi que les remarques sur l'utilisation des caractères génériques et des options -r, -u et -m.

Command Sous-commande Ressource concernée Autorisations IAM requises
cat Objets storage.objects.get
compose Objet storage.objects.get
storage.objects.create
storage.objects.delete1
config None
cors get Buckets storage.buckets.get
cors set Buckets storage.buckets.update
cp Objet 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 Bucket storage.buckets.get
defstorageclass set Buckets storage.buckets.update
du Objets storage.objects.get
hash Objets storage.objects.get
help Aucune
hmacKeys create Clés HMAC storage.hmacKeys.create
hmacKeys delete Clés HMAC storage.hmacKeys.delete
hmacKeys get Clés HMAC storage.hmacKeys.get
hmacKeys list Clés HMAC storage.hmacKeys.list
hmacKeys update Clés HMAC storage.hmacKeys.update
iam get Buckets storage.buckets.get
storage.buckets.getIamPolicy
iam set ou ch Bucket storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize Projets resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKey.setIamPolicy (pour la clé Cloud KMS autorisée)
kms encryption Bucket storage.buckets.get
kms encryption -d Buckets storage.buckets.get
storage.buckets.update
kms encryption -k Buckets, Projets7 storage.buckets.get
storage.buckets.update
resourceManager.projects.get7
cloudkms.cryptoKey.setIamPolicy7
kms serviceaccount Projets resourceManager.projects.get
label get Buckets storage.buckets.get
label set/ch Buckets storage.buckets.update
lifecycle get Buckets storage.buckets.get
lifecycle set/ch Buckets storage.buckets.update
logging get Buckets storage.buckets.get
logging set Buckets storage.buckets.update
ls Projets storage.buckets.list
storage.buckets.get5
storage.buckets.getIamPolicy6
ls Buckets, Objets storage.objects.list
storage.objects.get5
storage.objects.getIamPolicy10
ls -b Bucket storage.buckets.get
storage.buckets.getIamPolicy6
mb Bucket storage.buckets.create
mv Objet 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 Bucket 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 Bucket storage.buckets.update
notification delete Buckets storage.buckets.update
notification list Buckets storage.buckets.get
notification watchbucket Buckets storage.buckets.update
notification stopchannel Buckets storage.buckets.update
perfdiag Buckets storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb Buckets storage.buckets.delete
requesterpays get Buckets storage.buckets.get
requesterpays set on Buckets storage.buckets.get
storage.buckets.update
requesterpays set off Bucket storage.buckets.get
storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock ou set Buckets storage.buckets.update
retention event ou temp Objets storage.objects.get
storage.objects.list
storage.objects.update
retention get Buckets storage.buckets.get
rewrite -k Objets storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s Objets storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm Buckets storage.buckets.delete
storage.objects.delete
storage.objects.list
rm Objets storage.objects.delete
storage.objects.get
rsync Objet 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 Objet storage.objects.list (pour les buckets sources et de destination)
setmeta Objets storage.objects.get
storage.objects.list
storage.objects.update
signurl Aucun. Toutefois, le compte de service associé à la requête doit comporter storage.objects.get.
stat Objets storage.objects.get
test Aucune
ubla set Buckets storage.buckets.get
storage.buckets.update
ubla get Bucket storage.buckets.get
update None
version Aucune
versioning get Buckets storage.buckets.get
versioning set Buckets storage.buckets.update
web get Buckets storage.buckets.get
web set Bucket 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 n'utilisez pas l'option -n et que vous insérez un objet ayant le même nom qu'un objet 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 Cette autorisation n'est requise que si vous utilisez l'option -L ou -l dans la commande.

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

7 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.

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

10 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é.

11 Cette autorisation n'est requise que si vous n'utilisez pas l'option -d et que vous insérez un objet ayant le même nom qu'un objet présent dans le bucket.

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é.

Command 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 Objet storage.objects.get
storage.objects.getIamPolicy
acl set ou ch Objet storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a ou cp -p Objet 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 Bucket 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 Objet storage.objects.get
storage.objects.getIamPolicy
iam set ou ch Objet storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a ou mv -p Objet 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 Objet 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 n'utilisez pas l'option -n et que vous insérez un objet ayant le même nom qu'un objet présent dans le bucket.

c Cette autorisation n'est requise que si vous n'utilisez pas l'option -d et que vous insérez un objet ayant le même nom qu'un objet présent dans le bucket.

Indicateur de niveau supérieur -u

Si vous utilisez l'indicateur de niveau supérieur -upour 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'indicateur de niveau supérieur -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.

Étapes suivantes