Las transferencias sin agentes incluyen transferencias dentro de Cloud Storage, o desde Amazon S3, Azure Blob Storage o Data Lake Storage Gen2, o listas de URL 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 agentes, debes otorgar permisos a dos entidades:
- La cuenta de servicio administrada por el usuario o del usuario que crea o administra la transferencia.
- Una cuenta de servicio administrada por Google que se crea automáticamente la primera vez que interactúas con el Servicio de transferencia de almacenamiento
Además, debes configurar el acceso a los archivos de origen en AWS S3, Microsoft Azure o en Cloud Storage.
Para obtener información sobre cómo otorgar roles de IAM, consulta Otorga, cambia y revoca el acceso a los recursos.
Método más sencillo para otorgar permisos
La CLI de gcloud
se puede usar para otorgar los permisos necesarios a la cuenta de servicio del usuario o administrada por el usuario, y a la cuenta de servicio administrada por Google.
Estos permisos permiten al usuario crear, editar y borrar trabajos de transferencia, así como establecer o modificar 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, luego, imprimir los roles que faltan, 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, pasa el archivo de claves de la cuenta de servicio:
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
Para obtener instrucciones sobre cómo crear una cuenta de servicio, consulta Crea y administra cuentas de servicio.
El comando otorga los siguientes permisos.
Al usuario o a la cuenta de servicio administrada por el usuario:
roles/owner
roles/storagetransfer.admin
roles/storagetransfer.transferAgent
roles/storage.objectAdmin
roles/pubsub.editor
A la cuenta de servicio administrada por Google:
roles/storage.admin
roles/storagetransfer.serviceAgent
Para obtener instrucciones sobre cómo instalar la CLI de gcloud
, consulta la
guía de inicio rápido de gcloud
.
Permisos de la cuenta de servicio administrada por el usuario o del usuario
En esta sección, se describen los roles necesarios para las cuentas que administran y ejecutan transferencias. Los requisitos de tu organización dictarán los roles exactos para cada arquetipo. En esta sección, se supone que crearás un administrador y un usuario.
Cuentas de administrador
Las cuentas de administrador del Servicio de transferencia de almacenamiento establecen límites de uso de ancho de banda y borran trabajos de transferencia.
Para configurar una cuenta de administrador, asigna los siguientes permisos y roles de IAM:
Función / Permiso | Qué hace | Notas |
---|---|---|
resourcemanager.projects.getIamPolicy |
Este permiso se usa a fin de confirmar que la cuenta de servicio administrada por Google tenga los permisos necesarios para una transferencia. | Para otorgar este permiso, otorga el rol predefinido Role Viewer (roles/iam.roleViewer ) o crea un rol personalizado con este único permiso y otórgalo. |
Administrador de transferencia de almacenamiento (roles/storagetransfer.admin ) |
Habilita las acciones administrativas en el proyecto de transferencia, como la configuración del proyecto. | Para obtener una lista detallada de los permisos otorgados, consulta Roles predefinidos del Servicio de transferencia de almacenamiento. |
Cuentas de usuario
Las cuentas de usuario del Servicio de transferencia de almacenamiento se usan para crear y ejecutar transferencias. Por lo general, estas cuentas no tienen acceso para borrar trabajos de transferencia.
Una cuenta de usuario puede ser un usuario de la consola de Google Cloud o una cuenta de servicio. Si usas una cuenta de servicio, el método que usas para pasar las credenciales al Servicio de transferencia de almacenamiento varía según la interfaz que uses.
Para configurar una cuenta de usuario, asigna los siguientes permisos y roles a la cuenta:
Función / Permiso | Qué hace | Notas |
---|---|---|
resourcemanager.projects.getIamPolicy |
Se usa con el fin de confirmar que la cuenta de servicio administrada por Google tenga los permisos de Pub/Sub necesarios para una transferencia. | Para otorgar este permiso, otorga el rol predefinido Role Viewer (roles/iam.roleViewer ) o crea un rol personalizado con este único permiso y otórgalo. |
Usuario de transferencia de almacenamiento (roles/storagetransfer.user ) |
Permite que el usuario cree, obtenga, actualice y enumere las transferencias. | Para obtener una lista detallada de los permisos otorgados, consulta Roles predefinidos del Servicio de transferencia de almacenamiento. |
Permisos de las cuentas de servicio administradas por Google
El Servicio de transferencia de almacenamiento usa una cuenta de servicio administrada por Google para mover tus datos. Esta cuenta de servicio se crea de forma automática 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 de 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
.
Cómo asignar roles automáticamente
Existen dos maneras de asignar automáticamente los roles correctos a la cuenta de servicio administrada por Google:
Crea tu transferencia con la consola de Google Cloud. La consola aplica automáticamente los permisos necesarios.
Usa
gcloud transfer authorize --add-missing
. Consulta El método más sencillo para otorgar permisos.
Cómo asignar roles de forma manual
Para permitir que la cuenta de servicio administrada por Google acceda a los recursos necesarios para completar las transferencias, asigna los siguientes roles, o los permisos equivalentes, a la cuenta 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 los objetos en el bucket y escriba objetos en el bucket de destino. | Otorgar en el bucket de destino de Cloud Storage |
Visualizador de objetos de almacenamiento (roles/storage.objectViewer ) |
Habilita el Servicio de transferencia de almacenamiento para determinar si ya se transfirió un archivo desde o hacia Cloud Storage. | Otórgalo en el bucket de origen de Cloud Storage si transfieres datos desde Cloud Storage. 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. |
Otórgalo en el bucket de origen de Cloud Storage si transfieres datos desde Cloud Storage. Los roles |
Consulta Otorga los permisos necesarios para obtener instrucciones.
Transferencias de Cloud Storage entre proyectos
Para transferir objetos entre buckets de Cloud Storage en diferentes proyectos, debes otorgar permiso a una sola cuenta de servicio administrada por Google en el bucket de origen y en el de destino. La cuenta de servicio administrada por Google pertenece al proyecto desde el que creas la transferencia.
La cuenta de servicio del usuario o administrada por el usuario solo necesita permisos en el proyecto que crea la transferencia.
Para obtener el correo electrónico de la cuenta de servicio administrada por Google, consulta Encuentra el correo electrónico del agente de servicio.
En el bucket de origen, otorga los siguientes roles a nivel del bucket a la cuenta de servicio administrada por Google:
Storage Legacy Bucket Reader
Storage Object Viewer
En el bucket de destino, otorga el siguiente rol a nivel del bucket a la misma cuenta de servicio administrada por Google:
Storage Legacy Bucket Writer
Para obtener instrucciones sobre cómo otorgar roles a nivel del bucket, consulta las siguientes páginas:
Restricciones de la organización
Si tu organización aplicó
restricciones de la política 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 antes de que se puedan realizar transferencias entre proyectos.
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: