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:
- Crea una instancia configurada con una AC administrada por el cliente.
- 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.
- Determina la dirección IP de la instancia.
- Crea registros DNS personalizados para tu instancia.
- 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 elenum
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
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:
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
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.
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 registroTXT
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 DNSprod-db.mycompany.example.com
. Si la dirección IP de la instancia en la red de tu empresa es192.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
- Crea un registro
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
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 permitetest.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?
- Administra certificados SSL/TLS en la instancia de Cloud SQL.
- Obtén más información sobre cómo se maneja la encriptación en Google Cloud.
- Conéctate a la instancia de Cloud SQL mediante certificados SSL/TLS.
- Obtén más información sobre cómo PostgreSQL usa certificados SSL/TLS.