Permisos de IAM para los comandos de gcloud storage

En la siguiente tabla, se enumeran los permisos de Identity and Access Management (IAM) necesarios para ejecutar los comandos de gcloud storage. Los permisos de IAM se agrupan para crear roles. Puedes otorgar roles a los principales.

Consulta las secciones debajo de la tabla para obtener notas sobre el uso de comodines, la marca --recursive y la marca --billing-project.

Comando Marca Permisos de IAM obligatorios
buckets add-iam-policy-binding storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
buckets create storage.buckets.create
buckets delete storage.buckets.delete
buckets describe storage.buckets.get
storage.buckets.getIamPolicy1
buckets get-iam-policy storage.buckets.get
storage.buckets.getIamPolicy
buckets list storage.buckets.list
storage.buckets.getIamPolicy1
buckets notifications create storage.buckets.get
storage.buckets.update
pubsub.topics.get (para el proyecto que contiene el tema de Pub/Sub)
pubsub.topics.create3 (para el proyecto que contiene el tema de Pub/Sub)
pubsub.topics.getIamPolicy (para el tema de Pub/Sub que recibe notificaciones)
pubsub.topics.setIamPolicy3 (para el tema de Pub/Sub que recibe notificaciones)
buckets notifications create --skip-topic-setup storage.buckets.get
storage.buckets.update
buckets notifications delete storage.buckets.get
storage.buckets.update
buckets notifications describe storage.buckets.get
buckets notifications list storage.buckets.get
buckets remove-iam-policy-binding storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
buckets set-iam-policy storage.buckets.setIamPolicy
storage.buckets.update
buckets update storage.buckets.update
buckets update --no-requester-pays storage.buckets.update
resourcemanager.projects.createBillingAssignment2
buckets update --recovery-point-objective
--rpo
--[no-]uniform-bucket-level-access
storage.buckets.get
storage.buckets.update
buckets update --clear-pap
--clear-public-access-prevention
--[no-]pap
--[no-]public-access-prevention
storage.buckets.get
storage.buckets.update
storage.buckets.setIamPolicy
cat storage.objects.get
storage.objects.list13
cp storage.objects.get (para los objetos de origen)
storage.buckets.get12 (para el bucket de destino)
storage.objects.list4 (para el bucket de destino)
storage.objects.create (para el bucket de destino)
storage.objects.delete5 (para el bucket de destino)
storageinsights.reportDetails.get15
du storage.objects.list
folders create storage.folders.create
folders delete storage.folders.delete
folders describe storage.folders.get
folders list storage.folders.list
folders rename storage.folders.rename (para el bucket de origen)
storage.folders.create (para el bucket de destino)
hash storage.objects.get
hmac create storage.hmacKeys.create
hmac delete storage.hmacKeys.delete
hmac describe storage.hmacKeys.get
hmac list storage.hmacKeys.list
hmac update storage.hmacKeys.update
insights inventory-reports create storageinsights.reportConfigs.create
insights inventory-reports delete storageinsights.reportConfigs.delete
insights inventory-reports details list storageinsights.reportDetails.list
insights inventory-reports details describe storageinsights.reportDetails.get
insights inventory-reports list storageinsights.reportConfigs.list
insights inventory-reports update storageinsights.reportConfigs.get
storageinsights.reportConfigs.update
ls (para lista de buckets) storage.buckets.list
storage.buckets.getIamPolicy6
ls (para la enumeración de objetos) storage.objects.get7
storage.objects.list
storage.objects.getIamPolicy8
ls --buckets storage.buckets.get
storage.buckets.getIamPolicy6
mv storage.objects.list4 (para el bucket de destino)
storage.objects.get (para los objetos de origen)
storage.objects.create (para el bucket de destino)
storage.objects.delete (para el bucket de origen)
storage.objects.delete5 (para el bucket de destino)
objects compose storage.objects.get
storage.objects.create
storage.objects.delete9
objects describe storage.objects.get
storage.objects.getIamPolicy8
objects list storage.objects.list
storage.objects.getIamPolicy8
objects update storage.objects.get
storage.objects.list
storage.objects.update
objects update --storage-class
--encryption-key
--clear-encryption-key
storage.objects.get
storage.objects.list
storage.objects.create
storage.objects.delete
objects update --retention-mode
--retain-until
--clear-retention
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.setRetention
storage.objects.overrideUnlockedRetention11
operations cancel storage.bucketOperations.cancel
operations describe storage.bucketOperations.get
operations list storage.bucketOperations.list
restore storage.objects.create
storage.objects.delete9
storage.objects.restore
restore --async storage.objects.create
storage.objects.delete14
storage.objects.restore
storage.buckets.restore
rm storage.buckets.delete
storage.objects.delete
storage.objects.list
rsync storage.objects.get (para los objetos de origen y el bucket de destino)
storage.objects.create (para el bucket de destino)
storage.objects.delete10 (para el bucket de destino)
storage.objects.list (para los depósitos de origen y de destino)
rsync --dry-run storage.objects.list (para los depósitos de origen y de destino)
service-agent resourceManager.projects.get
sign-url 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.

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

2 Este 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.

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

4Este permiso solo es necesario cuando el destino en el comando contiene una ruta de acceso de objeto.

5Este permiso solo es necesario si usas cargas compuestas paralelas o si no usas la marca --no-clobber, pero insertas un objeto que tiene el mismo nombre que un objeto que ya existe en el bucket.

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

7Este permiso solo es necesario si usas la marca --fetch-encrypted-object-hashes.

7 Este 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 del bucket.

9Este permiso solo es necesario si la operación crea un objeto con el mismo nombre que un objeto que ya existe en tu depósito.

10Este permiso solo es obligatorio si usas la marca --delete-unmatched-destination-objects, o si insertas un objeto que tiene el mismo nombre que, pero son datos diferentes, un objeto que ya existe en el bucket.

11 Este permiso solo es necesario si la solicitud también requiere que uses la marca --override-unlocked-retention.

12Este permiso es necesario para realizar cargas compuestas paralelas si la propiedad storage/parallel_composite_upload_compatibility_check de la gcloud CLI se configura como True.

13Solo se necesita este permiso solo si deseas usar expresiones regulares para recuperar objetos.

14Este permiso solo es necesario si la solicitud incluye la marca --allow-overwrite y la operación crea un objeto con el mismo nombre que un objeto que ya existe en el bucket.

15Este permiso solo es necesario para descargar informes de inventario.

La marca de nivel superior --billing-project.

Si usas la marca global --billing-project para especificar que un proyecto debe facturarse para tu solicitud, debes tener el permiso serviceusage.services.use para el proyecto que especifiques. La marca --billing-project 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 la marca --recursive, debes tener el permiso storage.objects.list para el bucket correspondiente, además de los permisos necesarios del comando específico que usas.

¿Qué sigue?