Permisos de transferencia sin agentes

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:

Para obtener información sobre cómo otorgar roles de IAM, consulta Otorga, cambia y revoca el acceso a los recursos.

El método más sencillo para otorgar permisos

La CLI de gcloud se puede usar para otorgar los permisos requeridos 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, y 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 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.

  • Para el usuario o la cuenta de servicio administrada por el usuario:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Para el 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 siguientes 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 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 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 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 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].

Asignación automática de roles

Hay dos formas de asignar automáticamente los roles correctos al agente de servicio:

Asignación manual de roles

Para permitir que el agente de servicio acceda a los recursos necesarios para completar las transferencias, asígnale los siguientes roles o 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.

Permiso en el bucket de destino de Cloud Storage

Los roles legacy de Cloud Storage solo se pueden otorgar a nivel de bucket.

Visualizador de objetos de almacenamiento (roles/storage.objectViewer)

Permite que el Servicio de transferencia de almacenamiento copie objetos desde 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ó.

Otorgar en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage

También se debe otorgar acceso al bucket de destino de Cloud Storage si la transferencia está configurada para [reemplazar objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) en el receptor cuando sean diferentes o nunca. No es obligatorio si la configuración de transferencia es para 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.

Otorgar en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage

Los roles legacy de Cloud Storage solo se pueden otorgar a nivel de bucket.

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 en las cuentas de servicio, en lugar de centralizarlos en un solo agente de servicio.

Para obtener más detalles, consulta Cómo delegar permisos de agente de servicio en 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 usuario o de servicio 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 Busca el correo electrónico del agente de servicio.

En el bucket de origen, otorga los siguientes roles a nivel del bucket al agente de servicio:

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

En el bucket de destino, otorga el siguiente rol a nivel del bucket al mismo agente de servicio:

  • 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 de proyecto.

Restricciones para organizaciones

Si tu organización aplicó restricciones de 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 se deben actualizar 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 las transferencias de almacenamiento de objetos en la nube.

Permisos de AWS y Microsoft

También debes configurar el acceso a tus archivos fuente si se encuentran en AWS S3 o Microsoft Azure Storage. En los siguientes documentos, se detallan los pasos necesarios: