Configura un nombre de DNS personalizado para una instancia de Cloud SQL

En esta página, se describe cómo configurar un nombre personalizado del sistema de nombres de dominio (DNS) para tu instancia de Cloud SQL.

Descripción general

Puedes configurar una instancia de Cloud SQL para que tus aplicaciones puedan conectarse con un nombre de DNS personalizado administrado por tu organización. Si deseas usar un nombre de DNS personalizado para conectarte a una instancia de Cloud SQL en lugar de usar una dirección IP, configura un nombre alternativo del sujeto (SAN) personalizado. Puedes configurar un SAN personalizado cuando creas o actualizas una instancia.

Cuando agregas un nombre de DNS personalizado como una configuración de SAN personalizada a tu instancia, Cloud SQL inserta el nombre de DNS personalizado en el campo SAN del certificado del servidor de la instancia. Esta personalización te permite usar el nombre de DNS personalizado con la validación de nombres de host de forma segura. Puedes agregar una lista separada por comas de hasta tres nombres de DNS personalizados a la configuración de SAN personalizada. Por motivos de seguridad, solo puedes usar una configuración de SAN personalizada para las instancias que configures con CUSTOMER_MANAGED_CAS_CA como el modo de CA del servidor.

Después de configurar el nombre de DNS personalizado para tu instancia, puedes usarlo para conectar tus clientes o aplicaciones de bases de datos, incluidos los conectores de lenguaje de Cloud SQL y el proxy de autenticación de Cloud SQL.

Flujo de trabajo

Para configurar un nombre de DNS personalizado para una instancia, haz lo siguiente:

  1. Crea una instancia configurada con una CA administrada por el cliente.
  2. Agrega valores de SAN personalizados a la instancia. Los valores de SAN personalizados se insertan en el campo SAN del certificado del servidor de la instancia.
  3. Determina la dirección IP de la instancia.
  4. Crea registros DNS personalizados para tu instancia.
  5. Conéctate a la instancia con el nombre de DNS personalizado.

Antes de comenzar

Antes de configurar un nombre de DNS personalizado para tu instancia, asegúrate de tener los roles y permisos necesarios.

Si creas una instancia nueva de Cloud SQL, para usar un SAN personalizado, tu instancia también debe usar una autoridad certificadora (AC) administrada por el cliente para su modo de AC del servidor.

Crea una instancia con valores de SAN personalizados

Para crear una instancia con valores de SAN personalizados, usa el siguiente comando gcloud sql instances create:

gcloud

gcloud sql instances create "INSTANCE_NAME" \
  --database-version=DATABASE_VERSION \
  --project=PROJECT_ID \
  --region=REGION \
  --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \
  --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID
  --custom-subject-alternative-names=CUSTOM_DNS_NAME

Realiza los siguientes reemplazos:

  • INSTANCE_NAME por el nombre de la instancia de Cloud SQL que deseas crear.
  • DATABASE_VERSION por el enum de la versión de la instancia de Cloud SQL que deseas crear.
  • PROJECT_ID por el ID del proyecto en el que planeas crear tus instancias de Cloud SQL.
  • PROJECT_ID_CAS con el ID del proyecto en el que creaste tu CA_POOL_ID Este proyecto puede ser el mismo o diferente del que deseas usar para crear tu instancia de Cloud SQL.
  • REGION por la región en la que creaste el grupo de CA. Debes crear tu instancia en la misma región que el grupo de CA.
  • CA_POOL_ID por el ID del grupo de CA que creaste.
  • CUSTOM_DNS_NAME con hasta tres nombres de DNS personalizados, separados por comas y sin espacios entre los valores. Por ejemplo:develop.example.com,test.example.com,production.example.com

Agrega o actualiza valores de SAN personalizados para una instancia

Para agregar o actualizar valores de SAN personalizados para una instancia existente, haz lo siguiente:

gcloud

gcloud sql instances patch INSTANCE_NAME \
  --custom-subject-alternative-names=CUSTOM_DNS_NAME
Precaución: Si actualizas una instancia que ya tiene valores de SAN personalizados, especifica los valores de SAN personalizados existentes o se reemplazarán los valores existentes.

