Esta página resume el proxy de autenticación de Cloud SQL y describe cómo usarlo para establecer conexiones autorizadas, cifradas y seguras con sus instancias.
Para obtener instrucciones paso a paso sobre el uso del proxy de autenticación de Cloud SQL, siga el enlace correspondiente a su entorno:
- Inicio rápido para usar el proxy de autenticación de Cloud SQL
- Cómo conectarse usando el proxy de autenticación de Cloud SQL
- Cómo conectarse usando el proxy de autenticación de Cloud SQL desde GKE
No es necesario utilizar el proxy de autenticación de Cloud SQL ni configurar SSL para conectarse a Cloud SQL desde el entorno estándar de App Engine o el entorno flexible de App Engine .
Pruébelo usted mismo
Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de Cloud SQL en situaciones reales. Los nuevos clientes también reciben $300 en créditos gratuitos para ejecutar, probar e implementar cargas de trabajo.
Pruebe Cloud SQL gratisBeneficios del proxy de autenticación de Cloud SQL
Cloud SQL Auth Proxy es un conector de Cloud SQL que proporciona acceso seguro a sus instancias sin necesidad de redes autorizadas ni de configurar SSL .
El proxy de autenticación de Cloud SQL y otros conectores de Cloud SQL tienen los siguientes beneficios:
- Conexiones seguras: El proxy de autenticación de Cloud SQL cifra automáticamente el tráfico hacia y desde la base de datos mediante TLS 1.3, con la selección de cifrado determinada por las reglas de Go . Los certificados SSL se utilizan para verificar las identidades del cliente y del servidor, y son independientes de los protocolos de la base de datos; no necesitará administrar certificados SSL.
- Autorización de conexión más sencilla: El proxy de autenticación de Cloud SQL utiliza permisos de IAM para controlar quién y qué puede conectarse a sus instancias de Cloud SQL. De esta forma, gestiona la autenticación con Cloud SQL, eliminando la necesidad de proporcionar direcciones IP estáticas.
- Autenticación de la base de datos IAM . Opcionalmente, el proxy de autenticación de Cloud SQL admite la actualización automática de los tokens de acceso de OAuth 2.0. Para obtener información sobre esta funcionalidad, consulte Autenticación de la base de datos IAM de Cloud SQL .
El proxy de autenticación de Cloud SQL no proporciona una nueva ruta de conectividad; se basa en la conectividad IP existente. Para conectarse a una instancia de Cloud SQL mediante una IP privada , el proxy de autenticación de Cloud SQL debe estar en un recurso con acceso a la misma red de VPC que la instancia.
Limitaciones
No puedes usar el proxy de autenticación de Cloud SQL si usas acceso contextual y autenticación de base de datos IAM. Al intentar iniciar sesión en la instancia, la autenticación IAM falla.
Cómo funciona el proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL funciona con un cliente local ejecutándose en el entorno local. Su aplicación se comunica con el proxy de autenticación de Cloud SQL mediante el protocolo de base de datos estándar que utiliza su base de datos.
El proxy de autenticación de Cloud SQL utiliza un túnel seguro para comunicarse con el proceso asociado que se ejecuta en el servidor. Cada conexión establecida a través del proxy de autenticación de Cloud SQL crea una conexión con la instancia de Cloud SQL.
Cuando una aplicación se conecta al proxy de autenticación de Cloud SQL, comprueba si existe una conexión entre ella y la instancia de Cloud SQL de destino. Si no existe, llama a las API de administración de Cloud SQL para obtener un certificado SSL efímero y lo utiliza para conectarse a Cloud SQL. Los certificados SSL efímeros caducan en aproximadamente una hora. El proxy de autenticación de Cloud SQL actualiza estos certificados antes de que caduquen.
El proxy de autenticación de Cloud SQL no proporciona agrupación de conexiones , pero se puede combinar con otras agrupaciones de conexiones para aumentar la eficiencia.
El siguiente diagrama muestra cómo el proxy de autenticación de Cloud SQL se conecta a Cloud SQL:
Requisitos para usar el proxy de autenticación de Cloud SQL
Para utilizar el proxy de autenticación de Cloud SQL, debe cumplir los siguientes requisitos:
- La API de administración de Cloud SQL debe estar habilitada.
- Debe proporcionar al proxy de autenticación de Cloud SQL Google Cloud credenciales de autenticación .
- Debe proporcionar al proxy de autenticación de Cloud SQL una cuenta de usuario y una contraseña de base de datos válidas.
La instancia debe tener una dirección IPv4 pública o estar configurada para utilizar una IP privada .
La dirección IP pública no necesita ser accesible para ninguna dirección externa (no necesita ser agregada como una dirección de red autorizada).
Si la instancia de Cloud SQL a la que se está conectando usa una autoridad de certificación (CA) compartida para su configuración serverCaMode
, entonces, en el lado del cliente, debe usar Cloud SQL Auth Proxy versión 2.13.0 o posterior.
Si la instancia de Cloud SQL a la que se está conectando usa una CA administrada por el cliente para su configuración serverCaMode
, entonces, en el lado del cliente, debe usar Cloud SQL Auth Proxy versión 2.14.3 o posterior.
Cuando una instancia utiliza una CA administrada por el cliente como modo de CA de servidor, puede configurarla con un nombre DNS personalizado . Este nombre se proporciona en el campo de nombre alternativo del sujeto (SAN) personalizado del certificado de servidor.
Después de configurar un nombre DNS personalizado para la instancia, puede conectarse a la instancia desde los conectores de idioma de Cloud SQL usando el nombre DNS.
Descargue e instale el proxy de autenticación de Cloud SQL
Linux de 64 bits
- Descargar el proxy de autenticación de Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.amd64
- Hacer que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
Linux de 32 bits
- Descargar el proxy de autenticación de Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.linux.386
- Si no se encuentra el comando
curl
, ejecutesudo apt install curl
y repita el comando de descarga. - Hacer que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
macOS de 64 bits
- Descargar el proxy de autenticación de Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.amd64
- Hacer que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
Mac M1
- Descargar el proxy de autenticación de Cloud SQL:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.darwin.arm64
- Hacer que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
Windows de 64 bits
Haga clic con el botón derecho en https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x64.exe y seleccione "Guardar enlace como" para descargar el proxy de autenticación de Cloud SQL. Cambie el nombre del archivo acloud-sql-proxy.exe
. Windows de 32 bits
Haga clic con el botón derecho en https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.16.0/cloud-sql-proxy.x86.exe y seleccione "Guardar enlace como" para descargar el proxy de autenticación de Cloud SQL. Cambie el nombre del archivo acloud-sql-proxy.exe
. Imagen de Docker del proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL tiene diferentes imágenes de contenedor, como distroless
, alpine
y buster
. La imagen de contenedor predeterminada del proxy de autenticación de Cloud SQL usa distroless
, que no contiene shell. Si necesita un shell o herramientas relacionadas, descargue una imagen basada en alpine
o buster
. Para obtener más información, consulte Imágenes de contenedor del proxy de autenticación de Cloud SQL .
Puede extraer la última imagen a su máquina local usando Docker usando el siguiente comando:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.16.0
Otros sistemas operativos
Para otros sistemas operativos no incluidos aquí, puedes compilar el proxy de autenticación de Cloud SQL desde la fuente .Opciones de inicio del proxy de autenticación de Cloud SQL
Cuando inicia el proxy de autenticación de Cloud SQL, le proporciona la siguiente información:
- ¿A qué instancias de Cloud SQL se deben establecer conexiones?
- Dónde escuchará los datos provenientes de su aplicación para ser enviados a Cloud SQL
- Dónde encontrará las credenciales que utilizará para autenticar su aplicación en Cloud SQL
- Si es necesario, qué tipo de dirección IP utilizar.
Las opciones de inicio del proxy de autenticación de Cloud SQL que proporcione determinan si escuchará en un puerto TCP o en un socket Unix. Si escucha en un socket Unix, lo crea en la ubicación que elija; normalmente, el directorio /cloudsql/. Para TCP, el proxy de autenticación de Cloud SQL escucha en localhost
de forma predeterminada.
Ejecute el ejecutable cloud-sql-proxy
con el argumento --help
para ver la lista completa de opciones de inicio.
Puede instalar el proxy de autenticación de Cloud SQL en cualquier lugar de su entorno local. La ubicación de los binarios del proxy de autenticación de Cloud SQL no afecta el lugar donde recibe los datos de su aplicación.
Para obtener más información sobre cómo iniciar el proxy de autenticación de Cloud SQL, consulte Iniciar el proxy de autenticación de Cloud SQL .
Utilice una cuenta de servicio para la autenticación
El proxy de autenticación de Cloud SQL requiere autenticación como una identidad IAM de Cloud SQL para autorizar sus conexiones a una instancia de Cloud SQL.
La ventaja de usar una cuenta de servicio para este propósito es que permite crear un archivo de credenciales específico para el proxy de autenticación de Cloud SQL, el cual está vinculado explícita y permanentemente a él mientras esté en ejecución. Por este motivo, se recomienda usar una cuenta de servicio para instancias de producción que no se ejecutan en una instancia de Compute Engine.
El archivo de credenciales se puede duplicar en una imagen del sistema si necesita invocar el proxy de autenticación de Cloud SQL desde varias máquinas.
Para usar este método, debe crear y administrar el archivo de credenciales. Solo los usuarios con el permiso resourcemanager.projects.setIamPolicy
(como los propietarios de proyectos) pueden crear la cuenta de servicio. Si suGoogle Cloud Si el usuario no tiene este permiso, debe pedirle a otra persona que cree la cuenta de servicio por usted o usar otro método para autenticar el proxy de autenticación de Cloud SQL.
Aprenda cómo crear una cuenta de servicio .
Permisos necesarios para las cuentas de servicio
Al usar una cuenta de servicio para proporcionar las credenciales del proxy de autenticación de Cloud SQL, debe crearla con los permisos necesarios. Si utiliza roles de acceso y administración de identidades (IAM) más específicos para administrar sus permisos de Cloud SQL, debe asignar a la cuenta de servicio un rol que incluya el permiso cloudsql.instances.connect
. Los roles predefinidos de Cloud SQL que incluyen este permiso son:
- Cliente de Cloud SQL
- Editor de SQL en la nube
- Administrador de Cloud SQL
Si está utilizando los roles de proyecto heredados (Visor, Editor, Propietario), la cuenta de servicio debe tener al menos el rol de Editor.
Mantenga actualizado el proxy de autenticación de Cloud SQL
Google publica ocasionalmente nuevas versiones del proxy de autenticación de Cloud SQL. Puedes consultar la versión actual en la página de lanzamientos de Cloud SQL Auth Proxy en GitHub . Las futuras versiones del proxy también se publicarán en el foro de anuncios de Cloud SQL de Grupos de Google .
Uso de la API
El proxy de autenticación de Cloud SQL envía solicitudes a la API de administración de Cloud SQL. Estas solicitudes se contabilizan para la cuota de API de tu proyecto.
El mayor uso de la API se produce al iniciar el proxy de autenticación de Cloud SQL. Mientras está en ejecución, emite dos llamadas a la API por hora por cada instancia conectada.
Acerca de la creación de una cuenta de usuario especial para el proxy de autenticación de Cloud SQL
Al conectarse a su instancia mediante el proxy de autenticación de Cloud SQL, proporciona una cuenta de usuario para iniciar sesión. Puede usar cualquier cuenta de usuario de base de datos para este fin. Sin embargo, dado que el proxy de autenticación de Cloud SQL siempre se conecta desde un nombre de host al que solo puede acceder, puede crear una cuenta de usuario que solo pueda usar dicho proxy. La ventaja de esto es que puede especificar esta cuenta sin contraseña, sin comprometer la seguridad de su instancia ni de sus datos.
Para crear una cuenta de usuario para las conexiones del proxy de autenticación de Cloud SQL, especifique el nombre de host como 'cloudsqlproxy~[IP_ADDRESS]'
. También puede usar el comodín de dirección IP, que daría como resultado 'cloudsqlproxy~%'
. El nombre completo de la cuenta de usuario sería:
'[USER_NAME]'@'cloudsqlproxy~%'
o
'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
Para obtener ayuda con la creación de un usuario, consulte Creación y administración de usuarios . Para obtener información sobre cómo funciona Cloud SQL con las cuentas de usuario, consulte Usuarios . Para obtener información sobre las cuentas de usuario de MySQL, consulte Protección de las cuentas iniciales de MySQL en la documentación de MySQL.
Parámetros y marcas del proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL acepta varias marcas y parámetros al iniciarse. Estas opciones determinan dónde y cómo crea los sockets que utiliza para comunicarse con Cloud SQL y cómo realiza la autenticación.
Para obtener ayuda con las opciones de proxy de autenticación de Cloud SQL, consulte la siguiente información:
- Opciones para autenticar el proxy de autenticación de Cloud SQL
- Ejemplo de invocaciones de proxy de autenticación de Cloud SQL
- Página de GitHub del proxy de autenticación de Cloud SQL
- La ayuda del proxy de autenticación de Cloud SQL, que se muestra con
./cloud-sql-proxy --help
Cómo se utiliza FUSE con el proxy de autenticación de Cloud SQL
FUSE significa "Sistema de archivos en el espacio de usuario" . Dependiendo de cómo se invoque el proxy de autenticación de Cloud SQL, este puede usar FUSE opcionalmente para crear los sockets que utiliza para conectarse con Cloud SQL.
Al conectarse desde Compute Engine o entornos de desarrollo locales, el proxy de autenticación de Cloud SQL utiliza FUSE para acceder a las instancias de Cloud SQL de la siguiente manera:
El directorio “/cloudsql” se monta como un sistema de archivos en el espacio de usuario, o FUSE, mediante el proxy de autenticación de Cloud SQL.
Un proceso (por ejemplo,
mysql
) intenta buscar un archivo llamado $INSTANCE.El proxy de autenticación de Cloud SQL intercepta la solicitud y devuelve que
/cloudsql/$INSTANCE
es un enlace simbólico que apunta a un socket Unix ubicado en otra parte del sistema de archivos.El proceso (por ejemplo,
mysql
) sigue el enlace y abre el socket Unix al que conduce y al que se conecta.
Instalar FUSE
Para Linux:
FUSE requiere el programa fusermount
y un módulo del kernel para funcionar. Puede comprobar si este programa está instalado buscando el archivo /dev/fuse/
. Si fusermount
no está en su sistema, puede instalarlo usando su gestor de paquetes o compilándolo desde el código fuente.
Para macOS:
Instalar FUSE para macOS .
Utilice el proxy de autenticación de Cloud SQL en un entorno de producción
Cuando utiliza el proxy de autenticación de Cloud SQL en un entorno de producción, hay algunos pasos que puede seguir para garantizar que el proxy de autenticación de Cloud SQL proporcione la disponibilidad necesaria para su aplicación.
Asegúrese de que el proxy de autenticación de Cloud SQL se ejecute como un servicio persistente
Si se detiene el proceso del proxy de autenticación de Cloud SQL, se perderán todas las conexiones existentes y la aplicación no podrá crear más conexiones a la instancia de Cloud SQL con dicho proxy. Para evitar esta situación, asegúrese de ejecutar el proxy de autenticación de Cloud SQL como un servicio persistente, de modo que, si se cierra por cualquier motivo, se reinicie automáticamente. Esto se puede lograr mediante un servicio como systemd
, upstart
o supervisor
. En el sistema operativo Windows, ejecute el proxy de autenticación de Cloud SQL como un servicio de Windows. En general, asegúrese de que el proxy de autenticación de Cloud SQL tenga los mismos requisitos de tiempo de actividad que el proceso de la aplicación.
¿Cuántas copias del proxy de autenticación de Cloud SQL necesita su aplicación?
No es necesario crear un proceso proxy para cada proceso de aplicación; varios procesos de aplicación pueden compartir un único proceso de proxy de autenticación de Cloud SQL. Ejecute un proceso cliente de proxy de autenticación de Cloud SQL por estación de trabajo o máquina virtual.
Si utiliza escalamiento automático para máquinas virtuales, asegúrese de que el proxy de autenticación de Cloud SQL esté incluido en la configuración de su máquina virtual, de modo que cada vez que se inicie una nueva máquina virtual, tenga su propio proceso de proxy de autenticación de Cloud SQL.
Depende de usted administrar la cantidad de conexiones que requiere su aplicación, ya sea limitándolas o agrupándolas. El proxy de autenticación de Cloud SQL no limita la velocidad de nuevas conexiones ni el número de conexiones persistentes.
Reducir la salida del proxy de autenticación de Cloud SQL
Si necesita reducir el tamaño del registro del proxy de autenticación de Cloud SQL, puede hacerlo configurando --quiet
al iniciarlo. Sin embargo, tenga en cuenta que esto reduce la eficacia de la salida del proxy de autenticación de Cloud SQL para diagnosticar problemas de conexión.
Cómo afecta la conmutación por error al proxy de autenticación de Cloud SQL
Si está ejecutando el proxy de autenticación de Cloud SQL en una instancia configurada para alta disponibilidad y se produce una conmutación por error, las conexiones a través del proxy de autenticación de Cloud SQL se verán afectadas de la misma manera que las conexiones IP: se perderán todas las conexiones existentes y la aplicación deberá establecer nuevas conexiones. Sin embargo, no se requiere intervención manual; la aplicación puede seguir usando las mismas cadenas de conexión que antes.
Mantenga la imagen Docker del proxy de autenticación de Cloud SQL actualizada
La imagen Docker del proxy de autenticación de Cloud SQL se basa en una versión específica del mismo. Cuando esté disponible una nueva versión, descargue la imagen Docker del proxy de autenticación de Cloud SQL para mantener su entorno actualizado. Puede consultar la versión actual del proxy de autenticación de Cloud SQL en la página de versiones de GitHub del proxy de autenticación de Cloud SQL .
Cómo hacer cumplir el uso del proxy de autenticación de Cloud SQL
Puedes forzar el uso del proxy de autenticación de Cloud SQL en las conexiones de instancias de Cloud SQL mediante ConnectorEnforcement . Con la forza de conector, se rechazan las conexiones directas a la base de datos.
Para utilizar la aplicación del conector, utilice el campo ConnectorEnforcement
en la API instances
.
Si utiliza una instancia con Private Service Connect habilitado , existe una limitación. Si la instancia tiene habilitada la aplicación de conectores, no podrá crear réplicas de lectura para ella. De igual forma, si la instancia tiene réplicas de lectura, tampoco podrá habilitar la aplicación de conectores para ella.
Para obtener más información sobre cómo aplicar el uso únicamente del proxy de autenticación de Cloud SQL o de los conectores de lenguaje de Cloud SQL para conectarse a una instancia, consulte Aplicar el uso del proxy de autenticación de Cloud SQL .
Acerca del operador proxy de Cloud SQL
El operador de proxy de Cloud SQL es un operador de Kubernetes de código abierto que automatiza la conexión de cargas de trabajo en un clúster de GKE a bases de datos de Cloud SQL. El operador de proxy de autenticación de Cloud SQL utiliza un recurso personalizado, AuthProxyWorkload, que especifica la configuración del proxy de autenticación de Cloud SQL para una carga de trabajo específica. El operador de proxy de autenticación de Cloud SQL lee este recurso y añade un contenedor de proxy de autenticación de Cloud SQL con la configuración necesaria a las cargas de trabajo correspondientes.
Cuando instala el operador en su clúster de GKE y configura sus cargas de trabajo e instancias de Cloud SQL, el operador de proxy de autenticación de Cloud SQL configura automáticamente el proxy de autenticación de Cloud SQL y conecta las cargas de trabajo de GKE a sus instancias de Cloud SQL.
El operador del proxy de autenticación de Cloud SQL también comprueba el estado del proxy de autenticación de Cloud SQL. Si no puede conectarse, genera información de depuración y ofrece orientación para solucionar problemas comunes de configuración.
Para obtener más información, consulte Conectarse mediante el operador de proxy de Cloud SQL .