Conectar el cliente de SQL Server mediante la imagen Docker del proxy de autenticación de Cloud SQL

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

Antes de empezar

Debes contar con estos elementos:

Conectar un cliente sqlcmd mediante la imagen Docker del proxy de autenticación de Cloud SQL

Para conectarte mediante la imagen Docker del proxy de autenticación de Cloud SQL, haz lo siguiente:

  1. Enable the Cloud SQL Admin API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

      La autenticación mediante permisos requiere los dos siguientes:

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

      También puedes usar el permiso https://www.googleapis.com/auth/cloud-platform para habilitar todas las APIs de Google Cloud Platform.

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

    3. Abre una conexión de terminal a la instancia como se establece en las instrucciones sobre cómo conectarse a instancias de Linux.
  3. Instala el cliente sqlcmd en la instancia de Compute Engine o en la máquina cliente si aún no lo has hecho.
  4. Si resulta necesario, instala el cliente Docker:
    curl https://get.docker.com | sh
    sudo usermod -aG docker $USER

    Si estás usando una instancia de Compute Engine optimizada para contenedores, ya tendrás instalado el cliente Docker.

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

      Ir a Cuentas de servicio

    2. Selecciona el proyecto que contiene tu instancia de Cloud SQL.
    3. Haz clic en Crear cuenta de servicio.
    4. En el campo Nombre de cuenta de servicio, escribe un nombre descriptivo para la cuenta de servicio.
    5. Cambia el ID de cuenta de servicio por un valor único y reconocible y, a continuación, haz clic en Crear y continuar.
    6. Haz clic en el campo Selecciona un rol y elige uno de los siguientes:
      • Cloud SQL > Cliente de Cloud SQL
      • Cloud SQL > Editor de Cloud SQL
      • Cloud SQL > Administrador de Cloud SQL
    7. Haz clic en Hecho para terminar de crear la cuenta de servicio.
    8. Haz clic en el menú de acciones de tu nueva cuenta de servicio y, a continuación, selecciona Gestionar claves.
    9. Haz clic en el menú desplegable Añadir clave y, a continuación, en Crear clave.
    10. Confirma que el tipo de clave es JSON y, a continuación, haz clic en Crear.

      El archivo de clave privada se descarga en tu máquina. Puedes moverlo a otra ubicación. Debes proteger el archivo de clave.

    Cuando inicias el proxy de autenticación de Cloud SQL, proporcionas la ruta al archivo de claves como "PATH_TO_KEY_FILE".

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

    Ve a Instancias de Cloud SQL.

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

    Por ejemplo: myproject:us-central1:myinstance.

  9. Inicia el proxy de autenticación de Cloud SQL.

    En función del lenguaje y del entorno, puedes iniciar el proxy de autenticación de Cloud SQL mediante sockets TCP o sockets Unix. Los sockets Unix no son compatibles con las aplicaciones escritas en lenguaje de programación Java o pensadas para el entorno 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.18.2 \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME>

    Si utiliza las credenciales proporcionadas por su instancia de Compute Engine, no incluya el parámetro --credentials-file ni 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 autenticación de Cloud SQL no se exponga fuera del host local. En el parámetro de instancias se requiere el valor "0.0.0.0" para que sea posible acceder al puerto desde fuera del contenedor 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.18.2 //
      --unix-socket=/cloudsql \
      --credentials-file /path/to/service-account-key.json <INSTANCE_CONNECTION_NAME> 

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

    Si usas una imagen optimizada para contenedores, utiliza un directorio en el que se pueda escribir en lugar de /cloudsql. Por ejemplo:

    -v /mnt/stateful_partition/cloudsql:/cloudsql

    Puedes especificar más de una instancia si las separas por comas. También puedes usar los metadatos de Compute Engine para determinar de forma dinámica las instancias a las que conectarte. Más información sobre los parámetros de proxy

  10. Inicia el cliente:

    La cadena de conexión que uses dependerá de si has iniciado el proxy de autenticación de Cloud SQL mediante un socket TCP o Docker.

    Sockets TCP

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

      Cuando te conectas mediante sockets TCP, se accede al proxy de autenticación de Cloud SQL a través de 127.0.0.1.

    2. Si se te solicita, introduce la contraseña.
    3. Aparecerá el símbolo del sistema sqlcmd.
¿Necesitas ayuda? Para obtener ayuda para solucionar problemas con el proxy, consulta el artículo Solucionar problemas de conexiones del proxy de autenticación de Cloud SQL o visita nuestra página de asistencia de Cloud SQL.

Mantener actualizada la imagen Docker del proxy de autenticación de Cloud SQL

La imagen de Docker del proxy de autenticación de Cloud SQL se basa en una versión específica del proxy de autenticación de Cloud SQL. Cuando haya una nueva versión del proxy de autenticación de Cloud SQL, extrae la nueva versión de la imagen Docker del proxy de autenticación de Cloud SQL para mantener tu entorno actualizado. Puedes consultar la versión actual del proxy de autenticación de Cloud SQL en la página de lanzamientos de GitHub del proxy de autenticación de Cloud SQL. Las futuras versiones del proxy también se indicarán en el foro Anuncios de Cloud SQL de Grupos de Google.

Siguientes pasos