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

En esta página, se describe cómo configurar un nombre de sistema de nombres de dominio (DNS) personalizado 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 que administre 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 de 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 nombre 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, puedes usar una configuración de SAN personalizada solo para las instancias que configuras con CUSTOMER_MANAGED_CAS_CA como el modo de AC del servidor.

Después de configurar el nombre de DNS personalizado para tu instancia, puedes usar ese nombre de DNS personalizado para conectar tus clientes o aplicaciones de base 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 AC 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 de 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 una SAN personalizada, 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 por el ID del proyecto en el que creaste tu CA_POOL_ID. Este proyecto puede ser el mismo o diferente del que quieres crear tu instancia de Cloud SQL.
  • REGION por la región en la que creaste el grupo de AC. Debes crear tu instancia en la misma región que el grupo de AC.
  • CA_POOL_ID por el ID del grupo de AC 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 bien 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 poder 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 de DNS privada 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 use 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 la 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 de DNS personalizado como el nombre de host y habilita la verificación de identidad del servidor en tu cliente.

Por ejemplo, cuando uses el cliente psql, especifica la marca sslmode=verify-full. Otros controladores de clientes 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 permitir que Cloud DNS se comunique con sistemas locales. Para obtener más información sobre esta configuración, consulta Cómo conectarse desde una fuente externa y Cómo configurar DNS para sistemas locales.

Limitaciones

  • No puedes agregar más de tres nombres de DNS como valores de SAN personalizados al certificado del 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, como se especifica en la RFC 1034.
  • Solo puedes especificar valores de SAN personalizados para instancias de CUSTOMER_MANAGED_CAS_CA.

¿Qué sigue?