Configurare un nome DNS personalizzato per un'istanza Cloud SQL

Questa pagina descrive come configurare un nome di sistema di nomi di dominio personalizzato (DNS) per l'istanza Cloud SQL.

Panoramica

Puoi configurare un'istanza Cloud SQL in modo che le tue applicazioni possano connettersi utilizzando un nome DNS personalizzato gestito dalla tua organizzazione. Se vuoi utilizzare un nome DNS personalizzato per connetterti a un'istanza Cloud SQL anziché un indirizzo IP, configura un nome alternativo soggetto (SAN) personalizzato. Puoi configurare una SAN personalizzata quando crei o aggiorni un'istanza.

Quando aggiungi un nome DNS personalizzato come configurazione SAN personalizzata all'istanza, Cloud SQL inserisce il nome DNS personalizzato nel campo SAN del certificato del server dell'istanza. Questa personalizzazione consente di utilizzare il nome DNS personalizzato con la convalida del nome host in modo sicuro. Puoi aggiungere un elenco separato da virgole di massimo tre nomi DNS personalizzati alla configurazione SAN personalizzata. Per motivi di sicurezza, puoi utilizzare una configurazione SAN personalizzata solo per le istanze che configuri con CUSTOMER_MANAGED_CAS_CA come modalità CA del server.

Dopo aver configurato il nome DNS personalizzato per l'istanza, puoi utilizzarlo per connettere i client o le applicazioni di database, inclusi i connettori dei linguaggi Cloud SQL e il proxy di autenticazione Cloud SQL.

Flusso di lavoro

Per configurare un nome DNS personalizzato per un'istanza:

  1. Crea un'istanza configurata con l'autorità di certificazione gestita dal cliente.
  2. Aggiungi valori SAN personalizzati all'istanza. I valori SAN personalizzati vengono inseriti nel campo SAN del certificato del server dell'istanza.
  3. Determina l'indirizzo IP dell'istanza.
  4. Crea record DNS personalizzati per l'istanza.
  5. Connettiti all'istanza utilizzando il nome DNS personalizzato.

Prima di iniziare

Prima di configurare un nome DNS personalizzato per l'istanza, assicurati di disporre delle autorizzazioni e dei ruoli richiesti.

Se stai creando una nuova istanza Cloud SQL, per utilizzare SAN personalizzate, la tua istanza deve utilizzare anche un'autorità di certificazione (CA) gestita dal cliente per la modalità CA del server.

Creare un'istanza con valori SAN personalizzati

Per creare un'istanza con valori SAN personalizzati, utilizza il seguente 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

Esegui le seguenti sostituzioni:

  • INSTANCE_NAME con il nome dell'istanza Cloud SQL che vuoi creare.
  • DATABASE_VERSION con il enum della versione dell'istanza Cloud SQL che vuoi creare.
  • PROJECT_ID con l'ID del progetto in cui hai intenzione di creare le istanze Cloud SQL.
  • PROJECT_ID_CAS con l'ID del progetto in cui hai creato il tuo CA_POOL_ID. Questo progetto potrebbe essere uguale o diverso da quello in cui vuoi creare l'istanza Cloud SQL.
  • REGION con la regione in cui hai creato il pool di CA. Devi creare l'istanza nella stessa regione del pool di CA.
  • CA_POOL_ID con l'ID del pool di CA che hai creato.
  • CUSTOM_DNS_NAME con fino a tre nomi DNS personalizzati, separati da virgole senza spazi tra i valori. Ad esempio, develop.example.com,test.example.com,production.example.com.

Aggiungere o aggiornare i valori SAN personalizzati per un'istanza

Per aggiungere o aggiornare i valori SAN personalizzati per un'istanza esistente:

gcloud

gcloud sql instances patch INSTANCE_NAME \
  --custom-subject-alternative-names=CUSTOM_DNS_NAME
Attenzione: se stai aggiornando un'istanza che ha già valori SAN personalizzati, specifica i valori SAN personalizzati esistenti o i valori esistenti verranno sostituiti.

