Autorizar con certificados SSL/TLS

En esta página, se describe cómo puedes usar la capa de conexión segura (SSL), ahora seguridad de la capa de transporte (TLS), desde tu aplicación para encriptar las conexiones a las instancias de Cloud SQL.

Descripción general

Cloud SQL admite la conexión a una instancia mediante el protocolo SSL/TLS. Las conexiones SSL/TLS proporcionan una capa de seguridad, ya que encriptan los datos en tránsito entre tu cliente y la base de datos de tu instancia de Cloud SQL. De manera opcional, tu conexión SSL/TLS puede realizar la verificación de identidad del servidor validando el certificado del servidor instalado en la instancia de Cloud SQL y la verificación de identidad del cliente validando el certificado del cliente instalado en el cliente.

Certificados de servidor

Cuando creas una instancia, Cloud SQL crea e instala automáticamente un certificado de servidor firmado por una autoridad certificadora (AC). Puedes descargar el certificado de la AC en la máquina anfitrión del cliente y usarlo para verificar la identidad de la AC y del servidor de Cloud SQL. De manera opcional, puedes elegir el tipo de AC que usa Cloud SQL para firmar el certificado del servidor.

Certificados de clientes

De manera opcional, puedes crear y descargar certificados de cliente junto con claves en la máquina anfitrión del cliente para la autenticación mutua (verificación de identidad del servidor y del cliente). No puedes elegir el tipo de AC que usa Cloud SQL para firmar el certificado de cliente.

Conéctate con SSL/TLS

Cuando te conectas a una instancia de Cloud SQL desde clientes, puedes usar SSL/TLS para conexiones directas y para conexiones que usan el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL.

  • Para las conexiones directas, Google recomienda aplicar de manera forzosa la encriptación SSL/TLS con la configuración de modo SSL en Cloud SQL. De manera opcional, también puedes aplicar de manera forzosa la verificación del certificado de cliente. Para obtener más información, consulta Aplica la encriptación SSL/TLS.

  • En el caso de las conexiones que usan el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL, las conexiones se encriptan automáticamente con SSL/TLS junto con la verificación de identidad del cliente y del servidor sin necesidad de que descargues un certificado de AC del servidor ni un certificado de cliente.

Para obtener más información sobre las opciones de conectividad de Cloud SQL, consulta Acerca de las conexiones de Cloud SQL.

Para obtener más información sobre la configuración de SSL/TLS del cliente, consulta la documentación de tu motor de base de datos.

Jerarquías de autoridades certificadoras (AC)

En esta sección, se describen los dos tipos de autoridad certificadora (AC) del servidor que puedes elegir para tus instancias de Cloud SQL. Tienes dos opciones:

  • AC por instancia: Con esta opción, una AC interna dedicada a cada instancia de Cloud SQL firma el certificado de servidor de esa instancia. Cloud SQL crea y administra estas AC. Para elegir la AC por instancia, especifica GOOGLE_MANAGED_INTERNAL_CA para la configuración serverCaMode (API de Cloud SQL Admin) o la marca --server-ca-mode (gcloud CLI) cuando crees la instancia. Si no especificas el parámetro de configuración o la marca, esta opción será el valor predeterminado de la instancia.
  • CA compartida: Con esta opción, se usa una jerarquía de AC que consta de una AC raíz y AC de servidores subordinados. Las AC subordinadas del servidor en una región firman los certificados del servidor y se comparten entre las instancias de la región. Cloud SQL aloja y administra la AC raíz y las AC de servidores subordinados en Certificate Authority Service (servicio de AC) de Google Cloud. Cloud SQL también controla la rotación de las AC raíz y las AC subordinadas del servidor, y proporciona vínculos disponibles públicamente a los paquetes de certificados de AC para su descarga. Para elegir la AC compartida, especifica GOOGLE_MANAGED_CAS_CA para la configuración serverCaMode (API de Cloud SQL Admin) o la marca --server-ca-mode (CLI de gcloud) cuando crees la instancia.

Después de crear una instancia, puedes ver qué jerarquía de AC está configurada para una instancia de Cloud SQL con el comando gcloud sql instances describe. Para obtener más información, consulta Cómo ver la información de la instancia.

En la siguiente tabla, se comparan las dos opciones de jerarquía de AC.

