Conecta un cliente de SQL Server con la imagen de Docker del proxy de Cloud SQL Auth

En esta página, se describe cómo conectar un cliente sqlcmd a tu instancia de Cloud SQL desde una máquina cliente que se ejecuta en una instancia de Linux o de Compute Engine Linux con la imagen de Docker del proxy de Cloud SQL.

Antes de comenzar

Debes haber:

Conecta un cliente sqlcmd mediante la imagen de Docker del proxy de Cloud SQL Auth

Para conectarlo mediante la imagen de Docker del proxy de Cloud SQL Auth, haz lo siguiente:

  1. Habilita Cloud SQL Admin API.

    Habilita la API

  2. Si usas una instancia de Compute Engine, prepárala de la siguiente manera:
    1. Muestra las propiedades de la instancia de Compute Engine:
      gcloud compute instances describe [GCE_INSTANCE_NAME]
    2. Verifica los alcances habilitados en la instancia.

      Para autenticar mediante permisos, se requieren los siguientes:

      • https://www.googleapis.com/auth/sqlservice.admin
      • https://www.googleapis.com/auth/devstorage.read_write

      De forma alternativa, el permiso https://www.googleapis.com/auth/cloud-platform habilita a todas las API de Google Cloud Platform.

      Si tu instancia de Compute Engine no tiene los alcances adecuados, puedes actualizarla para incluirlos. Para obtener más información, consulta la documentación de Compute Engine.

    3. Abre una conexión de terminal a la instancia con las instrucciones que aparecen en Conéctate a instancias de Linux.
  3. Si todavía no está instalado, instala el cliente sqlcms en la instancia de Compute Engine o en la máquina cliente.
  4. Si es necesario, instala el cliente Docker:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER
    

    Si usas una instancia de Compute Engine con container-optimized, esta ya tiene instalado el cliente Docker.

  5. Instala la imagen de Docker del proxy de Cloud SQL Auth desde Google Container Registry.
    docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.0
  6. Si ejecutas la imagen de Docker del proxy de Cloud SQL Auth en una máquina local (no una instancia de Compute Engine) o tu instancia de Compute Engine no tiene los alcances adecuados, crea una cuenta de servicio de Google Cloud Platform.
    1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

      Ir a Cuentas de servicio

    2. Selecciona el proyecto que contiene la instancia de Cloud SQL.
    3. Haga clic en Crear cuenta de servicio.
    4. En el campo Nombre de la cuenta de servicio, ingresa un nombre descriptivo para la cuenta de servicio.
    5. Cambia el ID de la cuenta de servicio a un valor único y reconocible y, luego, haz clic en Crear y continuar.
    6. Haz clic en el campo Seleccionar un rol y selecciona uno de los siguientes roles:
      • Cloud SQL > Cliente de Cloud SQL
      • Cloud SQL > Editor de Cloud SQL
      • Cloud SQL > Administrador de Cloud SQL
    7. Haz clic en Listo para terminar de crear la cuenta de servicio.
    8. Haz clic en el menú de acciones de tu nueva cuenta de servicio y, luego, selecciona Administrar claves.
    9. Haz clic en el menú desplegable Agregar clave y, luego, en Crear clave nueva.
    10. Confirma que el tipo de clave sea JSON y, luego, haz clic en Crear.

      El archivo de claves privadas se descargará en tu equipo. Puedes moverlo a otra ubicación. Protege el archivo de claves.

    Cuando inicias el proxy de Cloud SQL Auth debes proporcionar la ruta al archivo de claves como “PATH_TO_KEY_FILE”.

  7. Ve a la página Instancias de Cloud SQL en la consola de Google Cloud.

    Ir a Instancias de Cloud SQL

  8. Selecciona la instancia para abrir la página Detalles de la instancia y copia el nombre de la conexión de la instancia.

    Por ejemplo: myproject:us-central1:myinstance.

  9. Inicia el proxy de Cloud SQL Auth.

    Según tu lenguaje y entorno, puedes iniciar el proxy de Cloud SQL Auth con sockets TCP o Unix. Los sockets Unix no son compatibles con aplicaciones escritas en el lenguaje de programación Java o con el entorno de Windows.

    Sockets TCP

    docker run -d \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      -p 127.0.0.1:1433:1433 \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.0 \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>
    

    Si usas las credenciales proporcionadas por tu instancia de Compute Engine, no incluyas el parámetro --credentials-file y la línea -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    Especifica siempre el prefijo 127.0.0.1 en -p para que el proxy de Cloud SQL Auth no se exponga fuera del host local. El “0.0.0.0” en el parámetro de las instancias es necesario para que se pueda acceder al puerto desde afuera del contenedor de Docker.

    Sockets Unix

    docker run -d -v /cloudsql:/cloudsql \
      -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json \
      gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.0 //
      --unix-socket=/cloudsql \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>
    

    Si usas las credenciales proporcionadas por tu instancia de Compute Engine, no incluyas el parámetro --credentials-file y la línea -v <PATH_TO_KEY_FILE>:/path/to/service-account-key.json.

    Si usas una imagen optimizada para contenedores, usa un directorio que admita operaciones de escritura en lugar de /cloudsql, por ejemplo:

    -v /mnt/stateful_partition/cloudsql:/cloudsql

    Puedes especificar más de una instancia, separadas por comas. También puedes usar los metadatos de Compute Engine a fin de determinar de forma dinámica las instancias que se conectarán. Obtén más información sobre los parámetros del proxy.

  10. Inicia el cliente:

    La cadena de conexión que usas depende de si iniciaste el proxy de Cloud SQL Auth con un socket TCP o Docker.

    Sockets de TCP

    1. Inicia el cliente sqlcmd:
      sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD
      

      Cuando te conectas con los sockets TCP, se accede al proxy de Cloud SQL Auth a través de 127.0.0.1.

    2. Si se te solicita, ingresa la contraseña.
    3. Se mostrará el mensaje de sqlcmd.
¿Necesitas ayuda? Para solucionar problemas del proxy, consulta Solución de problemas de conexión del proxy de Cloud SQL Auth o nuestra página Asistencia de Cloud SQL.

Mantén actualizada la imagen de Docker del proxy de Cloud SQL Auth

La imagen de Docker del proxy de Cloud SQL Auth se basa en una versión específica del proxy de Cloud SQL Auth. Cuando esté disponible una versión nueva del proxy de autenticación de Cloud SQL, extrae la versión nueva de la imagen de Docker del proxy de autenticación de Cloud SQL para mantener actualizado el entorno. Puedes ver la versión actual del proxy de Cloud SQL Auth si consultas la página de versiones de GitHub del proxy de Cloud SQL Auth. Las próximas versiones del proxy se especificarán en el foro de anuncios de Cloud SQL de los Grupos de Google.

¿Qué sigue?