Antes de crear una transferencia basada en agentes, debes configurar los permisos para las siguientes entidades:
La cuenta de servicio del usuario o administrada por el usuario que se usa para crear la transferencia. Esta es la cuenta con la que accediste a la consola de Google Cloud o la que se especifica cuando se autentica en la CLI de
gcloud
. La cuenta de usuario puede 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 agente de servicio, que usa el Servicio de transferencia de almacenamiento. Por lo general, 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 de agente de transferencia que proporciona permisos de Google Cloud para 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 administrada por el usuario para autenticarse.
Para obtener más 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 servicio del usuario o administrada por el 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, pasa el archivo de claves 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 Crea y administra cuentas de servicio.
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
A la cuenta de servicio administrada 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 servicio administrada por el usuario o del usuario
En esta sección, se describen los roles necesarios para las cuentas que administran y ejecutan transferencias. Los requisitos de tu organización dictarán los roles exactos para cada arquetipo. En esta sección, se supone que crearás un administrador y un usuario.
Cuentas de administrador
Las cuentas de administrador del Servicio de transferencia de almacenamiento administran los agentes de transferencia, establecen límites de uso de ancho de banda y borran 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 usas una cuenta de servicio, el método que usas para pasar las credenciales al 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 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
.
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 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 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 de 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 otorga este rol, 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 |
Consulta Otorga los permisos necesarios para obtener instrucciones.
Cómo transferir permisos de la cuenta de 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.
Del sistema de archivos, el almacenamiento compatible con S3 o HDFS a Cloud Storage
Si el destino de tu transferencia es un bucket de Cloud Storage, 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 del agente enumere los objetos en el bucket de Cloud Storage. |
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
O bien, crea un rol personalizado con los permisos específicos y otórgalo.
Se requieren permisos adicionales para habilitar las 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 transferencia y metadatos relacionados con la transferencia en el 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 del agente enumere los objetos en el bucket de Cloud Storage. |
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:
- Storage Object Viewer (
roles/storage.objectViewer
)
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 del agente enumere los objetos en el bucket de Cloud Storage. |
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
O bien, crea un rol personalizado con los permisos específicos y otórgalo.
Se requieren permisos adicionales para habilitar las 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 bucket de destino.
- Para las transferencias entre sistemas de archivos, asigna los permisos al bucket intermedio.
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
O bien, crea un rol personalizado con los permisos específicos y otórgalo.