Permisos de transferencia mediante agentes

Antes de crear una transferencia basada en agentes, debes configurar los permisos de las siguientes entidades:

  • La cuenta de usuario o de servicio gestionada por el usuario que se usa para crear la transferencia. Esta es la cuenta con la que se ha iniciado sesión en la consola de Google Cloud o la cuenta que se ha especificado al autenticarse en la CLI de gcloud. La cuenta de usuario puede ser una cuenta de usuario normal o una cuenta de servicio gestionada por el usuario.

  • La cuenta de servicio gestionada por Google, también conocida como agente de servicio, que usa el Servicio de transferencia de Storage. Esta cuenta se identifica generalmente por su dirección de correo, que tiene el formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

  • La cuenta de agente de transferencia que proporciona Google Cloud permisos a los agentes de transferencia. Las cuentas de agente de transferencia usan las credenciales del usuario que las instala o las credenciales de una cuenta de servicio gestionada por el usuario para autenticarse.

Para obtener más información sobre cómo conceder roles de gestión de identidades y accesos, consulta el artículo sobre cómo conceder, cambiar y revocar el acceso a los recursos.

Método más sencillo para conceder permisos

La CLI de gcloud se puede usar para conceder los permisos necesarios a la cuenta de servicio gestionada por el usuario y a la cuenta de servicio gestionada por Google. Estos permisos permiten al usuario crear, editar y eliminar trabajos de transferencia, así como definir 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 ver los permisos mínimos que requiere el Servicio de transferencia de Storage.

Para inspeccionar los permisos y mostrar 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 conceder permisos a una cuenta de servicio gestionada por el usuario, pasa el archivo de clave 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 el artículo Crear y gestionar cuentas de servicio.

El comando concede los siguientes permisos.

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

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • A la cuenta de servicio gestionada 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 usuario o de cuenta de servicio gestionada por el usuario

En esta sección se describen los roles necesarios para las cuentas que gestionan y ejecutan las transferencias. Los requisitos de tu organización determinarán los roles exactos de cada perfil. En esta sección se da por hecho que crearás un administrador y un usuario.

Cuentas de administrador

Las cuentas de administrador del Servicio de transferencia de Storage gestionan los agentes de transferencia, establecen límites de uso del ancho de banda y eliminan tareas de transferencia.

Para configurar una cuenta de administrador, asigna los siguientes permisos y roles de gestión de identidades y accesos:

Rol o permiso Para qué sirve Notas
resourcemanager.projects.getIamPolicy Este permiso se usa para confirmar que la cuenta de servicio gestionada por Google tiene los permisos necesarios para realizar una transferencia. Para conceder este permiso, asigna el rol predefinido Lector de roles (roles/iam.roleViewer) o crea un rol personalizado con este único permiso y asigna el rol personalizado.
Administrador de Transferencia de Almacenamiento (roles/storagetransfer.admin) Permite realizar acciones administrativas en el proyecto de transferencia, como configurar el proyecto y monitorizar el agente. Para ver una lista detallada de los permisos concedidos, consulta Roles predefinidos del Servicio de transferencia de Storage.

Cuentas de usuario

Las cuentas de usuario del Servicio de transferencia de Storage se usan para crear y ejecutar transferencias. Estas cuentas no suelen tener acceso para eliminar tareas de transferencia.

Una cuenta de usuario puede ser un Google Cloud usuario de la consola o una cuenta de servicio. Si utilizas una cuenta de servicio, el método que uses para transferir las credenciales a Storage Transfer Service variará en función de la interfaz que utilices.

Para configurar una cuenta de usuario, asigna los siguientes permisos y roles a la cuenta:

Rol o permiso Para qué sirve Notas
resourcemanager.projects.getIamPolicy Se usa para confirmar que la cuenta de servicio gestionada por Google tiene los permisos de Pub/Sub necesarios para una transferencia. Para conceder este permiso, asigna el rol predefinido Lector de roles (roles/iam.roleViewer) o crea un rol personalizado con este único permiso y asigna el rol personalizado.
Usuario de transferencia de Storage (roles/storagetransfer.user) Permite al usuario crear, obtener, actualizar y mostrar transferencias. Para ver una lista detallada de los permisos concedidos, consulta Roles predefinidos del Servicio de transferencia de Storage.

Permisos de cuenta de servicio gestionada por Google

El Servicio de transferencia de Storage usa una cuenta de servicio gestionada por Google para mover 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 consolaGoogle Cloud .

El formato de la cuenta de servicio suele ser project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Para obtener el identificador de tu cuenta de servicio, usa la llamada a la API googleServiceAccounts.get.

Asignación automática de roles

Hay dos formas de asignar automáticamente los roles correctos a la cuenta de servicio gestionada por Google:

  • Crea la transferencia con la Google Cloud consola. La consola aplica automáticamente los permisos necesarios.

  • Usa el valor gcloud transfer authorize --add-missing. Consulta el método más sencillo para conceder permisos.

Asignación manual de roles

Para permitir que la cuenta de servicio gestionada por Google acceda a los recursos necesarios para completar las transferencias, asigna los siguientes roles o permisos equivalentes a la cuenta de servicio.

Rol o permiso Para qué sirve Notas
Creador de objetos de almacenamiento (roles/storage.objectCreator) Permite que Storage Transfer Service cree registros de transferencia en el segmento de Cloud Storage conectado a esta transferencia. Concede acceso a todos los segmentos de Cloud Storage que se usen en una transferencia. Si es adecuado para tu situación, puedes asignar el rol a nivel de proyecto al proyecto desde el que se ejecuta Storage Transfer Service.

