Permisos de transferencia sin agente

Las transferencias sin agente incluyen las transferencias dentro de Cloud Storage. de Amazon S3, Azure Blob Storage o Data Lake Storage Gen2, o listas de URL de objetos públicos. No requieren agentes ni agentes de transferencia piscinas.

Cuando se transfieren datos entre proveedores de servicios en la nube en una transferencia sin agentes, debe otorgar permisos a dos entidades:

  • La cuenta de servicio administrada por el usuario o del usuario que crea o administra la transferencia.
  • Una cuenta de servicio administrada por Google que se crea automáticamente el primer cada 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 roles de IAM, consulta Otorgar, cambiar y la revocación del 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 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 e imprimir los roles que faltan, ejecuta el siguiente comando: siguiente comando:

gcloud transfer authorize

Para aplicar automáticamente esos roles, 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
  • En la cuenta de servicio administrada por Google, haz lo siguiente:

    • 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 cuenta de servicio administrada por un usuario o por un usuario

En esta sección, se explican los roles necesarios para las cuentas que administran y en la ejecución de 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 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 acciones administrativas en el proyecto de transferencia, como la configuración del proyecto. 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 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 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 al Cuenta de servicio administrada por Google:

Asignar roles de forma manual

Permitir que la cuenta de servicio administrada por Google acceda a los recursos necesarios para completar las transferencias, asignar los siguientes roles o roles equivalentes permisos 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 metadatos de bucket, enumere objetos en bucket, y escribir objetos en el bucket de destino. Otorgar en el bucket de destino 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. Otorga el permiso en el bucket de origen de Cloud Storage si quieres transferir 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 quieres transferir 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, haz lo siguiente: 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 un 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 Busca el correo electrónico del agente de servicio.

En el bucket de origen, otorga los siguientes roles a nivel del bucket a la cuenta de servicio administrada por Google:

  • Storage Legacy Bucket Reader
  • Storage Object Viewer

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

  • Storage Legacy Bucket Writer

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

Restricciones de la organización

Si tu organización aplicó restricciones de la política de la organización como, por ejemplo, restricciones de dominio (constraints/iam.allowedPolicyMemberDomains) o inhabilita la vinculación de cuentas de servicio con los recursos de otros proyectos (constraints/iam.disableCrossProjectServiceAccountUsage), estas restricciones deben actualizarse antes de que las transferencias entre proyectos se realicen correctamente.

Es posible que también debas actualizar la configuración de los Controles del servicio de VPC para admitir entre proyectos. Consulta Configura los Controles del servicio de VPC para transferencias de almacenamiento de objetos en la nube.

Permisos de AWS y Microsoft

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