Permisos de transferencia sin agente

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:

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:

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 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 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 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 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: