El Servicio de transferencia de almacenamiento usa un
agente de servicio
para mover datos desde un bucket de origen de Cloud Storage. Este agente de servicio
se crea la primera vez que llamas a
googleServiceAccounts.get.
No es necesario que el bucket de origen pertenezca al mismo proyecto que el agente de servicio. Los pasos son los mismos sin importar el proyecto en el que se encuentre el bucket.
Permisos de usuario
Para otorgar los permisos necesarios al agente de servicio, debes tener los permisos relevantes en el bucket de origen:
storage.buckets.getIamPolicystorage.buckets.setIamPolicy
Los roles Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) o Storage Admin (roles/storage.admin) otorgan los permisos necesarios.
Otorga permisos automáticamente en la Google Cloud consola
Si usas la Google Cloud consola para crear tu transferencia y tienes los permisos enumerados en Permisos de usuario, el agente de servicio recibirá automáticamente los permisos necesarios en tu bucket de origen.
Puedes omitir los pasos en esta página y dirigirte directamente a Crear una transferencia.
Permisos necesarios
El agente de servicio debe tener los siguientes permisos para acceder al bucket de origen:
| Permiso | Descripción |
|---|---|
storage.buckets.get |
Permite que el agente de servicio obtenga la ubicación del bucket. |
storage.objects.list |
Permite que el agente de servicio enumere los objetos en el bucket. |
storage.objects.get |
Permite que la cuenta de servicio lea los objetos en el bucket. |
storage.objects.create |
Permite que el agente de servicio cree objetos en el bucket. Obligatorio si la transferencia es a un sistema de archivos. El Servicio de transferencia de almacenamiento crea y propaga dos carpetas en el bucket de origen: |
storage.objects.delete |
Permite que el agente de servicio borre objetos en el bucket. Se requiere
si establece deleteObjectsFromSourceAfterTransfer en
true.
|
storage.objects.getIamPolicy |
Permite que el agente de servicio lea las LCA en los objetos de origen. Se requiere si
la preservación de LCA de objetos (ACL_PRESERVE) está habilitada.
|
Los siguientes roles predefinidos otorgan los permisos necesarios:
- Uno de los siguientes:
- Storage Object Viewer (
roles/storage.objectViewer) si la transferencia se realiza en otro bucket de Cloud Storage. - Storage Object Creator (
roles/storage.objectCreator) si la transferencia es a un sistema de archivos.
- Storage Object Viewer (
- Más uno de los siguientes:
- Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter) si se requiere permiso para eliminar objetos. - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) si no se requiere permiso para borrar objetos.
- Storage Legacy Bucket Writer (
- Además, si se conservan las LCA
de objetos con
ACL_PRESERVE:- Propietario de objetos heredados de almacenamiento (
roles/storage.legacyObjectOwner)
- Propietario de objetos heredados de almacenamiento (
Cualquier rol de Cloud Storage marcada como rol legacy solo se puede otorgar a nivel de bucket.
Para obtener una lista completa de las funciones de Cloud Storage y los permisos que contienen, consulta las funciones de IAM.
Otorga los permisos necesarios.
Para otorgar los permisos necesarios al agente de servicio, sigue los pasos que se indican a continuación.
Busca el correo electrónico del agente de servicio
Ve a la página de referencia de
googleServiceAccounts.get.Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de solicitud, ingresa el ID del proyecto. El proyecto que especifiques aquí debe ser el proyecto que usas para administrar el Servicio de transferencia de almacenamiento, que puede ser diferente del proyecto del bucket de origen.
Haz clic en Ejecutar.
El correo electrónico del agente de servicio se muestra como el valor de
accountEmail. Copia este valor.El correo electrónico del agente de servicio usa el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.
Agrega el agente de servicio a una política a nivel de bucket
Console
- En la Google Cloud consola, ve a la página Buckets de Cloud Storage.
Haz clic en el menú Ampliado del bucket () asociado al bucket en el que deseas asignarle un rol a una principal.
Elige Editar acceso.
Haz clic en el botón + Agregar principal.
En el campo Principales nuevas, ingresa el correo electrónico de la cuenta de tu agente de servicio.
Selecciona
Storage Object VieweroStorage Object Creatoren el menú desplegable Selecciona un rol.Haz clic en Agregar otra función.
Selecciona
Storage Legacy Bucket WriteroStorage Legacy Bucket Reader.Haz clic en Guardar.
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.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Reemplaza lo siguiente:
BUCKET_NAMEes el nombre del bucket al cual le otorgas acceso principal. Por ejemplo,my-bucket.YOUR_AGENT_EMAILes el correo electrónico de la cuenta del agente que copiaste en Encuentra el correo electrónico del agente de servicio.
Muestras de código
C++
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud StorageC++.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud StorageC#.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Go
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de GoCloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de JavaCloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Node.js
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud StorageNode.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
PHP
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de PHPCloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud StoragePython.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Ruby
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de RubyCloud Storage.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Rust
JSON
Tener la gcloud CLI instalada e inicializada, lo 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.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Reemplaza lo siguiente:
YOUR_AGENT_EMAILes el correo electrónico de la cuenta del agente que copiaste en Encuentra el correo electrónico del agente de servicio.
Usa
cURLpara llamar a la API de JSON con unaPUT setIamPolicysolicitud: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"
Reemplaza lo siguiente:
JSON_FILE_NAMEes la ruta de acceso del archivo que creaste en el paso 2.OAUTH2_TOKENes el token de acceso que generaste en el paso 1.BUCKET_NAMEes el nombre del bucket al que le quieres otorgar acceso al principal. Por ejemplo,my-bucket