Permisos de la gestión de identidades y accesos para los comandos gsutil

En la siguiente tabla se indican los permisos de Gestión de Identidades y Accesos (IAM) necesarios para ejecutar cada comando gsutil de Cloud Storage en un recurso determinado. Los permisos de gestión de identidades y accesos se agrupan para formar roles. Puedes conceder roles a usuarios y grupos.

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

Comando Subcomando Permisos de gestión de identidades y accesos necesarios
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 segmento de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el segmento de destino)
storage.objects.delete3 (para el segmento 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 clave de Cloud KMS que se va a autorizar)
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 (contenedores 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 segmento de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el segmento de destino)
storage.objects.delete (para el segmento de origen)
storage.objects.delete3 (para el segmento 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 o set 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 (eliminar un segmento) 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 segmento de destino)
storage.objects.create (para el segmento de destino)
storage.objects.delete11 (para el segmento de destino)
storage.objects.list (para los segmentos de origen y de destino)
rsync -n storage.objects.list (para los contenedores de origen y 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 Ninguno
version Ninguno
versioning get storage.buckets.get
versioning set storage.buckets.update
web get storage.buckets.get
web set storage.buckets.update

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

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

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

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

5 Si 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 para conceder a tu cuenta de servicio el permiso necesario.

6Este permiso solo es necesario si quieres que se incluyan las políticas de gestión de identidades y accesos en los detalles.

7Este permiso solo es necesario si quieres que se incluyan las políticas de gestión de identidades y accesos en los detalles, y no se aplica a los segmentos que tienen habilitado el acceso uniforme a nivel de segmento.

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

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

10Este permiso no es necesario si el comando no cambia el ajuste del contenedor.

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

Métodos relacionados con las LCAs

En la siguiente tabla se indican los permisos de gestión de identidades y accesos necesarios para ejecutar comandos de gsutil que se aplican específicamente a la gestión de listas de control de acceso. Estos comandos solo se aplican a los segmentos que tienen inhabilitado el acceso uniforme a nivel de segmento.

Comando Subcomando Recurso de interacción Permisos de gestión de identidades y accesos necesarios
acl get Segmentos storage.buckets.get
storage.buckets.getIamPolicy
acl set o ch Segmentos 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 segmento de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el segmento de destino)
storage.objects.deleteb (para el segmento de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el segmento de destino)
defacl get Segmentos storage.buckets.get
storage.buckets.getIamPolicy
defacl set o ch Segmentos 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 segmento de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el segmento de destino)
storage.objects.delete (para el segmento de origen)
storage.objects.deleteb (para el segmento de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el segmento de destino)
rsync -a o rsync -p Objetos storage.objects.get (para los objetos de origen y el segmento de destino)
storage.objects.create (para el segmento de destino)
storage.objects.deletec (para el segmento de destino)
storage.objects.list (para los segmentos de origen y de destino)
storage.objects.getIamPolicy (para los objetos de origen)
storage.objects.setIamPolicy (para el segmento de destino)

a Este permiso solo es necesario cuando el destino del comando contiene una ruta de objeto.

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

cEste permiso solo es necesario si usa la marca -d o si inserta un objeto que tiene el mismo nombre, pero datos diferentes, que un objeto que ya existe en el contenedor.

La marca de nivel superior -u

Si usas la marca global -u para especificar un proyecto al que se le debe facturar 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 segmento con la función Pagos del solicitante habilitada.

Comodines y marcas repetitivas

Si usas comodines de URI para seleccionar varios objetos en un comando, debes tener el permiso storage.objects.list en el contenedor que contiene los objetos. Del mismo modo, si usas comodines de URI para seleccionar varios segmentos en un comando, debes tener el permiso storage.buckets.list para los proyectos que contengan los segmentos.

Si usas las marcas recursivas (-r y -R), debes tener el permiso storage.objects.list para el segmento correspondiente, además de los permisos necesarios para el comando específico que estés usando.

La marca de nivel superior -m

Normalmente, si utilizas un comando gsutil que actúa en varios objetos o segmentos, el comando falla en 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 ellos. Si no usas la marca -m, gsutil aplica las ACLs correctamente hasta que llega a un objeto para el que no tienes permiso para aplicar una ACL. En ese punto, gsutil falla. Si usa la marca -m, gsutil registra los errores que se producen cuando intenta aplicar una ACL a un objeto para el que no tiene permiso, pero continúa con la operación.

Siguientes pasos