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 | Marcar | 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.getIamPolicy 1 |
||
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 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.createBillingAssignment 2 |
|
buckets update |
--recovery-point-objective --rpo --[no-]uniform-bucket-level-access |
--[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.buckets.get 12storage.objects.list 4 (para el bucket de destino)
storage.objects.create storage.objects.delete 5storageinsights.reportDetails.get 15 |
||
du |
storage.objects.list |
||
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.getIamPolicy 6 |
||
ls (para la enumeración de objetos) |
storage.objects.get 7storage.objects.list storage.objects.getIamPolicy 8 |
||
ls |
--buckets |
storage.buckets.get storage.buckets.getIamPolicy 6 |
|
mv |
storage.objects.list 4 (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.delete 5 (para el bucket de destino) |
||
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 |
|
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.get storage.objects.create storage.objects.delete 10storage.objects.list |
||
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?
- Asigna roles de IAM a nivel de proyecto y de bucket.
- Revisa los roles de IAM que contienen permisos de Cloud Storage.