Permisos de transferencia sin agente

Las transferencias sin agentes incluyen transferencias dentro de Cloud Storage, o 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 del 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 en Cloud Storage.

Para obtener 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. 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 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 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
  • 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 el 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 explican los roles necesarios para las cuentas que administran y en la ejecución de 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 establecen límites de uso de ancho de banda y borran de transferencia de datos.

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

  • 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.

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
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. Otórgalo en el bucket de origen de Cloud Storage si transfieres datos 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 diferentes proyectos, debes otorgar permiso a una sola cuenta de servicio administrada por Google en el bucket de origen y en 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 de bucket al 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 de bucket, consulta los siguientes vínculos: páginas:

Restricciones organizativas

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: