Autorizar con certificados SSL/TLS

En esta página, se describe cómo Cloud SQL usa certificados de capa de conexión segura (SSL)/capa de transporte (TLS) autoadministrados para conectarse de forma segura a las instancias de Cloud SQL.

Descripción general

Cloud SQL admite la conexión a una instancia mediante el protocolo de seguridad de la capa de transporte (SSL/TLS). Por lo general, se autentican los datos en tránsito dentro de un límite físico controlado por Google o en su nombre, pero puede que no se encripten según la configuración predeterminada. Si te conectas a una instancia mediante su dirección IP pública, debes aplicar certificados SSL/TLS para que los datos estén protegidos durante la transmisión. SSL/TLS es el protocolo estándar para la encriptación de datos que se envían a través de Internet. Si los datos no están encriptados, cualquier persona puede examinar los paquetes y leer información confidencial.

El método de encriptación más seguro se llama criptografía asimétrica. Este método requiere dos claves criptográficas, una pública y una privada. En principio, se usa la clave pública a fin de encriptar los datos y la clave privada para desencriptarlos. El servidor y las máquinas cliente tienen el mismo conjunto de claves de cliente.

En Cloud SQL, la clave pública se llama client-cert.pem y la clave privada se llama client-key.pem. El servidor también genera su propio certificado, llamado server-ca.pem.

Se requieren las tres claves para que tu aplicación pueda conectarse de forma correcta. Almacena estas claves de manera segura, ya que cualquier persona con acceso a ellas puede conectar o interceptar los datos. No puedes recuperar la clave privada del servidor más adelante, por lo que, si la pierdes, debes crear nuevos certificados de cliente para reemplazar los que estaban en uso. Del mismo modo, cuando el servidor genera un archivo server-ca.pem nuevo, debes descargarlo y almacenarlo en la máquina anfitrión del cliente MySQL, de modo que se reemplace el archivo existente.

Certificados SSL/TLS

En las conexiones SSL, es obligatorio contar con un certificado de autoridad certificada (CA) de servidor. Cloud SQL crea un certificado de servidor de forma automática cuando se crea la instancia. Siempre que el certificado de servidor sea válido, no es necesario que lo administres de forma activa. Sin embargo, el certificado tiene una fecha de vencimiento de 10 años. Después de esa fecha, deja de ser válido, y los clientes no pueden establecer una conexión segura con la instancia mediante él. También puedes crear un certificado nuevo de forma manual.

Puedes crear tus propios certificados de cliente. Existe un límite de 10 certificados de cliente por instancia de Cloud SQL.

Cómo funciona la rotación del certificado de servidor

Cloud SQL proporciona una forma de rotar el certificado de servidor para que un certificado nuevo se pueda intercambiar sin problemas antes del vencimiento del certificado anterior.

Alrededor de tres meses antes de que el certificado de servidor de una instancia de Cloud SQL se venza, los propietarios del proyecto reciben un correo electrónico de Cloud SQL en el que se indica que comenzó el proceso de rotación de certificados en esa instancia. En el correo electrónico, se proporciona el nombre de la instancia y se indica que Cloud SQL agregó un nuevo certificado de servidor al proyecto. El certificado de servidor existente seguirá funcionando con normalidad. De hecho, la instancia tiene dos certificados de servidor durante este período.

Antes de que venza el certificado actual, descarga el archivo server-ca.pem nuevo, que contiene la información del certificado de servidor actual y del nuevo. Actualiza los clientes MySQL a fin de que usen el archivo nuevo. Para ello, copia el archivo en todas las máquinas anfitrión de clientes MySQL y reemplaza el archivo existente.

Después de actualizar todos los clientes MySQL, envía un comando a la instancia de Cloud SQL para rotar al nuevo certificado de servidor. Una vez hecho esto, ya no se reconoce el certificado de servidor anterior y solo se puede usar el nuevo.

Los certificados de cliente no se ven afectados por la rotación de certificados de servidor.

Aplica la encriptación SSL/TLS

Cuando configuras la instancia de Cloud SQL para que acepte conexiones SSL/TLS, se habilitan las conexiones SSL/TLS en ella, pero se siguen aceptando conexiones inseguras y no encriptadas. Si no necesitas SSL/TLS para todas las conexiones, se permiten las conexiones sin encriptar. Por este motivo, si accedes a la instancia mediante una IP pública, se recomienda que apliques certificados SSL para todas las conexiones.

La configuración por usuario puede anular la configuración global habilitada o inhabilitada mediante la aplicación de SSL. El estado SSL de una cuenta de usuario se indica en la columna ssl_type de la tabla mysql.user. Si deseas obtener más información, consulta Configura MySQL para usar conexiones encriptadas.

Usa redes autorizadas

Si la instancia de Cloud SQL usa una dirección IP pública, debes agregar las direcciones IP de los clientes MySQL como redes autorizadas cuando configures SSL/TLS.

En este caso, los clientes MySQL solo están autorizados para conectarse si las direcciones IP están agregadas a esta lista. Las direcciones IP pueden limitarse a un solo extremo o consistir en un rango en formato CIDR. Por ejemplo, 10.50.51.310.50.51.0/26.

Vencimiento del certificado SSL

Los certificados SSL asociados con instancias de Cloud SQL tienen un período de vencimiento de 10 años. Cuando se vence un certificado, debes realizar la rotación de certificados de SSL. También puedes restablecer la configuración de SSL de la instancia de Cloud SQL en cualquier momento.

Próximos pasos