GoogleCloudPlatform / cloudsql-proxy

CIReferencia Go

El proxy de autenticación SQL en la nube es un binario que proporciona autorización y cifrado basados en IAM cuando se conecta a una instancia SQL en la nube.

Consulte la página Descripción general de la conexión para obtener más información sobre la conexión a una instancia de SQL en la nube, o la página Acerca del proxy para obtener más información sobre cómo funciona el proxy SQL en la nube.

Nota: El Proxy no puede proporcionar una ruta de red a una instancia SQL en la nube si no está ya presente (por ejemplo, el proxy no puede acceder a una VPC si no tiene acceso a ella).

Instalación

Para Linux de 64 bits, ejecutar:

wget https://storage.googleapis.com/cloudsql-proxy/v1.19.2/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxychmod +x cloud_sql_proxy

Versiones para sistemas operativos y arquitecturas adicionales y se pueden encontrar en la página releasespage.

Para ver distribuciones alternativas, consulte a continuación la sección de terceros.

Imágenes de contenedor

Hay versiones en contenedores del proxy disponibles en los siguientes repositorios de registro de contenedores en la nube de Google:

  • gcr.io/cloudsql-docker/gce-proxy
  • us.gcr.io/cloudsql-docker/gce-proxy
  • eu.gcr.io/cloudsql-docker/gce-proxy
  • asia.gcr.io/cloudsql-docker/gce-proxy

Cada imagen está etiquetada con el proxy asociado versión. Actualmente se admiten las siguientes etiquetas:

  • $VERSION – imagen predeterminada (recomendada)
  • $VERSION-alpine – utiliza alpine:3como imagen base (solo compatible desde la versión 1.17 en adelante)
  • $VERSION-buster – utiliza debian:bustercomo imagen base (solo compatible desde la versión 1.17 en adelante)

Recomendamos usar la última versión del proxy y actualizar la versión regularmente. Sin embargo, también recomendamos fijar a una etiqueta específica y evitar la etiqueta más reciente. Nota: la versión etiquetada es solo la del proxy. Los cambios en las imágenes base pueden romper configuraciones específicas, incluso en incrementos de versiones no principales. Como tal, es una práctica recomendada probar los cambios antes de la implementación y usar retrocesos automáticos para revertir posibles fallos.

Instalar desde el origen

Para instalar desde el origen, asegúrese de tener instalada la versión más reciente de Goinstall.

Luego, simplemente ejecute:

go get github.com/GoogleCloudPlatform/cloudsql-proxy/cmd/cloud_sql_proxy

El cloud_sql_proxy se colocará en $GOPATH/bin después de que se complete go get.

Uso

Todas las siguientes invocaciones asumen que las credenciales válidas están presentes en el entorno. Los siguientes ejemplos hacen referencia a un INSTANCE_CONNECTION_NAME, que toma la forma: myproject:myregion:myinstance. Para encontrarINSTANCE_CONNECTION_NAME, ejecute gcloud sql instances describe <INSTANCE_NAME>, donde INSTANCE_NAME es el nombre de la instancia de la base de datos.Ejemplo de socket TCP

# Starts the proxy listening on 127.0.0.1:5432cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432
# Starts the proxy listening on on port 5432 on *all* interfacescloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:5432

Ejemplo de socket Unix

# The proxy will mount a Unix domain socket at /cloudsql/<INSTANCE_CONNECTION_NAME># Note: The directory specified by `-dir` must exist.cloud_sql_proxy -dir=/cloudsql -instances=<INSTANCE_CONNECTION_NAME>

Ejemplo de IP privada

cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:5432 -ip_address_types=PRIVATE

Para conectarse mediante IP privada, debe tener acceso a través de la VPC de su proyecto. Para obtener más información, consulte Requisitos de IP privada.

Credenciales

El proxy SQL en la nube utiliza una cuenta de IAM en la nube para autorizar conexiones con la instancia SQL de aCloud. El proxy obtiene las credenciales de estas cuentas en el siguiente orden:

  1. La marca -credential_file
  2. La marca -token
  3. La clave de cuenta de servicio en la ruta de acceso almacenada en la variable de entornoGOOGLE_APPLICATION_CREDENTIALS.
  4. Las credenciales de usuario de gcloud (establecidas desde gcloud auth login)
  5. Las credenciales predeterminadas de la aplicación

Nota: Cualquier cuenta que se conecte a una base de datos SQL en la nube necesitará uno de los siguientes roles de IAM:

  • Cliente SQL en la nube (preferido)
  • Editor SQL en la nube
  • Administrador SQL en la nube

O uno puede asignar manualmente los siguientes permisos de IAM:

  • cloudsql.instances.connect
  • cloudsql.instances.get

Consulte Roles y permisos en Cloud SQL para obtener más información.

