Permisos de gestión de identidades y accesos para los comandos de gcloud storage

En la siguiente tabla se indican los permisos de Gestión de Identidades y Accesos (IAM) necesarios para ejecutar comandos de gcloud storage. Los permisos de gestión de identidades y accesos se agrupan para formar roles. Asigna roles a los principales.

En las secciones que hay debajo de la tabla, encontrarás notas sobre el uso de comodines, la marca --recursive y la marca --billing-project.

Comando Bandera Permisos de gestión de identidades y accesos necesarios
batch-operations jobs create storagebatchoperations.jobs.create
batch-operations jobs cancel storagebatchoperations.jobs.cancel
batch-operations jobs delete storagebatchoperations.jobs.delete
batch-operations jobs get storagebatchoperations.jobs.get
batch-operations jobs list storagebatchoperations.jobs.list
buckets add-iam-policy-binding storage.buckets.get
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
storage.buckets.update
buckets anywhere-caches create storage.anywhereCaches.create
buckets anywhere-caches describe storage.anywhereCaches.get
buckets anywhere-caches list storage.anywhereCaches.list
buckets anywhere-caches update storage.anywhereCaches.update
buckets anywhere-caches pause storage.anywhereCaches.pause
buckets anywhere-caches resume storage.anywhereCaches.resume
buckets anywhere-caches disable storage.anywhereCaches.disable
buckets create storage.buckets.create
storage.buckets.setIpFilter15
buckets delete storage.buckets.delete
buckets describe storage.buckets.get
storage.buckets.getIamPolicy1
storage.buckets.getIpFilter16
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 relocate storage.buckets.relocate
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
storage.buckets.setIpFilter15
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.objects.create (para el segmento de destino)
storage.objects.list4 (para el segmento de destino)
storage.objects.delete5 (para el segmento de destino)
storage.buckets.get12 (para el segmento de destino)
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 segmento de origen)
storage.folders.create (para el segmento 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 dataset-configs create storageinsights.datasetConfigs.create
insights dataset-configs create-link storageinsights.datasetConfigs.linkDataset
insights dataset-configs delete storageinsights.datasetConfigs.delete
insights dataset-configs delete-link storageinsights.datasetConfigs.unlinkDataset
insights dataset-configs describe storageinsights.datasetConfigs.get
insights dataset-configs list storageinsights.datasetConfigs.list
insights dataset-configs update storageinsights.datasetConfigs.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 la lista de segmentos) storage.buckets.list
storage.buckets.getIamPolicy6
ls (para la lista de objetos) storage.objects.get7
storage.objects.list
storage.objects.getIamPolicy8
ls --buckets storage.buckets.get
storage.buckets.getIamPolicy6
storage intelligence-config enable storage.intelligenceConfigs.update
storage-intelligence disable storage.intelligenceConfigs.update
storage-intelligence describe storage.intelligenceConfigs.get
storage-intelligence update storage.intelligenceConfigs.update
mv storage.objects.get (para los objetos de origen)
storage.objects.delete (para el segmento de origen)
storage.objects.create (para el segmento de destino)
storage.objects.list4 (para el segmento de destino)
storage.objects.delete5 (para el segmento de destino)
storage.buckets.get12 (para el segmento 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.list (para el contenedor de origen)
storage.objects.get (para los objetos de origen)
storage.objects.list (para el contenedor de destino)
storage.objects.get (para el contenedor de destino)
storage.objects.create (para el contenedor de destino)
storage.objects.delete10 (para el contenedor de destino)
storage.buckets.get12 (para el contenedor de destino)
rsync --dry-run storage.objects.list (para los contenedores de origen y 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.

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

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

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

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

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

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 obligatorio si usas la marca --fetch-encrypted-object-hashes.

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

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

10Este permiso solo es necesario si usa la marca --delete-unmatched-destination-objects o si inserta un objeto que tiene el mismo nombre, pero datos diferentes, que un objeto que ya existe en el contenedor.

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 subidas compuestas paralelas si la propiedad storage/parallel_composite_upload_compatibility_check de gcloud CLI tiene el valor True.

13Este permiso solo es necesario si quieres usar expresiones regulares para recuperar objetos.

14 Este 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 segmento.

15Este permiso solo es necesario si la solicitud incluye la marca --ip-filter-file para crear, actualizar o eliminar las reglas de filtrado por IP en un contenedor.

16 Este permiso solo es necesario si quieres obtener la configuración del filtro de IP del contenedor como parte de la respuesta.

La marca de nivel superior --billing-project

Si usas la marca global --billing-project para especificar un proyecto al que se le debe facturar tu solicitud, debes tener el permiso serviceusage.services.use para el proyecto que especifiques. Se usa la marca --billing-project, por ejemplo, cuando se accede a un segmento con la opció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 la marca --recursive, debes tener permiso storage.objects.list para el segmento correspondiente, además de los permisos necesarios para el comando específico que estés usando.

Siguientes pasos