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 :
Utiliser des commandes supplémentaires qui ne s'appliquent qu'aux buckets pour lesquels l'accès uniforme au niveau du bucket est désactivé.
Utiliser des caractères génériques et des indicateurs récursifs.
Utiliser l'option
-u
pour spécifier des projets de facturation.Utiliser l'option
-m
pour exécuter des opérations en parallèle.
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.delete 1 |
|
config |
Aucun | |
cors |
get |
storage.buckets.get |
cors |
set |
storage.buckets.update |
cp |
storage.objects.list 2storage.objects.get storage.objects.create storage.objects.delete 3 |
|
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.create 4cloudkms.cryptoKeys.setIamPolicy |
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.get 5cloudkms.cryptoKeys.setIamPolicy 5 |
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.getIamPolicy 6 |
|
ls (création de fiches d'objets) |
storage.objects.list storage.objects.getIamPolicy 7 |
|
ls -b |
storage.buckets.get storage.buckets.getIamPolicy 6 |
|
mb |
storage.buckets.create |
|
mv |
storage.objects.list 2 (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.delete 3 (for the destination bucket) |
|
notification |
create |
storage.buckets.update pubsub.topics.get (pour le projet contenant le sujet Pub/Sub)pubsub.topics.create 8 (pour le projet contenant le sujet Pub/Sub)pubsub.topics.getIamPolicy (pour les notifications de réception de sujets Pub/Sub)pubsub.topics.setIamPolicy 8 (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.setIamPolicy |
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.createBillingAssignment 9 |
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 storage.objects.create storage.objects.delete 11storage.objects.list |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
rsync -a rsync -p |
Objets | storage.objects.get storage.objects.create storage.objects.delete cstorage.objects.list storage.objects.getIamPolicy storage.objects.setIamPolicy |
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
- Attribuez des rôles IAM au niveau du projet et du bucket.
- Consultez la page Rôles IAM contenant des autorisations Cloud Storage.