Cuando el proxy se autentica en la cuenta de servicio predeterminada de la máquina virtual de Compute Engine, la máquina virtual debe tener al menos el ámbito de la API sqlservice.admin (es decir,”https://www.googleapis.com/auth/sqlservice.admin”) y el proyecto asociado debe tener habilitada la API de administración SQL. La cuenta de servicio predeterminada también debe tener privilegios mínimos de escritor o editor para cualquier proyecto de instancias SQL de destino.

Indicadores de CLI

El proxy de autenticación SQL en la nube toma algunos argumentos para configurar qué instancias se conectarán y el comportamiento de conexión. Para obtener una lista completa de indicadores soportados por el proxy,use cloud_sql_proxy -help.

Indicadores de autenticación

-credential_file

Especifica la ruta de acceso a una clave de cuenta de servicio JSON que los proxys utilizan para autorizar o autenticar conexiones.

-token

Cuando se establece, el proxy utiliza este token Portador para la autorización.

-enable_iam_login

Habilita al proxy para usar la autenticación de base de datos SQL IAM en la nube. Esto hará que el proxy use credenciales de cuenta IAM para la autenticación de usuarios de bases de datos. Para detalles, consulte Información general de autenticación de base de datos SQL IAM en la nube

Indicadores de conexión

-instances="project1:region:instance1,project3:region:instance1"

Una lista de instancias separadas por comas para abrir dentro de -dir. También admite la exposición de un puerto TCP y el cambio de nombre de los Sockets de dominio Unix predeterminados; consulte ejemplos a continuación. Se puede proporcionar la misma lista a través de la variable de entorno de INSTANCIAS, en caso de que se proporcionen ambas, el proxy usará el indicador de línea de comandos.

Ejemplo

Usando sockets TCP:

./cloud_sql_proxy -instances=my-project:us-central1:sql-inst=tcp:3306 &mysql -u root -h 127.0.0.1

Uso de sockets Unix:

./cloud_sql_proxy -dir=/cloudsql -instances=my-project:us-central1:sql-inst &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Para especificar un nombre de socket Unix personalizado:

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:custom_socket_name &mysql -u root -S /cloudsql/custom_socket_name

Para especificar una ubicación personalizada para un socket Unix (anulaciones -dir):

./cloud_sql_proxy -dir=/cloudsql \ -instances=my-project:us-central1:sql-inst=unix:/my/custom/sql-socket &mysql -u root -S /my/custom/sql-socket

-fuse

Requiere acceso a /dev/fuse, así como al binario fusermount. Un indicador-fuse_tmp opcional puede especificar dónde colocar los archivos temporales. La direcciónindicada por -dir está montada.

Ejemplo

Al usar -fuse, no es necesario especificar nombres de instancia con anticipación:

./cloud_sql_proxy -dir=/cloudsql -fuse &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

-instances_metadata=metadata_key

Utilizable solo en ECM. Se recopilará la clave de metadatos de GCE proporcionada para obtener una lista de instancias que se abrirán en -dir. La clave de metadatos es relativade computeMetadata/v1/. El formato del valor es el mismo que el de la bandera “instances”. Se utiliza una estrategia de sondeo suspendido, lo que significa que los cambios en el valor de themetadata se reflejarán en -dir incluso mientras se ejecuta el proxy.Cuando se elimina una instancia de la lista, el socket correspondiente también se eliminará de -dir ( a menos que también se haya especificado en -instances), pero ninguna conexión existente a esta instancia SE terminará.

Ejemplo

./cloud_sql_proxy -dir=/cloudsql \ -instances_metadata instance/attributes/<custom-metadata-key> &mysql -u root -S /cloudsql/my-project:us-central1:sql-inst

Nota: -instances y -instances_metadata se pueden usar al mismo tiempo, pero no son compatibles con la bandera -fuse.

-max_connections

Si se proporciona, el número máximo de conexiones a establecer antes de rechazar nuevas conexiones. El valor predeterminado es 0 (sin límite).

Banderas adicionales

-ip_address_types=PUBLIC,PRIVATE

Lista delimitada por comas de los tipos de IP preferidos para conectarse a una instancia. Por ejemplo, establecer esto en PRIVADO obligará al proxy a conectarse a instancias utilizando la IP privada asociada a una instancia. Valores predeterminados a PUBLIC,PRIVATE

-term_timeout=30s

Cuánto tiempo esperar para que se cierren las conexiones antes de apagar el proxy.El valor predeterminado es 0.

-skip_failed_instance_config

Establecer este indicador evitará que el proxy finalice si se produce algún error durante la configuración de la instancia. Tenga en cuenta que esto significa que algunas instancias pueden fallar al configurarse correctamente, mientras que otras pueden funcionar si el proxy se reinicia.

-log_debug_stdout=true

Esto es para registrar la salida sin errores en salida estándar en lugar de error estándar. Por ejemplo, si no desea que los mensajes relacionados con la conexión se registren como errores, establezca esta bandera en true. El valor predeterminado es false.

-structured_logs

Escribe todos los resultados de registro como JSON con las siguientes claves: level, ts,caller, msg. Por ejemplo, el mensaje de inicio se ve como:

{"level":"info","ts":1616014011.8132386,"caller":"cloud_sql_proxy/cloud_sql_proxy.go:510","msg":"Usinggcloud's active project: "}

Ejecutar como un Sidecar Kubernetes

Vea el ejemplo aquí, así como Conectarse desde el motor GoogleKubernetes.

Documentación de referencia

  • SQL en la nube
  • Documentación de proxy de autenticación SQL en la nube
  • Inicio rápido de proxy de autenticación SQL en la nube
  • Ejemplos de código SQL en la nube
  • Documentación de paquete de proxy de autenticación SQL en la nube

Las contribuciones son bienvenidas. Por favor, consulte el documento de CONTRIBUCIÓN para obtener más detalles.

Tenga en cuenta que este proyecto se lanza con un código de Colaborador de Conduct.By al participar en este proyecto, usted acepta cumplir con sus términos. Consulte el Código de Conducta de los contribuyentes para obtener más información.

Terceros

ADVERTENCIA: Google no admite oficialmente estas distribuciones.

Homebrew

Aquí hay una fórmula Homebrew para el proxy de autenticación SQL en la nube.

Servicio de clúster de Kubernetes con Helm

Siga estas instrucciones.

Este gráfico crea una Implementación y un Servicio, pero recomendamos implementar elproxy como contenedor de sidecar en sus pods.

Envoltorio de proxy. Net (Paquete Nuget)

Instale a través de Nuget, siga estas instrucciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.