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 con el protocolo SSL/TLS. Las conexiones SSL/TLS proporcionan una capa de seguridad, ya que encriptan los datos en tránsito entre el cliente y la base de datos en la instancia de Cloud SQL. De manera opcional, tu conexión SSL/TLS puede realizar la verificación de identidad del servidor validando el certificado de servidor instalado en la instancia de Cloud SQL y la verificación de identidad del cliente validando el certificado de cliente instalado en el cliente.

Certificados de servidor

Cuando creas una instancia, Cloud SQL crea y, luego, instala de forma automática 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 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 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 CA 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 las conexiones directas y para las 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 de manera forzosa la verificación de los certificados 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 de forma automática con SSL/TLS junto con la verificación de identidad del cliente y del servidor, sin que tengas que descargar un certificado de la 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) de servidor 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 de servidor para esa instancia. Cloud SQL crea y administra estas AC. Para elegir la AC por instancia, selecciona Autoridad certificadora interna administrada por Google (Google Cloud consola) 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 (gcloud CLI) cuando creas la instancia. Si dejas el parámetro de configuración o la marca sin especificar cuando creas una instancia, esta opción es el valor predeterminado para la instancia. No puedes actualizar una instancia para usar la opción de CA por instancia si la instancia está configurada para usar una CA compartida o una CA administrada por el cliente.

  • CA compartida: Con esta opción, se usa una jerarquía de CA que consta de una CA raíz y de CA de servidor subordinadas. Las AC subordinadas del servidor de una región firman los certificados del servidor y se comparten entre las instancias de la región. Usar una jerarquía de AC compartida es útil a medida que aumentas la cantidad de instancias en una región, ya que no necesitas administrar AC únicas para instancias individuales. Si cambias a una AC compartida (GOOGLE_MANAGED_CAS_CA), puedes usar un solo paquete de AC regional para todas tus instancias de la región, lo que puede simplificar la configuración del cliente. Cloud SQL aloja y administra la AC raíz y las AC subordinadas del servidor en Google Cloud Certificate Authority Service (servicio de AC). Cloud SQL también controla la rotación de la AC raíz y las AC subordinadas del servidor, y proporciona vínculos disponibles de forma pública a los paquetes de certificados de la AC para su descarga. Para elegir la AC compartida, selecciona Autoridad certificada de CAS administrada por Google en la consola de Google Cloud o especifica GOOGLE_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 o edites la instancia. Puedes actualizar una instancia existente para usar una jerarquía de AC compartida si usas la opción de AC por instancia o la de AC administrada por el cliente.

  • AC administrada por el cliente: Con esta opción, creas y administras tu propia jerarquía de AC. Elige esta opción si quieres administrar tus propias AC y certificados. Si usas una AC administrada por el cliente (CUSTOMER_MANAGED_CAS_CA), puedes administrar tu propia jerarquía de AC y las políticas de rotación con CA Service. Esta configuración te brinda un mayor control y te ayuda a cumplir con los requisitos de cumplimiento. Para elegir una AC administrada por el cliente, debes crear un grupo de AC y una AC en el Servicio de AC. En Cloud SQL, especifica el grupo de AC y la autoridad certificadora de CAS administrada por el cliente (consola deGoogle Cloud ), 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 o edites la instancia. Puedes actualizar una instancia existente para usar una jerarquía de AC administrada por el cliente si usas la opción de AC por instancia o la de AC compartida.

Después de crear o actualizar la instancia, puedes ver qué jerarquía de AC 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 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 de la misma región 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**
¿Rotación de la AC iniciada por el usuario? Sí No. Cloud SQL administra la rotación de la AC. Sí
¿Rotación iniciada por el usuario del certificado de servidor? Sí Sí Sí
¿Rotación automática del certificado de servidor? No Sí Sí
Ancla de confianza de la AC para las 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 las anclas de confianza.
Verificación de identidad del servidor Verificar la AC verifica la identidad del servidor, ya que cada instancia tiene una AC única. La verificación del nombre de host junto con la verificación de la AC es necesaria para la verificación de identidad del servidor, ya que las AC del servidor se comparten entre las instancias. Aunque es posible que la AC no se comparta entre instancias, es recomendable verificar el nombre de host junto con la AC.
Campo de 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 autenticación de Cloud SQL Admite todas las versiones del proxy de autenticación de Cloud SQL, v1 y posteriores. Requiere la versión 2.13.0 o 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 servicios Ninguno No admite conexiones de los siguientes servicios de Google Cloud: No admite conexiones de los siguientes servicios de Google Cloud:
  • 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

* Para la opción de CA administrada por el cliente, el período de validez predeterminado de un certificado de la AC en CA Service es de 10 años. Tienes la opción de configurar un período de validez diferente para tus certificados de la 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 Administra la rotación de AC.

** Para 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 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 la AC en el momento de la creación, consulta Configuración del certificado de la AC y Crea una AC raíz.

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

No puedes actualizar el serverCaMode de una instancia que usa una jerarquía de AC compartida o administrada por el cliente para usar la jerarquía de AC por instancia.

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

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

AC compartidas alojadas por CA Service

Este modo de AC del 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 del servidor regional compartido y proporciona vínculos disponibles de forma pública para descargar los paquetes de certificados de la 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 de configuración, establece serverCaMode en GOOGLE_MANAGED_CAS_CA cuando crees o edites 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 AC compartida.

Diagrama de una jerarquía de AC compartida

ACs administradas por el cliente

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

Para usar la opción de AC administrada por el cliente en Cloud SQL, crea un grupo de AC 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 AC en el campo serverCaPool y configura el campo serverCaMode con el valor CUSTOMER_MANAGED_CAS_CA. El Servicio de CA proporciona una AC del grupo de AC y la usa para emitir el certificado de servidor de la instancia.

Cuando creas AC en CA Service, puedes crear una AC raíz o una AC subordinada, según tu caso de uso. Por ejemplo, es posible que quieras crear 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 quieres administrar tus propias AC 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 el certificado de servidor, para que el certificado nuevo se pueda intercambiar sin problemas antes del vencimiento del certificado anterior.

Las instancias que usan la jerarquía de AC compartida o administrada por el cliente pueden habilitar la rotación automática de certificados de servidor para que se ejecute durante las actualizaciones de mantenimiento hasta 180 días antes del vencimiento.

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 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 para 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 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 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 venzan estos certificados, realiza la rotación de certificados de la AC del servidor.

Para 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 de que venza, realiza una rotación del certificado de servidor o habilita la rotación automática del certificado de servidor. El certificado de la autoridad de certificación (AC) raíz tiene un período de vencimiento de 25 años, y el certificado de la AC subordinada compartida 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 se establece en CUSTOMER_MANAGED_CAS_CA), puedes rotar el certificado de la AC rotando las AC en el grupo de AC 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 CA Service.

Para rotar las AC, usa el proceso de rotación de AC en CA Service. Para obtener más información, consulta Administra 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 la interrupción de las conexiones de cliente, 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 CA administrado por el cliente, puedes restablecer la configuración de SSL de tu instancia de Cloud SQL en cualquier momento.

Limitaciones

En esta sección, se abordan las limitaciones de la configuración de certificados SSL/TLS y Cloud SQL.

Limitaciones de la conexión de servicio

¿Qué sigue?