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 a través del 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 en tu instancia de Cloud SQL. De manera opcional, tu conexión SSL/TLS puede realizar la verificación de la identidad del servidor validando el certificado del servidor instalado en la instancia de Cloud SQL y la verificación de la 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 CA en la máquina anfitrión del cliente y usarlo para verificar la identidad de la CA y del servidor de Cloud SQL. De manera opcional, puedes elegir el tipo de CA 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 las claves en la máquina anfitrión del cliente para la autenticación mutua (verificación de la 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 la encriptación SSL/TLS con el parámetro de configuración del modo SSL en Cloud SQL. De manera opcional, también puedes aplicar 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 la identidad del cliente y del servidor sin necesidad de que descargues un certificado de CA del servidor y 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 (CA)

En esta sección, se describen los tres tipos de autoridades de certificación (CA) de servidores que puedes elegir para tus instancias de Cloud SQL. Tienes tres opciones:

  • CA por instancia: Con esta opción, una CA interna dedicada a cada instancia de Cloud SQL firma el certificado del servidor para esa instancia. Cloud SQL crea y administra estas entidades certificadoras. Para elegir una CA por instancia, selecciona Autoridad de certificación interna administrada por Google (consola deGoogle Cloud ) o especifica GOOGLE_MANAGED_INTERNAL_CA para el parámetro de configuración serverCaMode (API de Cloud SQL Admin) o la marca --server-ca-mode (CLI de gcloud) cuando crees la instancia. Si no especificas el parámetro de configuración o la marca cuando creas una instancia, esta opción será el valor predeterminado para la instancia.

  • CA compartida: Con esta opción, se usa una jerarquía de CA que consta de una CA raíz y CA de servidor subordinadas. Las AC del 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 servidor subordinadas en Google CloudCertificate Authority Service (CA Service). Cloud SQL también controla la rotación de la CA raíz y las CA del servidor subordinadas, y proporciona vínculos disponibles públicamente a los paquetes de certificados de CA para su descarga. Para elegir una CA compartida, especifica GOOGLE_MANAGED_CAS_CA para el parámetro de configuración serverCaMode (API de Cloud SQL Admin) o la marca --server-ca-mode (CLI de gcloud) cuando crees la instancia.

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

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

En la siguiente tabla, se comparan las tres opciones de jerarquía de la CA.

Función CA por instancia CA compartida CA administrada por el cliente
Estructura de la CA CA independiente para cada instancia CA raíz y CA subordinadas compartidas entre instancias en la misma región Jerarquía de CA 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 y algoritmo SHA384 Algoritmo de firma digital de curva elíptica (ECDSA) con clave de 384 bits y algoritmo SHA384
Período de validez de la CA 10 años 25 años para la CA raíz y 10 años para las CA subordinadas Configurable *
Período de validez del certificado del servidor 10 años 1 año 1 año**
¿Rotación de la CA iniciada por el usuario? No. Cloud SQL administra la rotación de la CA.
¿Rotación del certificado de servidor iniciada por el usuario?
Ancla de confianza de la CA para conexiones TLS La CA única por instancia es el ancla de confianza de la instancia correspondiente. La CA raíz y las CA subordinadas son las anclas de confianza de todas las instancias de una región determinada. Las AC que creas y administras son las anclas de confianza.
Verificación de identidad del servidor La verificación de la CA verifica la identidad del servidor, ya que cada instancia tiene una CA única. Es necesario verificar el nombre de host junto con la AC para verificar la identidad del servidor, ya que las AC del servidor se comparten entre instancias. Aunque es posible que la CA no se comparta entre las instancias, tal vez quieras verificar el nombre de host junto con la CA.
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.
Compatibilidad con versiones del proxy de Cloud SQL Auth Admite todas las versiones del proxy de Cloud SQL Auth, la versión 1 y las posteriores. Requiere la versión 2.13.0 o una posterior del proxy de autenticación de Cloud SQL. Requiere la versión 2.14.3 o posterior del proxy de autenticación de Cloud SQL.
Limitaciones de la conexión de servicio Ninguno No admite conexiones de los siguientes Google Cloud servicios: No admite conexiones de los siguientes Google Cloud servicios:
  • Entorno estándar de App Engine
  • Entorno flexible de App Engine
  • Servicios de Cloud Run que se ejecutan en un entorno de ejecución de primera generación

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

** 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 tu certificado de CA, tu certificado de 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 CA cuando lo crees, consulta Configuración del certificado de CA y Crea una CA raíz.

CA por instancia alojada por Cloud SQL

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

Cloud SQL crea una nueva CA de servidor autofirmada para cada instancia cuando la creas. Para usar este parámetro de configuración, establece 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 la gcloud CLI, o bien seleccionar la opción Autoridad de certificación interna de Google en la consola Google Cloud .

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

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

CA compartidas alojadas por el Servicio de CA

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 CA del servidor consta de una CA raíz y CA del servidor subordinadas en cada región. Las ACs del servidor subordinadas emiten certificados del servidor y se comparten entre las instancias de la región. Cloud SQL controla la rotación de las AC del servidor regionales compartidas y proporciona vínculos disponibles públicamente para descargar los paquetes de certificados de la AC.

Puedes configurar una instancia para que use una jerarquía de CA del servidor en la que las CA emisoras se compartan entre las instancias de la misma región. Para usar este parámetro de configuración, establece serverCaMode en GOOGLE_MANAGED_CAS_CA cuando crees la instancia. También puedes seleccionar Autoridad certificadora de CAS administrada por Google en la consola de Google Cloud .

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

Diagrama de una jerarquía de CA compartida

CA administradas por el cliente

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

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

Cuando creas CAs en el servicio de CA, puedes crear una CA raíz o una CA subordinada según tu caso de uso. Por ejemplo, es posible que desees crear una CA subordinada si planeas configurar una jerarquía de CA raíz o encadenar una CA externa.

Selecciona la opción de CA administrada por el cliente solo si deseas administrar tus propias CA y certificados. Para obtener más información, consulta Usa una CA administrada por el cliente.

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

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

En el caso de las instancias que usan las jerarquías de CA por instancia, CA compartida o CA administrada por el cliente, 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.

El comando de rotación del certificado 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 CA por instancia) o un comando de rotación (para la CA compartida o la CA 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 CA 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 venzan estos certificados, realiza la rotación del certificado de la CA del servidor.

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 una rotación del certificado del servidor. El certificado de la autoridad de certificación (CA) raíz tiene un período de vencimiento de 25 años, y el certificado de la CA subordinada compartida tiene un período de vencimiento de 10 años. Cloud SQL controla su rotación.

Si usas una CA administrada por el cliente (serverCaMode se establece en CUSTOMER_MANAGED_CAS_CA), puedes rotar los certificados de la CA rotando las CA en el grupo de CA que creaste. El período de vencimiento de una CA suele ser de 10 años, pero puedes configurar un período de validez más corto para tu CA en el Servicio de CA.

Para rotar las CAs, usa el proceso de rotación de CAs en el servicio de CA. Para obtener más información, consulta Administra la rotación de la CA.

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

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

¿Qué sigue?