Esegui le seguenti sostituzioni:

  • INSTANCE_NAME con il nome dell'istanza Cloud SQL da aggiornare.
  • CUSTOM_DNS_NAME con fino a tre nomi DNS personalizzati, separati da virgole senza spazi tra i valori. Ad esempio, develop.example.com,new-test.example.com,production.example.com.

Cancellare tutti i valori SAN personalizzati da un'istanza

Per cancellare tutti i valori SAN personalizzati da un'istanza:

gcloud

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

Sostituisci INSTANCE_NAME con il nome dell'istanza Cloud SQL che vuoi aggiornare.

Crea record DNS personalizzati

Prima di poter connetterti all'istanza utilizzando il nome DNS personalizzato con i tuoi client e le tue applicazioni, configura la mappatura tra il nome DNS e l'indirizzo IP. Questa mappatura è nota come risoluzione DNS. Se esegui la connessione in privato, crea il record DNS in una zona DNS privata nella rete Virtual Private Cloud (VPC) corrispondente.

Per creare record DNS personalizzati per l'istanza:

  1. Recupera l'indirizzo IP della tua istanza. Esegui questo comando:

    gcloud sql instances describe INSTANCE_NAME \
     --project=PROJECT_ID

    Esegui le seguenti sostituzioni:

    • INSTANCE_NAME: il nome dell'istanza Cloud SQL
    • PROJECT_ID: l'ID o il numero di progetto del Google Cloud progetto che contiene l'istanza
  2. Nella risposta, cerca il campo ipAddresses:.

    Ad esempio:

    ipAddresses:
    - ipAddress: 192.0.2.4
      type: PRIVATE
    

    Puoi recuperare l'indirizzo IP privato di un'istanza configurata per accesso privato ai servizi, Private Service Connect o entrambi.

  3. Aggiungi due record DNS a una zona DNS utilizzata dalla tua applicazione. Puoi utilizzare un server DNS che gestisci autonomamente o la zona privata Cloud DNS utilizzata dalla tua applicazione.

    • Crea un record A per l'indirizzo IP dell'istanza
    • Crea un record TXT contenente il nome di connessione dell'istanza.

    I client di database standard utilizzano il record A per cercare l'indirizzo IP per effettuare la connessione. I connettori dei linguaggi Cloud SQL e il proxy di autenticazione Cloud SQL utilizzano il record TXT per cercare il nome della connessione dell'istanza.

    Ad esempio, la stringa di connessione per l'istanza è my-project:region:my-instance, ma vuoi connetterti utilizzando il nome DNS prod-db.mycompany.example.com. Se l'indirizzo IP dell'istanza sulla rete aziendale è 192.0.2.4, crea i seguenti record 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
    

Connettiti a un'istanza utilizzando un nome DNS personalizzato

Quando ti connetti all'istanza Cloud SQL per PostgreSQL, configura il nome DNS personalizzato come nome host e attiva la verifica dell'identità del server nel client.

Ad esempio, quando utilizzi il client psql, specifica il flag sslmode=verify-full. Altri driver client PostgreSQL hanno flag di configurazione simili.

Se ti connetti a un'istanza Cloud SQL privata da una rete esterna, devi configurare l'istanza Cloud SQL e la relativa rete Virtual Private Cloud (VPC) per consentire le connessioni esterne e consentire a Cloud DNS di comunicare con i sistemi on-premise. Per ulteriori informazioni su questa configurazione, consulta Eseguire la connessione da un'origine esterna e Configurare il DNS per i sistemi on-premise.

Limitazioni

  • Non puoi aggiungere più di tre nomi DNS come valori SAN personalizzati al certificato del server di un'istanza Cloud SQL.
  • La lunghezza massima di un nome DNS che puoi aggiungere al certificato come valore SAN personalizzato per un'istanza è di 253 caratteri.
  • I nomi DNS che aggiungi al certificato di un'istanza non possono contenere caratteri jolly (*) o punti finali. Ad esempio, test.example.com. non è consentito.
  • I nomi DNS devono essere validi, come specificato da RFC 1034.
  • Puoi specificare valori SAN personalizzati solo per le istanze CUSTOMER_MANAGED_CAS_CA.

Passaggi successivi