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 del 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 tres tipos de autoridad certificadora (AC) del servidor que puedes elegir para tus instancias de Cloud SQL. Tiene tres opciones:

  • AC por instancia: Con esta opción, una AC interna dedicada a cada instancia de Cloud SQL firma el certificado del 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 cuando creas una instancia, esta opción es 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 de servidor subordinadas de 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 Google Cloud Certificate Authority Service (servicio de AC). 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.

    La opción de AC compartida se encuentra en Versión preliminar.

  • AC administrada por el cliente: Con esta opción, creas y administras tu propia jerarquía de AC. Elige esta opción si deseas administrar tus propias AC y certificados. Para elegir una AC compartida, debes crear un grupo de AC y una AC en el servicio de AC. En Cloud SQL, especifica el grupo de AC y CUSTOMER_MANAGED_CAS_CA para la configuración serverCaMode (API de Cloud SQL Admin) o la marca --server-ca-mode (gcloud CLI) cuando crees la instancia.

    La opción de AC administrada por el cliente se encuentra en Versión preliminar.

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 tres opciones de jerarquía de AC.

Función AC por instancia AC compartida AC administrada por el cliente
Estructura de la AC AC independiente para cada instancia AC raíz y AC subordinadas compartidas entre instancias en la misma región La jerarquía de AC que creas y administras
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 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 Configurable *
Período de validez del certificado del servidor 10 años 1 año 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 las anclas de confianza de todas las instancias de una región determinada. Las AC que creas y administras son los vínculos de confianza.
Verificación de identidad del servidor La verificación de la AC 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. Aunque es posible que la AC no se comparta entre las instancias, te recomendamos que verifiques el nombre de host junto con la AC.
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. 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.

* En el caso de la opción de AC administrada por el cliente, el período de validez predeterminado de un certificado de AC en el servicio de AC es de 10 años. Tienes la opción de configurar un período de validez diferente para tus certificados de AC. Un período de validez más corto para la AC podría requerir rotaciones de AC más frecuentes, y un período de validez inferior a un año podría afectar el período de validez de los certificados de tu servidor. Para obtener más información, consulta Cómo administrar la rotación de AC.

** En el caso de la opción de AC administrada por el cliente, el período de validez predeterminado de un certificado de servidor es de un año. Sin embargo, si configuras un período de validez inferior a un año para el certificado de la AC, el certificado del servidor tendrá un período de validez más corto. Para obtener más información sobre cómo configurar el período de validez de tu certificado de AC cuando lo crees, consulta Configuración del certificado de AC y Crea una AC raíz.

AC por instancia alojada por Cloud SQL

La jerarquía de AC por instancia es la configuración predeterminada del modo de AC del servidor cuando creas una instancia con gcloud CLI, la API de Cloud SQL Admin o Terraform.

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 cuando crees la instancia. Puedes dejar el parámetro de configuración serverCaMode sin especificar con la API de Cloud SQL Admin o gcloud CLI, o bien seleccionar la opción Autoridad certificadora interna de Google en la consola de Google Cloud.

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

La jerarquía de AC compartida es la configuración predeterminada del modo de AC del servidor cuando creas una instancia con la consola de Google Cloud.

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

AC administradas por el cliente

Este modo de AC del servidor te permite configurar tu propia jerarquía de AC en el servicio de AC.

Para usar la opción de AC administrada por el cliente en Cloud SQL, debes crear un grupo de AC en la misma región que tus instancias de Cloud SQL. Luego, crea al menos una AC. Cuando crees la instancia de Cloud SQL, especifica el ID del grupo de AC en el campo serverCaPool y configura el campo serverCaMode con el valor CUSTOMER_MANAGED_CAS_CA. El servicio de AC proporciona una AC del grupo de AC y la usa para emitir el certificado del servidor de la instancia.

Cuando creas AC en el servicio de AC, puedes crear una AC raíz o una AC subordinada según tu caso de uso. Por ejemplo, te recomendamos que crees una AC subordinada si planeas configurar una jerarquía de AC raíz o encadenar a una AC externa.

Selecciona la opción de AC administrada por el cliente solo si deseas administrar tus propias AC y certificados. Para obtener más información, consulta Cómo usar una AC administrada por el cliente. La opción de AC administrada por el cliente se encuentra en Versión preliminar.

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.

En el caso de las instancias que usan la AC por instancia, la AC compartida o las jerarquías de AC administradas por el cliente, aproximadamente tres meses antes de que venza el certificado de servidor de una instancia de Cloud SQL, 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.

El comando de rotación de certificados del servidor que se debe usar depende de si usas un certificado del servidor emitido por una AC por instancia o un certificado del servidor emitido por la AC compartida o la AC administrada por el cliente.

Antes de que venza el certificado de servidor 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 o la AC administrada por el cliente) 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

En el caso de las instancias de Cloud SQL que usan AC por instancia (serverCaMode se establece en GOOGLE_MANAGED_INTERNAL_CA), los certificados SSL tienen un período de vencimiento de 10 años. Antes de que venza el certificado, realiza la rotación del certificado de la AC del servidor.

En el caso de las instancias que usan AC compartidas (serverCaMode se establece en GOOGLE_MANAGED_CAS_CA) (Versión preliminar), el período de vencimiento de los certificados del servidor es de 1 año. Antes del vencimiento, realiza una rotación de certificados de servidor. 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 usas una AC administrada por el cliente (serverCaMode está configurado como CUSTOMER_MANAGED_CAS_CA)(Versión preliminar), puedes realizar la rotación de certificados de AC rotando las AC en el grupo de AC que creaste. El período de vencimiento de una AC suele ser de 10 años, pero puedes configurar un período de validez más corto para tu AC en el Servicio de AC.

Para rotar las AC, usa el proceso de rotación de AC en el servicio de AC. Para obtener más información, consulta Cómo administrar la rotación de AC.

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, la AC compartida o el modo de servidor de AC administrado por el cliente, puedes restablecer la configuración de SSL de tu instancia de Cloud SQL en cualquier momento.

¿Qué sigue?