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:
Usar comandos adicionales que solo se aplican a los buckets con acceso uniforme a nivel de bucket inhabilitado
Usar la marca
-u
para especificar proyectos para la facturaciónUsar la marca
-m
para ejecutar operaciones en paralelo
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.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 (buckets 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 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.delete 3 (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.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 , 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 storage.objects.create storage.objects.delete 11storage.objects.list |
|
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.list astorage.objects.get storage.objects.create storage.objects.delete bstorage.objects.getIamPolicy storage.objects.setIamPolicy |
|
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.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 |
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 -u
con 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?
- Asigna funciones de IAM a nivel de proyecto y de bucket.
- Revisa las funciones de IAM que contienen permisos de Cloud Storage.