Permisos de transferencia basada en agentes

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

  • La cuenta de servicio del usuario o administrada por el usuario que se usa para crear la transferencia. Este es el con la que accediste a la consola de Google Cloud se especifica cuando se autentica en la CLI de gcloud. La cuenta de usuario ser una cuenta de usuario normal o una cuenta de servicio administrada por el usuario.

  • La cuenta de servicio administrada por Google, también conocida como la que usa el Servicio de transferencia de almacenamiento. Generalmente, esta cuenta se identifica por su dirección de correo electrónico, que usa el formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com

  • La cuenta del agente de transferencia que proporciona Google Cloud para los agentes de transferencia. Las cuentas del agente de transferencia usan credenciales del usuario que las instala o las credenciales de un de servicio administrada por el usuario, para autenticar.

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

Es el método más simple de otorgar permisos.

Se puede usar la CLI de gcloud para otorgar los permisos necesarios a la usuario / cuenta de servicio administrada por un usuario y a la cuenta de servicio administrada por Google. Con estos permisos, el usuario puede crear, editar y borrar trabajos de transferencia. y establecer o modificar límites de ancho de banda.

Si estos permisos son demasiado amplias para las políticas de tu organización, consulta las siguientes secciones 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 la cuenta de servicio archivo de claves:

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.

  • Para la cuenta de servicio administrada por el usuario o por el usuario, haz lo siguiente:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • En la cuenta de servicio administrada por Google, haz lo siguiente:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Si deseas obtener instrucciones para instalar la CLI de gcloud, consulta el Guía de inicio rápido de gcloud.

Permisos de cuenta de servicio administrada por un usuario o por un usuario

En esta sección, se describen los roles necesarios para las cuentas que administran y ejecutan transferencias. Los requisitos de tu organización determinarán roles para cada persona; en esta sección, se da por sentado que crearás administrador y un usuario.

Cuentas de administrador

Las cuentas de administrador del Servicio de transferencia de almacenamiento administran la transferencia configurar límites de uso de ancho de banda y borrar 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 y la supervisión de agentes. 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 estás con una cuenta de servicio, el método que usas para pasar las credenciales a El 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 automáticamente la primera vez que crees un trabajo de transferencia, llama googleServiceAccounts.get, o visita 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 el 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 la transferencia con la consola de Google Cloud. La consola automáticamente aplica los permisos necesarios.

  • Usa gcloud transfer authorize --add-missing. Consulta El método más simple de 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
Creador de objetos de almacenamiento (roles/storage.objectCreator) Habilita el Servicio de transferencia de almacenamiento para crear registros de transferencia en el bucket de Cloud Storage conectado a esta transferencia. Otorga acceso a todos los depósitos de Cloud Storage que se usaron en una transferencia. 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.

Para obtener una lista detallada de los permisos que otorgan estos roles, consulta Roles predefinidos 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.
Agente del Servicio de transferencia de almacenamiento (roles/storagetransfer.serviceAgent) Permite que el Servicio de transferencia de almacenamiento cree y modifique automáticamente temas de Pub/Sub para comunicarse desde Google Cloud a los agentes de transferencia. Aplica el rol a nivel de proyecto al proyecto desde el que se ejecuta el Servicio de transferencia de almacenamiento.

Para obtener una lista detallada de los permisos que tiene este rol otorgamientos, consulta Permisos y roles.
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.

Se otorga a cada bucket de Cloud Storage que se usa en una transferencia.

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

Consulta Otorga los permisos necesarios para obtener instrucciones.

Transfiere permisos de la cuenta del agente

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

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

Función / Permiso Qué hace Notas
Agente de transferencia de almacenamiento (roles/storagetransfer.transferAgent) Otorga a los agentes de transferencia el permiso de Servicio de transferencia de almacenamiento y Pub/Sub necesarios para completar una transferencia. Otorga este rol al usuario o la cuenta de servicio que usan los agentes.

Para obtener una lista detallada de los permisos que otorga este rol, consulta Control de acceso con IAM.

Permisos de origen y destino

También debes asegurarte 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 tu destino de transferencia es un bucket de Cloud Storage, el el agente de transferencia necesita los siguientes permisos en el bucket de destino. Consulta Agrega una principal a una política de nivel de bucket para obtener instrucciones.

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 metadatos de los objetos.
storage.objects.list Permite que la cuenta de agente enumere objetos en Cloud Storage bucket.
storage.objects.delete Es obligatorio si tu transferencia está configurada para reemplazar o borrar objetos en el receptor. Por ejemplo, si overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink se establecen en la configuración de transferOptions de tu transferencia.

Para otorgar estos permisos, otorga el siguiente rol:

O bien, crea un rol personalizado con los permisos específicos y otórgalo.

Se requieren permisos adicionales para Habilitar cargas multiparte.

De Cloud Storage al sistema de archivos

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

Permiso Descripción
storage.objects.create Permite que la cuenta del agente escriba registros de transferencias y relacionados con las transferencias metadatos al bucket de origen de Cloud Storage.
storage.objects.get Permite que la cuenta del agente lea los datos y metadatos de los objetos.
storage.objects.list Permite que la cuenta de agente enumere objetos en Cloud Storage bucket.
storage.objects.delete Es obligatorio si tu transferencia está configurada para borrar objetos de la fuente. Consulta deleteObjectsFromSourceAfterTransfer

Para otorgar este permiso, otorga el siguiente rol:

O bien, crea un rol personalizado con ese único permiso y otórgalo.

De un sistema de archivos a otro

Si tu transferencia está 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 metadatos de los objetos.
storage.objects.list Permite que la cuenta de agente enumere objetos en Cloud Storage bucket.
storage.objects.delete Es obligatorio si tu transferencia está configurada para borrar objetos en el bucket intermedio después de que se complete la transferencia.

Para otorgar estos permisos, otorga el siguiente rol:

O bien, crea un rol personalizado con los permisos específicos y otórgalo.

Se requieren permisos adicionales para Habilitar cargas multiparte.

Cargas multiparte

Para habilitar las cargas divididas en varias partes para las transferencias de sistema de archivos a Cloud Storage o entre sistemas de archivos, además, otorga los siguientes permisos al agente.

  • Para las transferencias a Cloud Storage, asigna los permisos al destino bucket.
  • Para las transferencias entre sistemas de archivos, asigna los permisos al intermediario bucket.
Nombre del permiso de carga multiparte Descripción
storage.multipartUploads.create Sube objetos en varias partes.
storage.multipartUploads.abort Anula las sesiones de carga multiparte.
storage.multipartUploads.listParts Enumera las partes de objeto subidas en una sesión de carga multiparte.
storage.multipartUploads.list Enumera las sesiones de carga multiparte en un bucket.

Para otorgar estos permisos, otorga el siguiente rol:

O bien, crea un rol personalizado con los permisos específicos y otórgalo.