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 Recurso en el que puedes otorgar el rol Permisos de IAM obligatorios
autoclass get Depósitos storage.buckets.get
autoclass set Depósitos storage.buckets.update
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.cryptoKeys.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 Buckets, Proyectos5 storage.buckets.get
storage.buckets.update
resourceManager.projects.get5
cloudkms.cryptoKeys.setIamPolicy5
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.getIamPolicy6
ls Depósitos, Objetos storage.objects.list
storage.objects.getIamPolicy7
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.get
storage.buckets.update
notification list Depósitos storage.buckets.get
notification watchbucket Depósitos storage.buckets.update
notification stopchannel Depósitos storage.buckets.update
pap get Depósitos storage.buckets.get
pap set Depósitos storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy10
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.update
requesterpays set off Depósitos storage.buckets.update
resourcemanager.projects.createBillingAssignment9
retention clear, event-default, lock, oset 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
storage.objects.list
rpo get Depósitos storage.buckets.get
rpo set Depósitos storage.buckets.get
storage.buckets.update
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 cuya clave se usa como parte de este comando debe tener permiso para realizar la solicitud que se codifica en la URL firmada.
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 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?