Las transferencias sin agentes incluyen transferencias dentro de Cloud Storage, 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 principales:
- La cuenta de usuario que crea o administra la transferencia.
- Un agente de servicio administrado por Google 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 Cómo delegar permisos del agente de servicio a una cuenta de servicio administrada por el usuario.
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 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 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/owner
roles/storagetransfer.admin
roles/storagetransfer.transferAgent
roles/storage.objectAdmin
roles/pubsub.editor
Al agente de servicio administrado 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 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 administrado por Google para 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 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. |
Uno de los siguientes roles: | ||
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 que 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 administrado por Google
El Servicio de transferencia de almacenamiento usa un
agente de servicio
administrado por Google para
trasladar 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
][googleServiceAccounts.get].
Cómo asignar roles automáticamente
Existen dos maneras de asignar automáticamente los roles correctos al agente de servicio:
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 el agente de servicio acceda a los recursos necesarios para completar las transferencias, asígnale los siguientes roles, o los permisos equivalentes.
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 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 habilita el Servicio de transferencia de almacenamiento para determinar si un archivo ya existe en el destino de Cloud Storage y si cambió. |
Otórgalo en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage. También otorga permisos 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 sea diferente o nunca. No es obligatorio si la configuración de 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. |
Otórgalo 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.
Delegación 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 entre cuentas de servicio, en lugar de centralizarlos en un solo agente de servicio.
Para obtener más información, consulta Cómo delegar 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.
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 del agente de servicio, consulta Cómo encontrar el correo electrónico del agente de servicio.
En el bucket de origen, otorga los siguientes roles al agente de servicio a nivel del bucket:
Storage Legacy Bucket Reader
Storage Object Viewer
En el bucket de destino, otorga el siguiente rol al mismo agente de servicio a nivel del bucket:
Storage Legacy Bucket Writer
Para obtener instrucciones sobre cómo otorgar roles a nivel del bucket, consulta las siguientes páginas:
Los roles Legacy
de Cloud Storage no se pueden otorgar a nivel del proyecto.
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: