Permisos de IAM para comandos de gsutil

En la siguiente tabla, se enumeran los permisos de administración de identidades y accesos (IAM) necesarios para ejecutar cada comando de gsutil de Cloud Storage en un recurso dado. Los permisos de IAM se agrupan para crear funciones. Puedes otorgar funciones a usuarios y grupos.

En esta página, también puedes encontrar información sobre lo siguiente:

Comando Subcomando Permisos de IAM obligatorios
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 Ninguno
cors get storage.buckets.get
cors set storage.buckets.update
cp storage.objects.list2 (para el depósito de destino)
storage.objects.get (para los objetos fuente)
storage.objects.create (para el depósito de destino)
storage.objects.delete3 (para el depósito de destino)
defstorageclass get storage.buckets.get
defstorageclass set storage.buckets.update
du storage.objects.get
hash storage.objects.get
help Ninguno
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 o ch storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKeys.setIamPolicy (para la autorización de las claves de Cloud KMS)
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 (buckets de fichas) storage.buckets.list
storage.buckets.getIamPolicy6
ls (objetos de la ficha) storage.objects.list
storage.objects.getIamPolicy7
ls -b storage.buckets.get
storage.buckets.getIamPolicy6
mb storage.buckets.create
mv storage.objects.list2 (para el depósito de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el depósito de destino)
storage.objects.delete (para el depósito de origen)
storage.objects.delete3 (para el depósito de destino)
notification create storage.buckets.update
pubsub.topics.get (para el proyecto que contiene el tema de Pub/Sub)
pubsub.topics.create8 (para el proyecto que contiene el tema de Pub/Sub)
pubsub.topics.getIamPolicy (para el tema de Pub/Sub que recibe notificaciones)
pubsub.topics.setIamPolicy8 (para el tema de Pub/Sub que recibe notificaciones)
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, oset storage.buckets.update
retention event o 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 (borrar 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 (para los objetos de origen y el depósito de destino)
storage.objects.create (para el depósito de destino)
storage.objects.delete11 (para el depósito de destino)
storage.objects.list (para los depósitos de origen y de destino)
rsync -n storage.objects.list (para los depósitos de origen y de destino)
setmeta storage.objects.get
storage.objects.list
storage.objects.update
signurl Ninguno, sin embargo, la cuenta de servicio cuya clave se usa como parte de este comando debe tener permiso para realizar la solicitud que se codifica en la URL firmada.
stat storage.objects.get
test Ninguno
ubla set storage.buckets.get
storage.buckets.update
ubla get storage.buckets.get
update None
version Ninguno
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

1Este permiso solo es necesario si el objeto compuesto tiene el mismo nombre que un objeto que ya existe en el depósito.

2Este permiso solo es necesario cuando el destino en el comando contiene una ruta de acceso de objeto.

3Este permiso solo es necesario si usas cargas compuestas paralelas o si no usas la marca -n, pero insertas un objeto que tiene el mismo nombre que un objeto que ya existe en el bucket.

4Este permiso solo es necesario si no tienes una cuenta de servicio de Cloud Storage asociada con el proyecto.

5Si usas gsutil kms encryption -k, y la cuenta de servicio de tu proyecto no tiene permiso para acceder a la clave de Cloud KMS solicitada, gsutil ejecuta gsutil kms authorize con el fin de otorgar a tu cuenta de servicio el permiso requerido.

6Este permiso solo es necesario si deseas que las políticas de IAM se incluyan en los detalles.

7Este permiso solo es necesario si deseas que las políticas de IAM se incluyan en los detalles y no se aplica a los buckets que tengan habilitado el acceso uniforme a nivel de depósito.

8Estos permisos no son necesarios si el tema ya existe y la cuenta de servicio relevante tiene acceso a él.

9Este permiso solo es necesario si no incluyes un proyecto de facturación en la solicitud. Consulta los requisitos de uso y acceso de los pagos del solicitante para obtener más información.

10Este permiso no es necesario si el comando no cambia la configuración del bucket.

11Este permiso solo es obligatorio si usas la marca -d, o si insertas un objeto que tiene el mismo nombre que, pero son datos diferentes, un objeto que ya existe en el bucket.

Métodos relacionados con las LCA

En la siguiente tabla, se enumeran los permisos de IAM necesarios para ejecutar comandos de gsutil que se aplican solo a la administración de las LCA. Estos comandos solo se aplican a los bucket s que tienen inhabilitado el Acceso uniforme a nivel de bucket .

Comando Subcomando Recurso en el que actúa Permisos de IAM obligatorios
acl get Depósitos storage.buckets.get
storage.buckets.getIamPolicy
acl set o ch Depósitos storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
acl get Objetos storage.objects.get
storage.objects.getIamPolicy
acl set o ch Objetos storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
cp -a o cp -p Objetos storage.objects.lista (para el depósito de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el depósito de destino)
storage.objects.deleteb (para el depósito de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el depósito de destino)
defacl get Depósitos storage.buckets.get
storage.buckets.getIamPolicy
defacl set o ch Depósitos storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
iam get Objetos storage.objects.get
storage.objects.getIamPolicy
iam set o ch Objetos storage.objects.get
storage.objects.getIamPolicy
storage.objects.setIamPolicy
storage.objects.update
mv -a o mv -p Objetos storage.objects.lista (para el depósito de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el depósito de destino)
storage.objects.delete (para el depósito de origen)
storage.objects.deleteb (para el depósito de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el depósito de destino)
rsync -a o rsync -p Objetos storage.objects.get (para los objetos de origen y el depósito de destino)
storage.objects.create (para el depósito de destino)
storage.objects.deletec (para el depósito de destino)
storage.objects.list (para los depósitos de origen y de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el depósito de destino)

aEste permiso solo es necesario cuando el destino en el comando contiene una ruta de acceso de objeto.

bEste permiso solo es necesario si usas cargas compuestas paralelas o si no usas la marca -n, pero insertas un objeto que tiene el mismo nombre que un objeto que ya existe en el bucket.

cEste permiso solo es obligatorio si usas la marca -d o si insertas un objeto que tiene el mismo nombre que, pero datos diferentes, un objeto que ya existe en el bucket.

La marca de nivel superior -u.

Si usas la marca global -ucon el fin de especificar que un proyecto debe facturarse para tu solicitud, debes tener el permiso serviceusage.services.use para el proyecto que especifiques. La marca -u se usa, por ejemplo, cuando se accede a un bucket con Pagos del solicitante habilitado.

Comodines y marcas recurrentes

Si usas comodines de URI con el fin de seleccionar varios objetos en un comando debes tener el permiso storage.objects.list para bucket que contiene los objetos. Del mismo modo, si usas comodines de URI a fin de seleccionar varios depósitos en un comando, debes tener el permiso storage.buckets.list para los proyectos que contienen los depósitos.

Si usas las marcas recurrentes (-r y -R), debes tener el permiso storage.objects.list para el depósito correspondiente, además de los permisos necesarios del comando específico que usas.

La marca de nivel superior -m.

Por lo general, si usas un comando de gsutil que actúa sobre varios objetos o depósitos, el comando falla ante el primer error. Sin embargo, cuando usas la marca global -m, gsutil registra los errores que encuentra y continúa con la operación.

Por ejemplo, supongamos que intentas ejecutar un comando acl set en una serie de objetos, pero solo tienes permiso para hacerlo en algunos de estos. Si no usas la marca -m, gsutil aplica las LCA de forma correcta hasta que alcanza un objeto al que no tienes permiso para aplicar una LCA. En ese momento, gsutil falla. Si usas la marca -m, gsutil registra los errores que surgen cuando trata de aplicar una LCA a un objeto para el que no tienes permiso, de lo contrario continúa con la operación.

¿Qué sigue?