Función AC por instancia AC compartida
Estructura de la AC AC independiente para cada instancia AC raíz y AC subordinadas compartidas entre instancias en la misma región
Atributos criptográficos Clave RSA de 2,048 bits con algoritmo SHA256 Algoritmo de firma digital de curva elíptica (ECDSA) con clave de 384 bits con algoritmo SHA384
Período de validez de la AC 10 años 25 años para la AC raíz y 10 años para las AC subordinadas
Período de validez del certificado del servidor 10 años 1 año
¿La rotación de la AC la inicia el usuario? No. Cloud SQL administra la rotación de AC.
¿Se inició la rotación del certificado del servidor por parte del usuario?
Anclaje de confianza de la AC para conexiones TLS La AC única por instancia es el ancla de confianza de la instancia correspondiente. La AC raíz y las AC subordinadas son los vínculos de confianza de todas las instancias de una región determinada.
Verificación de identidad del servidor Cuando se verifica la AC, se verifica la identidad del servidor, ya que cada instancia tiene una AC única. Para verificar la identidad del servidor, es necesario verificar el nombre de host junto con la AC, ya que las AC del servidor se comparten entre las instancias.
Campo Nombre alternativo del sujeto (SAN) en los certificados de servidor El campo SAN contiene el nombre de host (nombre de DNS de la instancia) solo para las instancias habilitadas con Private Service Connect. El nombre de host se puede usar para la verificación de identidad del servidor. Si te conectas a una instancia de Cloud SQL con el nombre de DNS como nombre de host, debes configurar la resolución de DNS. El campo SAN contiene el nombre de host (nombre de DNS de la instancia) para todos los tipos de instancias. El nombre de host se puede usar para la verificación de identidad del servidor. Si te conectas a una instancia de Cloud SQL con el nombre de DNS como nombre de host, debes configurar la resolución de DNS.

AC por instancia alojada por Cloud SQL

Esta jerarquía de AC es la configuración predeterminada del modo de AC del servidor.

Cloud SQL crea una nueva AC de servidor autofirmada para cada instancia cuando la creas. Para usar este parámetro, configura serverCaMode en GOOGLE_MANAGED_INTERNAL_CA o deja el parámetro de configuración sin especificar cuando crees la instancia.

En el siguiente diagrama, se muestra la jerarquía de AC por instancia.

Diagrama de la jerarquía de AC interna por instancia.

AC compartidas alojadas por el servicio de AC

Este modo de AC de servidor consta de una AC raíz y AC de servidor subordinadas en cada región. Las AC de servidor subordinadas emiten certificados de servidor y se comparten entre las instancias de la región. Cloud SQL controla la rotación de las AC de los servidores regionales compartidos y proporciona vínculos disponibles públicamente para descargar los paquetes de certificados de AC.

Puedes configurar una instancia para que use una jerarquía de AC de servidor en la que las AC emisoras se compartan entre las instancias de la misma región. Para usar este parámetro, configura serverCaMode en GOOGLE_MANAGED_CAS_CA cuando crees la instancia.

En el siguiente diagrama, se muestra la jerarquía de AC compartida.

Diagrama de una jerarquía de AC compartida

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

Cloud SQL proporciona formas de rotar el certificado de servidor para que el nuevo certificado se pueda intercambiar sin problemas antes de que venza el certificado anterior.

El comando de rotación que se debe usar depende de si usas un certificado de servidor que emitió una AC por instancia o un certificado de servidor que emitió la AC compartida.

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 tus clientes PostgreSQL a fin de que usen el archivo nuevo. Para ello, copia el archivo en todas tus máquinas anfitrión de clientes PostgreSQL y reemplaza el archivo existente.

Después de actualizar todos los clientes de PostgreSQL, envía un comando de rotación (para la AC por instancia) o un comando de rotación (para la AC compartida) 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.

Vencimiento del certificado SSL

De forma predeterminada, las instancias de Cloud SQL usan la configuración predeterminada de GOOGLE_MANAGED_INTERNAL_CA como serverCaMode. Los certificados SSL tienen un período de vencimiento de 10 años. Antes de que venza el certificado, realiza la rotación de la AC.

En el caso de las instancias que usan AC compartidas (serverCaMode se establece en GOOGLE_MANAGED_CAS_CA), el período de vencimiento de los certificados del servidor es de 1 año. Antes del vencimiento, realiza la rotación de certificados de SSL. El certificado de la autoridad certificadora (AC) raíz tiene un período de vencimiento de 25 años, y el certificado de AC compartido subordinado tiene un período de vencimiento de 10 años. Cloud SQL controla su rotación.

Si un cliente está configurado para verificar la AC o el nombre de host en el certificado del servidor, las conexiones de ese cliente a las instancias de Cloud SQL con certificados de servidor vencidos fallarán. Para evitar interrupciones en las conexiones de los clientes, rota el certificado del servidor antes de que venza.

Ya sea que uses la AC por instancia o el modo de servidor de AC compartido, puedes restablecer la configuración de SSL de tu instancia de Cloud SQL en cualquier momento.

¿Qué sigue?