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 |
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:
- Administrador de objetos de Storage (
roles/storage.objectAdmin
)
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:
- Lector de objetos de Storage (
roles/storage.objectViewer
)
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:
- Administrador de objetos de Storage (
roles/storage.objectAdmin
)
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:
- Administrador de objetos de Storage (
roles/storage.objectAdmin
)
También puedes crear un rol personalizado con los permisos específicos y concederlo.