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:
Usar comandos adicionales que solo se aplican a los segmentos con el acceso uniforme a nivel de segmento inhabilitado
Usar la marca
-u
para especificar proyectos de facturaciónUsar la marca
-m
para ejecutar operaciones en paralelo
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.delete 1 |
|
config |
Ninguno | |
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 |
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.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 (contenedores de fichas) |
storage.buckets.list storage.buckets.getIamPolicy 6 |
|
ls (objetos de la ficha) |
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 (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.delete 3 (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.create 8 (para el proyecto que contiene el tema de Pub/Sub)pubsub.topics.getIamPolicy (para el tema de Pub/Sub que recibe notificaciones)pubsub.topics.setIamPolicy 8 (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.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 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 storage.objects.create storage.objects.delete 11storage.objects.list |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
rsync -a rsync -p |
Objetos | storage.objects.get storage.objects.create storage.objects.delete cstorage.objects.list storage.objects.getIamPolicy storage.objects.setIamPolicy |
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
- Asigna roles de gestión de identidades y accesos a nivel de proyecto y de segmento.
- Consulta los roles de gestión de identidades y accesos que contienen permisos de Cloud Storage.