Autorizar cuentas para la transferencia de datos
En este documento se ofrece una descripción general de cómo interactúa BigQuery Data Transfer Service con los distintos tipos de cuentas, los tipos de autorización de cuenta que necesitas para realizar tareas de transferencia generales y los pasos para solucionar errores de permisos comunes.
Para empezar a usar BigQuery Data Transfer Service, asegúrese de que las cuentas asociadas a su proyecto (tanto las cuentas de usuario como las cuentas de servicio) estén autenticadas y autorizadas con los permisos correctos para satisfacer sus necesidades de transferencia. Para obtener información sobre los permisos específicos de cada fuente de datos, consulta la guía de transferencia de cada una de ellas.
Conceptos clave
BigQuery Data Transfer Service automatiza las transferencias de datos de varias fuentes de datos a BigQuery. El modelo de autenticación y autorización funciona en dos fases diferentes: el plano de control y el plano de datos. Además, se aplica a dos tipos de usuarios: el creador de la transferencia y el propietario de la transferencia.
Plano de control
El plano de control representa la fase del proceso de autorización en la que un usuario autenticado puede controlar y gestionar las configuraciones y las ejecuciones de transferencias. Un usuario del plano de control debe tener los permisos de gestión de identidades y accesos (IAM) adecuados para controlar y gestionar sus configuraciones y ejecuciones de transferencias:
- El permiso
bigquery.transfers.update
, que permite a los usuarios hacer lo siguiente:- Configura las configuraciones de transferencias de datos.
- Administrar las transferencias existentes, como actualizar, inhabilitar o eliminar una transferencia.
- El permiso
bigquery.transfers.get
, que permite a los usuarios monitorizar las ejecuciones de transferencias, como comprobar el estado de una ejecución de transferencia o ver el historial y los registros de las ejecuciones de transferencias.
Si usas la Google Cloud consola o la herramienta de línea de comandos bq para crear una transferencia, también debes tener el permiso bigquery.transfers.get
.
No es necesario tener el permiso bigquery.transfers.update
para configurar una consulta programada. Para obtener más información, consulta los permisos necesarios para las consultas programadas.
Plano de datos
El plano de datos representa la fase que está fuera del control directo de un usuario. En el plano de datos, BigQuery Data Transfer Service puede realizar transferencias de datos sin conexión y puede activar ejecuciones de transferencias automáticamente según una programación especificada por el usuario. En el plano de datos, las credenciales del propietario de la transferencia se usan para acceder a los datos de origen y, en función de la fuente de datos, se usan las credenciales del propietario de la transferencia o el agente de servicio de BigQuery Data Transfer Service para iniciar tareas de BigQuery y escribir datos en el conjunto de datos de destino.
Para obtener más información sobre los permisos necesarios, consulta las siguientes secciones de esta guía:
- Autorización de acceso de lectura para fuentes de datos externas
- Autorización para iniciar tareas de BigQuery
- Autorización para ejecutar trabajos de BigQuery y escribir datos en el conjunto de datos de destino
Transferencia de creador frente a transferencia de propietario
El creador de la transferencia es el usuario que ha creado y configurado la configuración de la transferencia. Un usuario de BigQuery Data Transfer Service y un creador de transferencias pueden ser una cuenta de usuario o una cuenta de servicio.
El propietario de una transferencia es la identidad de usuario que usa BigQuery Data Transfer Service para autorizar la transferencia de datos, concretamente, para extraer los datos de origen. En el caso de las fuentes de datos que admiten cuentas de servicio, el propietario de la transferencia puede ser una cuenta de usuario o una cuenta de servicio. En el caso de otras fuentes de datos, el propietario de la transferencia debe ser una cuenta de usuario.
El propietario y el creador de la transferencia pueden tener la misma identidad de usuario, pero no es obligatorio. Hay varias formas de asignar la propiedad de la transferencia a un usuario distinto del que la creó:
- Al crear una transferencia, puedes asignar la propiedad a una cuenta de servicio si la fuente de datos admite cuentas de servicio.
- Una vez que se haya creado una transferencia, puedes transferir la propiedad a una nueva cuenta de usuario (o a una cuenta de servicio si la fuente de datos admite cuentas de servicio) que tenga los permisos
bigquery.transfers.update
ybigquery.transfers.get
. Debes haber iniciado sesión en la nueva cuenta cuando actualices las credenciales.
Autorización de acceso de lectura a fuentes de datos externas
Los permisos necesarios para leer los datos de origen pueden variar de una fuente de datos a otra. Por ejemplo, para acceder a Google Ads, se necesitan permisos de lectura del ID de cliente de Google Ads. Del mismo modo, Google Play requiere acceso a los informes en Google Play Console. Para obtener más información sobre los permisos específicos de una fuente de datos, consulta las guías de transferencia de cada fuente de datos.
En función del tipo de identidad del propietario de la transferencia, se requiere un método de autorización diferente para obtener el token de acceso a los datos de origen.
Transferir la propiedad como cuenta de servicio
Cuando se usa una cuenta de servicio como propietario de la transferencia, los permisos necesarios se conceden automáticamente cuando se habilita la API BigQuery Data Transfer Service en tu proyecto. BigQuery Data Transfer Service usa un agente de servicio para obtener el token de acceso de la cuenta de servicio proporcionada por el usuario (propietario de la transferencia).
Cuando habilitas la API BigQuery Data Transfer Service, se crea un agente de servicio
para tu proyecto. El sistema también asigna al agente de servicio el rol Agente de BigQuery Data Transfer Service (roles/bigquerydatatransfer.serviceAgent
),
que incluye el permiso iam.serviceAccounts.getAccessToken
. Este permiso permite que el agente de servicio de BigQuery Data Transfer Service suplante la identidad de la cuenta de servicio del propietario de la transferencia para obtener el token de acceso.
Para obtener más información sobre el agente de servicio de BigQuery Data Transfer Service, consulta Agente de servicio. Para obtener más información sobre el uso de cuentas de servicio y la lista actualizada de fuentes de datos que admiten cuentas de servicio, consulta el artículo Usar cuentas de servicio.
Transferir la propiedad como cuenta de usuario
Si el propietario de la transferencia que crea la configuración de transferencia es una cuenta de usuario (no una cuenta de servicio), debes conceder manualmente permiso a BigQuery Data Transfer Service para que obtenga el token de acceso de la cuenta de usuario y acceda a los datos de origen en nombre del propietario de la transferencia. Puedes conceder la aprobación manual con la interfaz del cuadro de diálogo de OAuth.
Solo tiene que dar permiso a BigQuery Data Transfer Service la primera vez que cree una transferencia para una fuente de datos determinada. Debe volver a dar permiso cuando cree la primera transferencia de una región que no haya usado antes, aunque utilice la misma fuente de datos. Las transferencias de datos de canales de YouTube son la excepción: debes aprobar los permisos manualmente cada vez que crees una transferencia de datos de un canal de YouTube.
Si el nuevo propietario nunca ha creado una transferencia para la fuente de datos en esa región, también se requiere una aprobación manual para cambiar el propietario de la transferencia actualizando las credenciales.
En la siguiente captura de pantalla se muestra la interfaz del cuadro de diálogo de OAuth cuando creas una transferencia de Google Ads. En el cuadro de diálogo se muestran los permisos específicos de la fuente de datos que se van a conceder:
Para revocar los permisos que se han concedido, sigue estos pasos:
- Ve a la página de la cuenta de Google.
- Haz clic en BigQuery Data Transfer Service.
- Para revocar los permisos, haz clic en Quitar acceso.
Autorización para iniciar tareas de BigQuery
Cuando migras desde la mayoría de las fuentes de datos, excepto cuando lo haces mediante consultas programadas o copias de conjuntos de datos, BigQuery Data Transfer Service se basa en agentes de servicio para iniciar tareas de BigQuery en tu proyecto. El permiso necesario bigquery.job.create
se asigna automáticamente al agente de servicio cuando habilitas la API BigQuery Data Transfer Service en tu proyecto. Para obtener más información, consulta el artículo Habilitar BigQuery Data Transfer Service.
Cuando migras mediante consultas programadas o copias de conjuntos de datos, BigQuery Data Transfer Service usa las credenciales del propietario de la transferencia para iniciar los trabajos de BigQuery.
Autorización para ejecutar trabajos de BigQuery y escribir datos en el conjunto de datos de destino
Cuando migras desde la mayoría de las fuentes de datos, excepto cuando lo haces mediante consultas programadas o copias de conjuntos de datos, BigQuery Data Transfer Service se basa en el agente de servicio para escribir datos en el conjunto de datos de destino de BigQuery. El permiso necesario, roles/bigquery.dataEditor
, lo concede el servicio BigQuery Data Transfer Service al agente de servicio cuando creas la transferencia. Debe tener el permiso bigquery.datasets.update
en el conjunto de datos de destino para poder conceder el permiso.
Cuando migras mediante consultas programadas o copias de conjuntos de datos, BigQuery Data Transfer Service usa las credenciales del propietario de la transferencia para ejecutar las tareas de BigQuery y escribir los datos en el conjunto de datos de destino de BigQuery.
Solucionar errores de permisos
Si tienes problemas relacionados con la autorización o los permisos de tu transferencia, consulta Problemas de autorización y permisos.