Permisos de transferencias sin agentes

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

  • La cuenta de servicio administrada por el usuario o el usuario que crea o administra la transferencia.
  • Una cuenta de servicio administrada por Google que se crea automáticamente la primera vez que interactúas con el Servicio de transferencia de almacenamiento.

Además, debes configurar el acceso a los archivos de origen en AWS S3, Microsoft Azure o Cloud Storage.

Para obtener información sobre cómo otorgar funciones de IAM, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

El método más simple para otorgar permisos

Se puede usar la CLI de gcloud para otorgar los permisos necesarios a la cuenta de servicio administrada por el usuario o por el 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 los 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 también mostrar las funciones que faltan, ejecuta el siguiente comando:

gcloud transfer authorize

Para aplicar esas funciones 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.

  • 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
  • A la cuenta de servicio administrada por Google:

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

Si deseas obtener instrucciones para 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 por el usuario

En esta sección, se describen las funciones necesarias para las cuentas que administran y ejecutan transferencias. Los requisitos de la organización determinarán las funciones exactas para cada persona. 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 establecen límites de uso del 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. Para obtener una lista detallada de los permisos otorgados, consulta Funciones predefinidas 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 uses 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 Funciones predefinidas del Servicio de transferencia de almacenamiento.

Permisos de la cuenta de servicio administrada 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 creas un trabajo de transferencia, llamas a googleServiceAccounts.get o visitas la página de creación de trabajos en Google Cloud Console.

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 googleServiceAccounts.get.

Asigna roles automáticamente

Existen dos maneras de asignar de forma automática las funciones correctas 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 la sección El método más simple para otorgar permisos.

Asigna roles de forma manual

A fin de permitir que la cuenta de servicio administrada por Google acceda a los recursos necesarios para completar las transferencias, asigna las siguientes funciones (o permisos equivalentes) a la cuenta de servicio.

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. Otorgado en el bucket de destino de Cloud Storage
Visualizador de objetos de Storage (roles/storage.objectViewer) Habilita el Servicio de transferencia de almacenamiento para determinar si ya se transfirió un archivo desde o hacia Cloud Storage. Otorga el permiso en el bucket de origen de Cloud Storage si realizas la transferencia desde Cloud Storage. 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.

Otorga el permiso 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.

Transferencias de Cloud Storage entre proyectos

Para transferir objetos entre buckets de Cloud Storage en proyectos diferentes, debes otorgar permiso a una sola cuenta de servicio administrada por Google en el bucket de origen y el de destino. La cuenta de servicio administrada por Google pertenece al proyecto desde el que creas la transferencia.

La cuenta de servicio administrada por el usuario o el usuario solo necesita permisos en el proyecto que crea la transferencia.

Para obtener el correo electrónico de la cuenta de servicio administrada por Google, consulta Encuentra el correo electrónico del agente de servicio.

En el bucket de origen, otorga las siguientes funciones a nivel de bucket a la cuenta de servicio administrada por Google:

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

En el bucket de destino, otorga la siguiente función a nivel del bucket a la misma cuenta de servicio administrada por Google:

  • Storage Legacy Bucket Writer

Para obtener instrucciones sobre cómo otorgar funciones a nivel de bucket, consulta las siguientes páginas:

Restricciones organizativas

Si tu organización aplicó restricciones de la política de la organización, como restricciones de dominio (constraints/iam.allowedPolicyMemberDomains) o inhabilitación de la vinculación de cuentas de servicio a recursos en otros proyectos (constraints/iam.disableCrossProjectServiceAccountUsage), estas restricciones deben actualizarse para que las transferencias entre proyectos se realicen con éxito.

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 las transferencias de almacenamiento de objetos en la nube.

Permisos de AWS y Microsoft

También debes configurar el acceso a los archivos de origen si están en AWS S3 o Microsoft Azure Storage. En los siguientes documentos, se detallan los pasos necesarios: