Cloud Storage usa una cuenta de servicio gestionada por Google, conocida como agente de servicio, para mover datos a un segmento de Cloud Storage. Este agente de servicio se crea la primera vez que llamas al googleServiceAccounts.get
.
El segmento de destino no tiene por qué pertenecer al mismo proyecto que el agente de servicio. Los pasos son los mismos independientemente del proyecto en el que se encuentre el segmento.
Permisos de usuario
Para conceder los permisos necesarios al agente de servicio, debe tener los permisos correspondientes en el segmento de destino:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
El rol Propietario de segmentos heredados de Storage (roles/storage.legacyBucketOwner
) o el rol Administrador de Storage (roles/storage.admin
) proporcionan los permisos necesarios.
Conceder permisos automáticamente en la consola Google Cloud
Si usas la Google Cloud consola para crear la transferencia y tienes los permisos que se indican en Permisos de usuario, se concederán automáticamente al agente de servicio los permisos necesarios en tu segmento de destino.
Puedes saltarte los pasos de esta página. Si es necesario, configura el acceso a tu fuente y, a continuación, crea una transferencia.
Permisos obligatorios
El agente de servicio debe tener los siguientes permisos en el cubo de destino:
Permiso | Descripción |
---|---|
storage.buckets.get |
Permite que la cuenta de servicio obtenga la ubicación del segmento. |
storage.objects.get |
Permite que la cuenta de servicio vea los objetos y sus metadatos, pero no las ACLs. Obligatorio si la transferencia está configurada para [sobrescribir objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) en el receptor cuando sean diferentes o nunca. No es necesario si la opción de transferencia es Sobrescribir siempre. |
storage.objects.create |
Permite que la cuenta de servicio añada objetos al segmento. |
storage.objects.delete |
Permite que la cuenta de servicio elimine objetos del segmento.
Obligatorio si asignas el valor Tenga en cuenta que, si el segmento de destino tiene habilitada la gestión de versiones de objetos, ni |
storage.objects.list |
Permite a la cuenta de servicio enumerar los objetos del segmento. Obligatorio si asignas el valor false a overwriteObjectsAlreadyExistingInSink o el valor true a deleteObjectsUniqueInSink . |
El siguiente rol predefinido concede los permisos necesarios:
- Editor de segmentos heredados de Storage (
roles/storage.legacyBucketWriter
)
Además, en las transferencias configuradas para sobrescribir objetos en el receptor cuando sean diferentes o nunca, asigna el siguiente rol predefinido al agente de servicio:
- Lector de objetos de Storage (
roles/storage.objectViewer
)
Para ver una lista completa de los roles de Cloud Storage y los permisos que contienen, consulta Roles de gestión de identidades y accesos.
Concede los permisos necesarios
Para conceder los roles Escritor de segmentos heredados de Storage y Visor de objetos de Storage al agente de servicio, sigue estos pasos.
Buscar el correo del agente de servicio
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo titulado Prueba este método.
En el panel, en Parámetros de solicitud, introduce tu ID de proyecto. El proyecto que especifiques aquí debe ser el que utilices para gestionar el Servicio de transferencia de almacenamiento, que puede ser diferente del proyecto del segmento de destino.
Haz clic en la opción para ejecutar.
La dirección de correo de tu agente de asistencia se devuelve como el valor de
accountEmail
. Copia este valor.El correo del agente de servicio utiliza el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Añade el agente de servicio a una política a nivel de contenedor
Consola
- En la Google Cloud consola, ve a la página Segmentos de Cloud Storage.
Haz clic en el menú Desbordamiento de contenedor (
) asociado al contenedor al que quieras asignar un rol a un principal.Selecciona Editar acceso.
Haz clic en el botón + Añadir principal.
En el campo Nuevos principales, introduce la dirección de correo de la cuenta de tu agente de servicio.
Selecciona
Storage Legacy Bucket Writer
en el menú desplegable Seleccionar un rol.Haz clic en Guardar.
Repite este paso para añadir el rol
Storage Object Viewer
si tu transferencia está configurada para sobrescribir objetos en el receptor cuando sean diferentes o nunca.
gcloud
Usa el comando gcloud storage buckets add-iam-policy-binding
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketWriter
Donde:
BUCKET_NAME
es el nombre del segmento al que le vas a dar acceso al principal. Por ejemplo,my-bucket
.YOUR_AGENT_EMAIL
es la dirección de correo de la cuenta de agente que has copiado en Buscar el correo del agente de servicio.
Para conceder el rol Storage Object Viewer
, usa el mismo comando, pero sustituye roles/storage.legacyBucketWriter
por roles/storage.objectViewer
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
Códigos de ejemplo
C++
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API C++ de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
C#
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API C# de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Go
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API Go de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API Java de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API Node.js de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API PHP de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API Python de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para saber cómo instalar y usar la biblioteca de cliente de Cloud Storage, consulta las bibliotecas de cliente de Cloud Storage. Para obtener más información, consulta la documentación de referencia de la API Ruby de Cloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
JSON
Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Donde:
Usa
cURL
para llamar a la API JSON con una solicitudPUT setIamPolicy
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Donde:
JSON_FILE_NAME
es la ruta del archivo que has creado en el paso 2.OAUTH2_TOKEN
es el token de acceso que has generado en el paso 1.BUCKET_NAME
es el nombre del segmento al que quieres dar acceso al principal. Por ejemplo,my-bucket
.
Para obtener más información sobre cómo asignar roles de gestión de identidades y accesos a recursos de Cloud Storage, consulta la documentación de gestión de identidades y accesos de Cloud Storage.