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 que los analistas de datos consulten datos en Cloud SQL. Para conectarte a Cloud SQL, debes seguir estos pasos:
Antes de comenzar
- 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 las instancias de Cloud SQL, puedes agregar conectividad de IP pública sin una dirección autorizada. Esto hace que la instancia sea inaccesible desde la Internet pública, pero accesible para las consultas de 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 en una instancia de Cloud SQL nueva o existente y, luego, selecciona la casilla de verificación Ruta privada para los servicios de Google Cloud Este servicio usa una ruta de acceso directa interna en lugar de la dirección IP privada dentro de la nube privada virtual.
-
Para obtener los permisos que necesitas para crear una conexión de Cloud SQL, pídele a tu administrador que te otorgue el rol de IAM administrador de conexión de BigQuery (
roles/bigquery.connectionAdmin
) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea conexiones de Cloud SQL
Como práctica recomendada, usa conexiones para controlar las credenciales de la base de datos cuando te conectes a Cloud SQL. Las conexiones se encriptan y almacenan de forma segura en el servicio de conexión de BigQuery. Si las credenciales del usuario son válidas para otros datos en el origen, puedes volver a usar la conexión. Por ejemplo, es posible que puedas usar una conexión para consultar varias bases de datos que residan en la misma instancia de Cloud SQL.
Selecciona una de las opciones siguientes para crear una conexión de Cloud SQL:
Console
Ve a la página de BigQuery.
En el panel Explorador, haz clic en
Agregar.En el diálogo Agregar, haz clic en Conexiones a fuentes de datos externas:
En el diálogo Fuente de datos externa, ingresa la siguiente información:
- En Tipo de conexión, selecciona el tipo de fuente, por ejemplo, MySQL o Postgres.
- En ID de conexión, ingresa un identificador para el recurso de conexión. Se permiten letras, números y guiones bajos. Por ejemplo,
bq_sql_connection
- En Ubicación de los datos, selecciona una ubicación (o región) de BigQuery que sea compatible con la región de la fuente de datos externa.
- En Nombre descriptivo, ingresa un nombre fácil de usar para la conexión, como
My connection resource
(opcional). El nombre descriptivo puede ser cualquier valor que te ayude a identificar el recurso de conexión si necesitas modificarlo más adelante. - En Descripción, ingresa una descripción para este recurso de conexión (opcional).
- Opcional: Encriptación Si deseas usar una clave de encriptación administrada por el cliente (CMEK) para encriptar tus credenciales, selecciona Clave de encriptación administrada por el cliente (CMEK) y, luego, selecciona una clave administrada por el cliente. De lo contrario, tus credenciales están protegidas con la clave predeterminada que es propiedad de Google y está administrada por Google.
- Si eliges MySQL o Postgres de Cloud SQL para el tipo de conexión, haz lo siguiente:nombre de la conexión de Cloud SQL, ingresa el nombre completo de la instancia de Cloud SQL, por lo general, en el formato
project-id:location-id:instance-id
. Puedes encontrar el ID de la instancia en la página de detalles de la instancia de Cloud SQL que deseas consultar. - En Nombre de la base de datos (Database name), ingresa el nombre de la base de datos.
- En Nombre de usuario de la base de datos, ingresa el nombre de usuario para la base de datos.
En Contraseña de la base de datos, ingresa la contraseña para 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, copia el ID de la cuenta de servicio para usarlo en un paso siguiente.
bq
Ingresa el comando bq mk
y proporciona la marca de conexión --connection
. También se requieren las siguientes marcas:
--connection_type
--properties
--connection_credential
--project_id
--location
Las siguientes marcas son opcionales:
--display_name
El nombre descriptivo de la conexión.--description
Es una descripción de la conexión.
El connection_id
es un parámetro opcional que se puede agregar como el último argumento del comando que se usa para el almacenamiento de forma interna. Si no se proporciona un ID de conexión, se genera un ID único de forma automática.
El connection_id
pueden 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
Reemplaza lo siguiente:
TYPE
: Es el tipo de la fuente de datos externa.PROPERTIES
: Son los parámetros para 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
: Son los parámetrosusername
ypassword
.PROJECT_ID
: Es el ID de tu proyecto.LOCATION
: Es la región en la que se encuentra tu instancia de Cloud SQL.CONNECTION_ID
: Es el identificador de conexión.
Por ejemplo, con el siguiente comando, se crea un recurso de conexión nuevo llamado my_new_connection (nombre descriptivo: “Mi conexión nueva”) 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
Dentro de la API de conexión de BigQuery, puedes invocar CreateConnection
dentro de ConnectionService
para crear una instancia de conexión. Consulta la página de la biblioteca cliente para obtener más detalles.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Otorga acceso al agente de servicio
Un agente de servicio se crea automáticamente cuando creas la primera conexión a Cloud SQL dentro del proyecto. El nombre del agente de servicio es BigQuery Connection Service Agente. Para obtener el ID del agente de servicio, consulta los detalles de la 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 otorgar a la nueva conexión acceso de solo lectura a Cloud SQL 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 otorgar al agente de servicio asociado con la conexión el rol de IAM de cliente de Cloud SQL (roles/cloudsql.client
), que tiene estos permisos asignados.
Puedes omitir los siguientes pasos si el agente de servicio ya tiene los permisos necesarios.
Console
Ir a la página IAM y administración
Haz clic en
Otorgar acceso.Se abre el cuadro de diálogo Agregar principales.
En el campo Principales nuevas, ingresa el nombre del agente de servicio BigQuery Connection Service Agent o el ID del agente de servicio que se tomó de la información de conexión.
En el campo Selecciona un rol, elige Cloud SQL y, luego, selecciona Cliente de Cloud SQL.
Haz clic en Guardar.
gcloud
Usa el comando de gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:SERVICE_AGENT_ID --role=roles/cloudsql.client
Ingresa los siguientes valores:
PROJECT_ID
es el ID del proyecto de Google Cloud.SERVICE_AGENT_ID
: El ID del agente de servicio que se toma de la información de conexión.
Comparte conexiones con usuarios
Puedes otorgar los siguientes roles para permitir que los usuarios consulten datos y administren conexiones:
roles/bigquery.connectionUser
: Permite que los usuarios usen conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.roles/bigquery.connectionAdmin
: Permite que los usuarios administren conexiones.
Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.
Selecciona una de las opciones siguientes:
Console
Ve a la página de BigQuery.
Las conexiones se enumeran en tu proyecto, en un grupo llamado Conexiones externas.
En el panel Explorador, haz clic en el nombre de tu proyecto > Conexiones externas > conexión.
En el panel Detalles, haz clic en Compartir para compartir una conexión. A continuación, sigue estos pasos:
En el cuadro de diálogo Permisos de conexión, agrega o edita las principales para compartir la conexión con otros principales.
Haz clic en Guardar.
bq
No puedes compartir una conexión con la herramienta de línea de comandos de bq. Para compartir una conexión, usa la consola de Google Cloud o el método de la API de conexiones de BigQuery.
API
Consulta el método projects.locations.connections.setIAM
en la sección de referencia de la API de REST de las conexiones de BigQuery y proporciona una instancia del recurso policy
.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
¿Qué sigue?
- Obtén información sobre los diferentes tipos de conexión.
- Obtén más información sobre cómo administrar conexiones.
- Obtén más información sobre consultas federadas.
- Obtén información sobre cómo consultar datos de Cloud SQL.