Realiza los siguientes reemplazos:

  • INSTANCE_NAME por el nombre de la instancia de Cloud SQL que deseas actualizar.
  • CUSTOM_DNS_NAME con hasta tres nombres de DNS personalizados, separados por comas y sin espacios entre los valores. Por ejemplo:develop.example.com,new-test.example.com,production.example.com

Borra todos los valores de SAN personalizados de una instancia

Para borrar todos los valores de SAN personalizados de una instancia, haz lo siguiente:

gcloud

gcloud sql instances patch INSTANCE_NAME \
  --clear-custom-subject-alternative-names

Reemplaza INSTANCE_NAME por el nombre de la instancia de Cloud SQL que deseas actualizar.

Crea registros DNS personalizados

Antes de conectarte a la instancia con el nombre de DNS personalizado con tus clientes y aplicaciones, configura la asignación entre el nombre de DNS y la dirección IP. Esta asignación se conoce como resolución de DNS. Si te conectas de forma privada, crea el registro DNS en una zona del DNS privado en la red de nube privada virtual (VPC) correspondiente.

Para crear registros DNS personalizados para tu instancia, haz lo siguiente:

  1. Recupera la dirección IP de tu instancia. Ejecuta el siguiente comando:

    gcloud sql instances describe INSTANCE_NAME \
     --project=PROJECT_ID

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL
    • PROJECT_ID: El ID o el número del proyecto del proyecto Google Cloud que contiene la instancia
  2. En la respuesta, busca el campo ipAddresses:.

    Por ejemplo:

    ipAddresses:
    - ipAddress: 192.0.2.4
      type: PRIVATE
    

    Puedes recuperar la dirección IP privada de una instancia configurada para el acceso privado a servicios, Private Service Connect o ambos.

  3. Agrega dos registros DNS a una zona DNS que usa tu aplicación. Puedes usar un servidor DNS que administres tú mismo o la zona privada de Cloud DNS que usa tu aplicación.

    • Crea un registro A para la dirección IP de la instancia
    • Crea un registro TXT que contenga el nombre de la conexión de la instancia.

    Los clientes de bases de datos estándar usan el registro A para buscar la dirección IP y establecer la conexión. Los conectores de idioma de Cloud SQL y el proxy de autenticación de Cloud SQL usan el registro TXT para buscar el nombre de conexión de la instancia.

    Por ejemplo, la cadena de conexión de tu instancia es my-project:region:my-instance, pero deseas conectarte con el nombre de DNS prod-db.mycompany.example.com. Si la dirección IP de la instancia en la red de tu empresa es 192.0.2.4, crea los siguientes registros DNS:

    Record type: A
    Name: prod-db.mycompany.example.com
    Value: 192.0.2.4
    TTL: 600
    
    Record type: TXT
    Name: prod-db.mycompany.example.com
    Value: my-project:region:my-instance
    TTL: 600
    

Conéctate a una instancia con un nombre de DNS personalizado

Cuando te conectes a la instancia de Cloud SQL para PostgreSQL, configura el nombre DNS personalizado como nombre de host y habilita la verificación de identidad del servidor en tu cliente.

Por ejemplo, cuando usas el cliente psql, especifica la marca sslmode=verify-full. Otros controladores de cliente de PostgreSQL tienen marcas de configuración similares.

Si te conectas a una instancia privada de Cloud SQL desde una red externa, debes configurar tu instancia de Cloud SQL y su red de nube privada virtual (VPC) para permitir conexiones externas y dejar que Cloud DNS se comunique con los sistemas locales. Para obtener más información sobre esta configuración, consulta Conéctate desde una fuente externa y Configura el DNS para sistemas locales.

Limitaciones

  • No puedes agregar más de tres nombres de DNS como valores de SAN personalizados al certificado de servidor de una instancia de Cloud SQL.
  • La longitud máxima de un nombre de DNS que puedes agregar al certificado como un valor de SAN personalizado para una instancia es de 253 caracteres.
  • Los nombres de DNS que agregues al certificado de una instancia no pueden tener caracteres comodín (*) ni puntos finales. Por ejemplo, no se permite test.example.com..
  • Los nombres de DNS deben ser válidos, según lo especificado en RFC 1034.
  • Solo puedes especificar valores de SAN personalizados para las instancias de CUSTOMER_MANAGED_CAS_CA.

¿Qué sigue?