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 Ressource à laquelle vous pouvez attribuer le rôle Autorisations IAM requises
autoclass get Buckets storage.buckets.get
autoclass set Buckets storage.buckets.update
cat Objets storage.objects.get
compose Objets storage.objects.get
storage.objects.create
storage.objects.delete1
config None
cors get Buckets storage.buckets.get
cors set Buckets storage.buckets.update
cp Objets 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 Buckets 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 Buckets storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize Projets resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy (pour la clé Cloud KMS autorisée)
kms encryption Buckets storage.buckets.get
kms encryption -d Buckets storage.buckets.get
storage.buckets.update
kms encryption -k Buckets, Projets5 storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
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.getIamPolicy6
ls Buckets, Objets storage.objects.list
storage.objects.getIamPolicy7
ls -b Buckets storage.buckets.get
storage.buckets.getIamPolicy6
mb Buckets storage.buckets.create
mv Objets 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 Buckets 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 Buckets storage.buckets.update
notification delete Buckets storage.buckets.get
storage.buckets.update
notification list Buckets storage.buckets.get
notification watchbucket Buckets storage.buckets.update
notification stopchannel Buckets storage.buckets.update
pap get Buckets storage.buckets.get
pap set Buckets storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
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.update
requesterpays set off Buckets 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.list
rpo get Buckets storage.buckets.get
rpo set Buckets storage.buckets.get
storage.buckets.update
rsync Objets 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 Objets 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 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 Objets storage.objects.get
test Aucune
ubla set Buckets storage.buckets.get
storage.buckets.update
ubla get Buckets 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 Buckets 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".

10 Cette 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