Para ver una lista detallada de los permisos que conceden estos roles, consulta Roles predefinidos de Cloud Storage.
Lector de objetos de almacenamiento (roles/storage.objectViewer) Permite que el servicio de transferencia de Storage determine si un archivo ya se ha transferido a Cloud Storage o desde él.
Agente del Servicio de transferencia de Storage (roles/storagetransfer.serviceAgent) Permite que el Servicio de transferencia de Storage cree y modifique automáticamente temas de Pub/Sub para comunicarse desde Google Cloud con los agentes de transferencia. Aplica el rol a nivel de proyecto en el proyecto desde el que se ejecuta Storage Transfer Service.

Para ver una lista detallada de los permisos que concede este rol, consulta Permisos y roles.
Lector de segmentos heredados de Storage (roles/storage.legacyBucketReader) Permite que el servicio de transferencia de Storage lea los metadatos de los segmentos de Cloud Storage.

Concede a cada segmento de Cloud Storage que se utilice en una transferencia.

Los roles de legacyCloud Storage solo se pueden asignar a nivel de segmento.

Consulta las instrucciones en Conceder los permisos necesarios.

Transferir permisos de cuenta de agente

Los agentes de transferencia del Servicio de transferencia de Storage se pueden ejecutar con la cuenta del usuario o con una cuenta de servicio.

Para configurar una cuenta de servicio o una cuenta de usuario de agente de transferencia que ejecute los agentes de transferencia, asigna el siguiente rol:

Rol o permiso Para qué sirve Notas
Storage Transfer Agent (roles/storagetransfer.transferAgent) Concede a los agentes de transferencia los permisos de Servicio de transferencia de Storage y Pub/Sub necesarios para completar una transferencia. Asigna este rol al usuario o a la cuenta de servicio que utilicen los agentes.

Para ver una lista detallada de los permisos que concede este rol, consulta Control de acceso con gestión de identidades y accesos.

Permisos de origen y destino

También debe asegurarse de que la cuenta del agente tenga los permisos correctos para acceder a los datos de origen y escribir en el destino.

Sistema de archivos, almacenamiento compatible con S3 o HDFS a Cloud Storage

Si el destino de la transferencia es un segmento de Cloud Storage, el agente de transferencia necesita los siguientes permisos en el segmento de destino. Para obtener instrucciones, consulta Añadir una entidad a una política a nivel de segmento.

Permiso Descripción
storage.objects.create Permite que la cuenta del agente escriba objetos de Cloud Storage durante la transferencia.
storage.objects.get Permite que la cuenta del agente lea los datos y los metadatos de los objetos.
storage.objects.list Permite que la cuenta del agente muestre los objetos del segmento de Cloud Storage.
storage.objects.delete Obligatorio si la transferencia está configurada para sobrescribir o eliminar objetos en el receptor. Por ejemplo, si overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink se han definido en la configuración transferOptions de la transferencia.

Para conceder estos permisos, asigna el siguiente rol:

También puedes crear un rol personalizado con los permisos específicos y concederlo.

Se necesitan permisos adicionales para habilitar las subidas multiparte.

Cloud Storage a sistema de archivos

Si el origen de la transferencia es un segmento de Cloud Storage, el agente de transferencia necesita el siguiente permiso en el segmento de origen.

Permiso Descripción
storage.objects.create Permite que la cuenta del agente escriba registros de transferencias y metadatos relacionados con las transferencias en el segmento de origen de Cloud Storage.
storage.objects.get Permite que la cuenta del agente lea los datos y los metadatos de los objetos.
storage.objects.list Permite que la cuenta del agente muestre los objetos del segmento de Cloud Storage.
storage.objects.delete Obligatorio si la transferencia está configurada para eliminar objetos del origen. Consulta deleteObjectsFromSourceAfterTransfer.

Para conceder este permiso, asigna el siguiente rol:

También puedes crear un rol personalizado con un solo permiso y concederlo.

De sistema de archivos a sistema de archivos

Si la transferencia se realiza entre dos sistemas de archivos, el agente de transferencia necesita los siguientes permisos en el bucket intermedio.

Permiso Descripción
storage.objects.create Permite que la cuenta del agente escriba objetos de Cloud Storage durante la transferencia.
storage.objects.get Permite que la cuenta del agente lea los datos y los metadatos de los objetos.
storage.objects.list Permite que la cuenta del agente muestre los objetos del segmento de Cloud Storage.
storage.objects.delete Obligatorio si la transferencia está configurada para eliminar objetos del segmento intermedio una vez que se haya completado.

Para conceder estos permisos, asigna el siguiente rol:

También puedes crear un rol personalizado con los permisos específicos y concederlo.

Se necesitan permisos adicionales para habilitar las subidas multiparte.

Subidas multiparte

Para habilitar las subidas multiparte en las transferencias de sistemas de archivos a Cloud Storage o entre sistemas de archivos, concede los siguientes permisos al agente.

  • En el caso de las transferencias a Cloud Storage, asigna los permisos al segmento de destino.
  • En el caso de las transferencias entre sistemas de archivos, asigna los permisos al bucket intermedio.
Nombre del permiso de subida multiparte Descripción
storage.multipartUploads.create Subir objetos en varias partes.
storage.multipartUploads.abort Anular sesiones de subida multiparte.
storage.multipartUploads.listParts Muestra las partes de objetos subidas en una sesión de subida multiparte.
storage.multipartUploads.list Muestra las sesiones de subida multiparte de un segmento.

Para conceder estos permisos, asigna el siguiente rol:

También puedes crear un rol personalizado con los permisos específicos y concederlo.