Las transferencias sin agente incluyen transferencias dentro de Cloud Storage o desde Amazon S3, Azure Blob Storage o Data Lake Storage Gen2, o listas de URLs de objetos públicos. No requieren agentes de transferencia ni grupos de agentes.
Cuando transfieres datos entre proveedores de servicios en la nube en una transferencia sin agente, debes otorgar permisos a dos principales:
- La cuenta de usuario que crea o administra la transferencia.
- Un agente de servicio que se crea automáticamente la primera vez que interactúas con el Servicio de transferencia de almacenamiento. Puedes delegar los permisos del agente de servicio a una cuenta de servicio administrada por el usuario. Consulta Delega permisos del agente de servicio a una cuenta de servicio administrada por el usuario.
Para obtener más información sobre cómo otorgar roles de IAM, consulta Otorga, cambia y revoca el acceso a recursos.
El método más simple para otorgar permisos
Se puede usar la CLI de gcloud para otorgar los permisos necesarios a la cuenta de usuario y al agente de servicio.
Estos permisos permiten que el usuario cree, edite y borre trabajos de transferencia, y establezca o modifique los límites de ancho de banda.
Si estos permisos son demasiado amplios para las políticas de tu organización, consulta las secciones posteriores de este documento para conocer los permisos mínimos que requiere el Servicio de transferencia de almacenamiento.
Para inspeccionar los permisos existentes y mostrar los roles faltantes, ejecuta el siguiente comando:
gcloud transfer authorize
Para aplicar esos roles automáticamente, usa la marca --add-missing:
gcloud transfer authorize --add-missing
Para otorgar permisos a una cuenta de servicio administrada por el usuario en lugar del usuario, pasa el archivo de claves de la cuenta de servicio:
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
El comando otorga los siguientes permisos.
Al usuario o a la cuenta de servicio administrada por el usuario:
roles/ownerroles/storagetransfer.adminroles/storagetransfer.transferAgentroles/storage.objectAdminroles/pubsub.editor
Al agente de servicio:
roles/storage.adminroles/storagetransfer.serviceAgent
Para obtener instrucciones sobre cómo instalar la CLI de gcloud, consulta la
gcloud guía de inicio rápido.
Permisos de la cuenta de usuario
La cuenta de usuario necesita permiso para ejecutar operaciones del Servicio de transferencia de almacenamiento. Estos permisos se otorgan a través de uno de los dos roles: Usuario de transferencia de almacenamiento o Administrador de transferencia de almacenamiento.
Además, la cuenta necesita permiso para recuperar el agente de servicio y verificar sus permisos.
Para configurar la cuenta de usuario o la cuenta de servicio administrada por el usuario, otorga los siguientes permisos y roles de IAM.
| Función / Permiso | Qué hace | Notas |
|---|---|---|
resourcemanager.projects.getIamPolicy |
Este permiso se usa para confirmar que el agente de servicio tenga los permisos necesarios para una transferencia. | Para otorgar este permiso, otorga el
rol predefinido
(roles/iam.roleViewer) Role Viewer, o
crea un rol personalizado con
este único permiso y otórgalo. |
| Una de las siguientes funciones: | ||
Administrador de transferencia de almacenamiento
(roles/storagetransfer.admin)
|
Permite todas las operaciones del Servicio de transferencia de almacenamiento, incluida la eliminación de trabajos de transferencia. | Para obtener una lista detallada de los permisos otorgados, consulta Roles predefinidos del Servicio de transferencia de almacenamiento. |
Usuario de transferencia de almacenamiento
(roles/storagetransfer.user)
|
Permite que el usuario cree, obtenga, actualice y enumere las transferencias. No permite el usuario borre trabajos de transferencia. | Para obtener una lista detallada de los permisos otorgados, consulta Roles predefinidos del Servicio de transferencia de almacenamiento. |
Permisos del agente de servicio
El Servicio de transferencia de almacenamiento usa un
agente de servicio para
trasladar tus datos. Esta cuenta de servicio se crea automáticamente la primera vez que creas un trabajo de transferencia, llamas a googleServiceAccounts.get o visitas la página de creación de trabajos en la consola. Google Cloud
El formato de la cuenta de servicio suele ser
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.
Para recuperar el identificador de tu cuenta de servicio, usa la llamada a la API de [googleServiceAccounts.get][googleServiceAccounts.get].
Asigna roles automáticamente
Existen dos formas de asignar automáticamente los roles correctos al agente de servicio:
Crea tu transferencia con la Google Cloud consola de. La consola aplica automáticamente los permisos necesarios.
Usa
gcloud transfer authorize --add-missing. Consulta El método más simple para otorgar permisos.
Asigna roles de forma manual
Para permitir que el agente de servicio acceda a los recursos necesarios para completar las transferencias, asigna los siguientes roles, o los permisos equivalentes, al agente de servicio.
| Función / Permiso | Qué hace | Notas |
|---|---|---|
Escritor de buckets heredados de almacenamiento
(roles/storage.legacyBucketWriter)
|
Permite que el Servicio de transferencia de almacenamiento lea los metadatos del bucket, enumere objetos en el bucket y escriba objetos en el bucket de destino. |
Otorga en el bucket de destino de Cloud Storage. Los roles |
Visualizador de objetos de almacenamiento
(roles/storage.objectViewer)
|
Permite que el Servicio de transferencia de almacenamiento copie objetos de una fuente de Cloud Storage. También permite que el Servicio de transferencia de almacenamiento determine si un archivo ya existe en el destino de Cloud Storage y si cambió. |
Otorga en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage. También otorga en el bucket de destino de Cloud Storage si tu transferencia está configurada para [reemplazar objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) en el receptor cuando son diferentes o nunca. No es obligatorio si la configuración de tu transferencia es reemplazar siempre. Si es adecuado para tu situación, puedes otorgar el rol a nivel de proyecto al proyecto desde el que se ejecuta el Servicio de transferencia de almacenamiento. |
Lector de buckets heredados de almacenamiento
(roles/storage.legacyBucketReader)
|
Permite que el Servicio de transferencia de almacenamiento lea los metadatos del bucket de Cloud Storage. |
Otorga en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage. Los roles |
Consulta Otorga los permisos necesarios para obtener instrucciones.
Delega a una cuenta de servicio administrada por el usuario
Puedes delegar los permisos del agente de servicio a una cuenta de servicio administrada por el usuario. Esto te permite separar los permisos de bucket para diferentes trabajos de transferencia en cuentas de servicio, en lugar de centralizarlos en un solo agente de servicio.
Para obtener más detalles, consulta Delega permisos del agente de servicio a una cuenta de servicio administrada por el usuario.
Transferencias de Cloud Storage entre proyectos
Para transferir objetos entre buckets de Cloud Storage en diferentes proyectos, debes otorgar permiso a un solo agente de servicio en el bucket de origen y en el de destino. El agente de servicio pertenece al proyecto desde el que creas la transferencia.
El usuario o la cuenta de servicio administrada por el usuario solo necesitan permisos en el proyecto que crea la transferencia.
Para obtener el correo electrónico del agente de servicio, consulta Busca el correo electrónico del agente de servicio.
En el bucket de origen, otorga los siguientes roles a nivel de bucket al agente de servicio:
- Lector de buckets heredados de almacenamiento (
roles/storage.legacyBucketReader) - Visualizador de objetos de almacenamiento (
roles/storage.objectViewer)
En el bucket de destino, otorga el siguiente rol a nivel de bucket al mismo agente de servicio:
- Escritor de buckets heredados de almacenamiento (
roles/storage.legacyBucketWriter) - Además, para las transferencias configuradas para
reemplazar objetos en el receptor
cuando son diferentes o nunca: Visualizador de objetos de almacenamiento
(
roles/storage.objectViewer)
Para obtener instrucciones sobre cómo otorgar roles a nivel de bucket, consulta las siguientes páginas:
Los roles Legacy de Cloud Storage no se pueden otorgar a nivel de proyecto.
Restricciones organizacionales
Si tu organización aplicó
restricciones de políticas de la organización
como
restricciones de dominio
(constraints/iam.allowedPolicyMemberDomains) o
inhabilitar la vinculación de cuentas de servicio a recursos en otros proyectos
(constraints/iam.disableCrossProjectServiceAccountUsage), estas restricciones
deben actualizarse para que las transferencias entre proyectos se realicen correctamente.
Es posible que también debas actualizar la configuración de los Controles del servicio de VPC para admitir transferencias entre proyectos. Consulta Configura los Controles del servicio de VPC para transferencias de almacenamiento de objetos en la nube.
Permisos de AWS y Microsoft
También debes configurar el acceso a tus archivos de origen si están en AWS S3 o Microsoft Azure Storage. En los siguientes documentos, se detallan los pasos necesarios: