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.setIpFilter 15 |
|
buckets delete |
storage.buckets.delete |
|
buckets describe |
storage.buckets.get storage.buckets.getIamPolicy 1storage.buckets.getIpFilter 16 |
|
buckets get-iam-policy |
storage.buckets.get storage.buckets.getIamPolicy |
|
buckets list |
storage.buckets.list storage.buckets.getIamPolicy 1 |
|
buckets notifications create |
storage.buckets.get storage.buckets.update pubsub.topics.get (para el proyecto que contiene el tema de Pub/Sub)pubsub.topics.create 3 (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 3 (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.setIpFilter 15 |
|
buckets update |
--no-requester-pays |
storage.buckets.update resourcemanager.projects.createBillingAssignment 2 |
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.list 13 |
|
cp |
storage.objects.get storage.objects.create storage.objects.list 4 (para el segmento de destino)
storage.objects.delete 5storage.buckets.get 12 |
|
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 storage.folders.create |
|
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.getIamPolicy 6 |
|
ls (para la lista de objetos) |
storage.objects.get 7storage.objects.list storage.objects.getIamPolicy 8 |
|
ls |
--buckets |
storage.buckets.get storage.buckets.getIamPolicy 6 |
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 storage.objects.delete storage.objects.create storage.objects.list 4storage.objects.delete 5storage.buckets.get 12 |
|
objects compose |
storage.objects.get storage.objects.create storage.objects.delete 9 |
|
objects describe |
storage.objects.get storage.objects.getIamPolicy 8 |
|
objects list |
storage.objects.list storage.objects.getIamPolicy 8 |
|
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.overrideUnlockedRetention 11 |
operations cancel |
storage.bucketOperations.cancel |
|
operations describe |
storage.bucketOperations.get |
|
operations list |
storage.bucketOperations.list |
|
restore |
storage.objects.create storage.objects.delete 9storage.objects.restore |
|
restore |
--async |
storage.objects.create storage.objects.delete 14storage.objects.restore storage.buckets.restore |
rm |
storage.buckets.delete storage.objects.delete storage.objects.list |
|
rsync |
storage.objects.list storage.objects.get storage.objects.list storage.objects.get storage.objects.create storage.objects.delete 10storage.buckets.get 12 |
|
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
- 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.