Conectar a Cloud SQL
Como administrador de BigQuery, puedes crear una conexión para acceder a los datos de Cloud SQL. Esta conexión permite a los analistas de datos consultar datos en Cloud SQL. Para conectarte a Cloud SQL, debes seguir estos pasos:
Antes de empezar
- Selecciona el proyecto que contiene la base de datos de Cloud SQL.
- Habilita la API de conexión de BigQuery.
- Asegúrate de que la instancia de Cloud SQL tenga una conexión de IP pública o una conexión privada:
Para proteger tus instancias de Cloud SQL, puedes añadir conectividad de IP pública sin una dirección autorizada. De esta forma, la instancia no se puede acceder desde Internet, pero sí se pueden enviar consultas desde BigQuery.
Para permitir que BigQuery acceda a los datos de Cloud SQL a través de una conexión privada, configura la conectividad de IP privada para una instancia de Cloud SQL nueva o ya creada y, a continuación, selecciona la casilla Ruta privada para los servicios de Google Cloud. Este servicio usa una ruta directa interna en lugar de la dirección IP privada de la nube privada virtual.
-
Para obtener los permisos que necesitas para crear una conexión de Cloud SQL, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de conexiones de BigQuery (
roles/bigquery.connectionAdmin
) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear conexiones de Cloud SQL
Como práctica recomendada, utilice conexiones para gestionar las credenciales de la base de datos cuando se conecte a Cloud SQL. Las conexiones se cifran y se almacenan de forma segura en el servicio de conexión de BigQuery. Si las credenciales de usuario son válidas para otros datos de la fuente, puedes reutilizar la conexión. Por ejemplo, puedes usar una conexión para consultar varias bases de datos que residan en la misma instancia de Cloud SQL.
Seleccione una de las siguientes opciones para crear una conexión de Cloud SQL:
Consola
Ve a la página BigQuery.
En el panel Explorador, haz clic en
Añadir.Se abrirá el cuadro de diálogo Añadir datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Bases de datos.
También puede introducir
mysql
en el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haga clic en MySQL.
Haga clic en la tarjeta de solución Cloud SQL (MySQL): federación de BigQuery.
En el cuadro de diálogo Fuente de datos externa, introduce la siguiente información:
- En Tipo de conexión, selecciona el tipo de fuente (por ejemplo, MySQL o PostgreSQL).
- En Connection ID (ID de conexión), introduce un identificador para el recurso de conexión. Se admiten letras, números y guiones bajos. Por ejemplo,
bq_sql_connection
. - En Ubicación de los datos, seleccione una ubicación (o región) de BigQuery que sea compatible con la región de su fuente de datos externa.
- Opcional: En Nombre descriptivo, introduce un nombre descriptivo para la conexión, como
My connection resource
. El nombre descriptivo puede ser cualquier valor que te ayude a identificar el recurso de conexión si necesitas modificarlo más adelante. - Opcional: En Descripción, escribe una descripción de este recurso de conexión.
- Opcional: Cifrado. Si quieres usar una clave de cifrado gestionada por el cliente (CMEK) para cifrar tus credenciales, selecciona Clave de cifrado gestionada por el cliente (CMEK) y, a continuación, elige una clave gestionada por el cliente. De lo contrario, tus credenciales estarán protegidas por el valor predeterminado Google-owned and Google-managed encryption key.
- Si has elegido Cloud SQL MySQL o Postgres como tipo de conexión, introduce el nombre de conexión de Cloud SQL, que es el nombre completo de la instancia de Cloud SQL, normalmente con el formato
project-id:location-id:instance-id
. Puedes encontrar el ID de instancia en la página de detalles de la instancia de Cloud SQL que quieras consultar. - En Database name (Nombre de la base de datos), introduce el nombre de la base de datos.
- En Nombre de usuario de la base de datos, introduce el nombre de usuario de la base de datos.
En Contraseña de la base de datos, introduce la contraseña de la base de datos.
- Opcional: Para ver la contraseña, haz clic en Mostrar contraseña.
Haga clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información de conexión, copie el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
Introduce el comando bq mk
y proporciona la marca de conexión:
--connection
. También se necesitan las siguientes marcas:
--connection_type
--properties
--connection_credential
--project_id
--location
Las siguientes marcas son opcionales:
--display_name
Nombre descriptivo de la conexión.--description
Una descripción de la conexión.
connection_id
es un parámetro opcional que se puede añadir como último argumento del comando y que se usa para el almacenamiento interno. Si no se proporciona un ID de conexión, se genera automáticamente un ID único.
El connection_id
puede contener letras, números y guiones bajos.
bq mk --connection --display_name='friendly name' --connection_type=TYPE \
--properties=PROPERTIES --connection_credential=CREDENTIALS \
--project_id=PROJECT_ID --location=LOCATION \
CONNECTION_ID
Haz los cambios siguientes:
TYPE
: el tipo de fuente de datos externa.PROPERTIES
: los parámetros de la conexión creada en formato JSON. Por ejemplo:--properties='{"param":"param_value"}'
. Para crear un recurso de conexión, debes proporcionar los parámetrosinstanceID
,database
ytype
.CREDENTIALS
: los parámetrosusername
ypassword
.PROJECT_ID
: tu ID de proyecto.LOCATION
: la región en la que se encuentra tu instancia de Cloud SQL o la multirregión correspondiente.CONNECTION_ID
: el identificador de la conexión.
Por ejemplo, el siguiente comando crea un recurso de conexión llamado my_new_connection (nombre descriptivo: "My new connection") en un proyecto con el ID federation-test
.
bq mk --connection --display_name='friendly name' --connection_type='CLOUD_SQL' \
--properties='{"instanceId":"federation-test:us-central1:mytestsql","database":"mydatabase","type":"MYSQL"}' \
--connection_credential='{"username":"myusername", "password":"mypassword"}' \
--project_id=federation-test --location=us my_connection_id
API
En la API de conexión de BigQuery, puedes invocar CreateConnection
en ConnectionService
para crear una instancia de conexión. Consulta la página de la biblioteca de cliente para obtener más información.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Conceder acceso al agente de servicio
Se crea automáticamente un agente de servicio cuando creas la primera conexión a Cloud SQL en el proyecto. El nombre del agente de servicio es BigQuery Connection Service Agent. Para obtener el ID del agente de servicio, consulta los detalles de tu conexión. El ID del agente de servicio tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
.
Para conectarte a Cloud SQL, debes dar acceso de solo lectura a la nueva conexión para que BigQuery pueda acceder a los archivos en nombre de los usuarios. El agente de servicio debe tener los siguientes permisos:
cloudsql.instances.connect
cloudsql.instances.get
Puedes asignar el rol de gestión de identidades y accesos Cliente de Cloud SQL (roles/cloudsql.client
) a la cuenta de servicio asociada a la conexión, que tiene asignados estos permisos.
Puedes saltarte los pasos siguientes si el agente de asistencia ya tiene los permisos necesarios.
Consola
Ve a la página IAM y administración.
Haz clic en
Conceder acceso.Se abrirá el cuadro de diálogo Añadir principales.
En el campo Nuevos principales, introduzca el nombre del agente de servicio Agente del servicio de conexión de BigQuery o el ID del agente de servicio obtenido de la información de conexión.
En el campo Selecciona un rol, selecciona Cloud SQL y, a continuación, Cliente de Cloud SQL.
Haz clic en Guardar.
gcloud
Usa el comando
gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SERVICE_AGENT_ID --role=roles/cloudsql.client
Proporciona los siguientes valores:
PROJECT_ID
: tu ID de proyecto Google Cloud .SERVICE_AGENT_ID
: ID del agente de servicio obtenido de la información de conexión.
Compartir conexiones con usuarios
Puede conceder los siguientes roles para permitir que los usuarios consulten datos y gestionen conexiones:
roles/bigquery.connectionUser
: permite a los usuarios usar conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.roles/bigquery.connectionAdmin
: permite a los usuarios gestionar las conexiones.
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Selecciona una de las opciones siguientes:
Consola
Ve a la página BigQuery.
Las conexiones se muestran en tu proyecto, en un grupo llamado Conexiones externas.
En el panel Explorador, haga clic en el nombre del proyecto > Conexiones externas > conexión.
En el panel Detalles, haz clic en Compartir para compartir una conexión. A continuación, sigue estas instrucciones:
En el cuadro de diálogo Permisos de conexión, comparte la conexión con otras entidades principales añadiendo o editando entidades principales.
Haz clic en Guardar.
bq
No puedes compartir una conexión con la herramienta de línea de comandos bq. Para compartir una conexión, usa la Google Cloud consola o el método de la API Connections de BigQuery.
API
Usa el método projects.locations.connections.setIAM
de la sección de referencia de la API REST Connections de BigQuery y proporciona una instancia del recurso policy
.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Siguientes pasos
- Consulta información sobre los diferentes tipos de conexión.
- Consulta cómo gestionar las conexiones.
- Consulta información sobre las consultas federadas.
- Consulta cómo consultar datos de Cloud SQL.