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.

Consulta las secciones debajo de la tabla para ver los comandos adicionales que solo se aplican a los depósitos con Acceso uniforme a nivel de depósito y, también, las notas sobre el uso de comodines y las marcas -r, -u y -m.

Comando Subcomando Recurso en el que actúa Permisos de IAM obligatorios
cat Objetos storage.objects.get
compose Objetos storage.objects.get
storage.objects.create
storage.objects.delete1
config Ninguno
cors get Depósitos storage.buckets.get
cors set Depósitos storage.buckets.update
cp Objetos 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 Depósitos storage.buckets.get
defstorageclass set Depósitos storage.buckets.update
du Objetos storage.objects.get
hash Objetos storage.objects.get
help Ninguno
hmacKeys create Claves HMAC storage.hmacKeys.create
hmacKeys delete Claves HMAC storage.hmacKeys.delete
hmacKeys get Claves HMAC storage.hmacKeys.get
hmacKeys list Claves HMAC storage.hmacKeys.list
hmacKeys update Claves HMAC storage.hmacKeys.update
iam get Depósitos storage.buckets.get
storage.buckets.getIamPolicy
iam set o ch Depósitos storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
kms authorize Proyectos resourceManager.projects.get
iam.serviceAccounts.create4
cloudkms.cryptoKey.setIamPolicy (para la autorización de las claves de Cloud KMS)
kms encryption Depósitos storage.buckets.get
kms encryption -d Depósitos storage.buckets.get
storage.buckets.update
kms encryption -k Depósitos, Proyectos7 storage.buckets.get
storage.buckets.update
resourceManager.projects.get7
cloudkms.cryptoKey.setIamPolicy7
kms serviceaccount Proyectos resourceManager.projects.get
label get Depósitos storage.buckets.get
label set/ch Depósitos storage.buckets.update
lifecycle get Depósitos storage.buckets.get
lifecycle set/ch Depósitos storage.buckets.update
logging get Depósitos storage.buckets.get
logging set Depósitos storage.buckets.update
ls Proyectos storage.buckets.list
storage.buckets.get5
storage.buckets.getIamPolicy6
ls Depósitos, Objetos storage.objects.list
storage.objects.get5
storage.objects.getIamPolicy10
ls -b Depósitos storage.buckets.get
storage.buckets.getIamPolicy6
mb Depósitos storage.buckets.create
mv Objetos 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 Depósitos 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 Depósitos storage.buckets.update
notification delete Depósitos storage.buckets.update
notification list Depósitos storage.buckets.get
notification watchbucket Depósitos storage.buckets.update
notification stopchannel Depósitos storage.buckets.update
perfdiag Depósitos storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
storage.objects.get
rb Depósitos storage.buckets.delete
requesterpays get Depósitos storage.buckets.get
requesterpays set on Depósitos storage.buckets.get
storage.buckets.update
requesterpays set off Depósitos storage.buckets.get
storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock o set Depósitos storage.buckets.update
retention event o temp Objetos storage.objects.get
storage.objects.list
storage.objects.update
retention get Depósitos storage.buckets.get
rewrite -k Objetos storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
rewrite -s Objetos storage.objects.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
rm Depósitos storage.buckets.delete
storage.objects.delete
storage.objects.list
rm Objetos storage.objects.delete
rsync 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.delete11 (para el depósito de destino)
storage.objects.list (para los depósitos de origen y de destino)
rsync -n Objetos storage.objects.list (para los depósitos de origen y de destino)
setmeta Objetos storage.objects.get
storage.objects.list
storage.objects.update
signurl Ninguno; sin embargo, la cuenta de servicio afiliada a la solicitud debe tener storage.objects.get.
stat Objetos storage.objects.get
test Ninguno
ubla set Depósitos storage.buckets.get
storage.buckets.update
ubla get Depósitos storage.buckets.get
update Ninguno
version Ninguno
versioning get Depósitos storage.buckets.get
versioning set Depósitos storage.buckets.update
web get Depósitos storage.buckets.get
web set Depósitos 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 no usas la marca -n y quieres insertar un objeto que tiene el mismo nombre que un objeto que ya existe en el depósito.

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

5Este permiso solo es necesario cuando se usa la marca -L o -l en el comando.

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

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

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 solo es necesario si deseas que las políticas de IAM se incluyan en los detalles y no se aplica a los depósitos que tengan habilitado el acceso uniforme a nivel de depósito.

11Este permiso solo es necesario si no usas la marca -d y quieres insertar un objeto que tiene el mismo nombre que un objeto que ya existe en el depósito.

Métodos relacionados con la 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 depósitos que tienen inhabilitado el Acceso uniforme a nivel de depósito.

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 no usas la marca -n y quieres insertar un objeto que tiene el mismo nombre que un objeto que ya existe en el depósito.

cEste permiso solo es necesario si no usas la marca -d y quieres insertar un objeto que tiene el mismo nombre que un objeto que ya existe en el depósito.

La marca de nivel superior -u.

Si usas la marca de nivel superior -u con el fin de especificar que un proyecto debe facturarse en 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 depósito 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 depósito 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, este falla ante el primer error. Sin embargo, cuando usas la marca de nivel superior -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.

Próximos pasos