Benutzerdefinierten DNS-Namen für eine Cloud SQL-Instanz einrichten

Auf dieser Seite wird beschrieben, wie Sie einen benutzerdefinierten DNS-Namen (Domain Name System) für Ihre Cloud SQL-Instanz einrichten.

Übersicht

Sie können eine Cloud SQL-Instanz so konfigurieren, dass Ihre Anwendungen eine Verbindung über einen benutzerdefinierten DNS-Namen herstellen können, der von Ihrer Organisation verwaltet wird. Wenn Sie anstelle einer IP-Adresse einen benutzerdefinierten DNS-Namen für die Verbindung zu einer Cloud SQL-Instanz verwenden möchten, konfigurieren Sie einen benutzerdefinierten Subject Alternative Name (SAN). Sie können ein benutzerdefiniertes SAN konfigurieren, wenn Sie eine Instanz erstellen oder aktualisieren.

Wenn Sie Ihrer Instanz einen benutzerdefinierten DNS-Namen als benutzerdefinierte SAN-Konfiguration hinzufügen, fügt Cloud SQL den benutzerdefinierten DNS-Namen in das SAN-Feld des Serverzertifikats der Instanz ein. Mit dieser Anpassung können Sie den benutzerdefinierten DNS-Namen mit Hostnamenüberprüfung sicher verwenden. Sie können der benutzerdefinierten SAN-Konfiguration eine durch Kommas getrennte Liste mit bis zu drei benutzerdefinierten DNS-Namen hinzufügen. Aus Sicherheitsgründen können Sie eine benutzerdefinierte SAN-Konfiguration nur für Instanzen verwenden, die Sie mit CUSTOMER_MANAGED_CAS_CA als Server-CA-Modus konfigurieren.

Nachdem Sie den benutzerdefinierten DNS-Namen für Ihre Instanz konfiguriert haben, können Sie ihn verwenden, um Ihre Datenbankclients oder ‑anwendungen zu verbinden, einschließlich Cloud SQL Language Connectors und Cloud SQL Auth-Proxy.

Workflow

So richten Sie einen benutzerdefinierten DNS-Namen für eine Instanz ein:

  1. Erstellen Sie eine Instanz, die mit einer vom Kunden verwalteten Zertifizierungsstelle konfiguriert ist.
  2. Fügen Sie der Instanz benutzerdefinierte SAN-Werte hinzu. Die benutzerdefinierten SAN-Werte werden in das SAN-Feld des Serverzertifikats der Instanz eingefügt.
  3. Ermitteln Sie die IP-Adresse der Instanz.
  4. Erstellen Sie benutzerdefinierte DNS-Einträge für Ihre Instanz.
  5. Stellen Sie über den benutzerdefinierten DNS-Namen eine Verbindung zur Instanz her.

Hinweise

Bevor Sie einen benutzerdefinierten DNS-Namen für Ihre Instanz einrichten, müssen Sie die erforderlichen Rollen und Berechtigungen haben.

Wenn Sie eine neue Cloud SQL-Instanz erstellen, muss für die Verwendung eines benutzerdefinierten SAN auch eine vom Kunden verwaltete Zertifizierungsstelle (Certificate Authority, CA) für den Server-CA-Modus verwendet werden.

Instanz mit benutzerdefinierten SAN-Werten erstellen

Verwenden Sie den folgenden gcloud sql instances create-Befehl, um eine Instanz mit benutzerdefinierten SAN-Werten zu erstellen:

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

Ersetzen Sie die folgenden Werte:

  • INSTANCE_NAME durch den Namen der Cloud SQL-Instanz, die Sie erstellen möchten.
  • DATABASE_VERSION durch die enum der Version der Cloud SQL-Instanz, die Sie erstellen möchten.
  • PROJECT_ID durch die ID des Projekts, in dem Sie Ihre Cloud SQL-Instanzen erstellen möchten.
  • PROJECT_ID_CAS durch die ID des Projekts, in dem Sie Ihre CA_POOL_ID erstellt haben. Dieses Projekt kann mit dem Projekt übereinstimmen, in dem Sie die Cloud SQL-Instanz erstellen möchten, oder sich davon unterscheiden.
  • REGION durch die Region, in der Sie den CA-Pool erstellt haben. Sie müssen Ihre Instanz in derselben Region wie den CA-Pool erstellen.
  • CA_POOL_ID durch die ID des von Ihnen erstellten CA-Pools.
  • CUSTOM_DNS_NAME mit bis zu drei benutzerdefinierten DNS-Namen, durch Kommas getrennt und ohne Leerzeichen zwischen den Werten. Beispiel: develop.example.com,test.example.com,production.example.com

Benutzerdefinierte SAN-Werte für eine Instanz hinzufügen oder aktualisieren

So fügen Sie einer vorhandenen Instanz benutzerdefinierte SAN-Werte hinzu oder aktualisieren sie:

gcloud

gcloud sql instances patch INSTANCE_NAME \
  --custom-subject-alternative-names=CUSTOM_DNS_NAME
Achtung: Wenn Sie eine Instanz aktualisieren, für die bereits benutzerdefinierte SAN-Werte vorhanden sind, geben Sie die vorhandenen benutzerdefinierten SAN-Werte an. Andernfalls werden die vorhandenen Werte ersetzt.

Ersetzen Sie die folgenden Werte:

  • INSTANCE_NAME durch den Namen der Cloud SQL-Instanz, die Sie aktualisieren möchten.
  • CUSTOM_DNS_NAME mit bis zu drei benutzerdefinierten DNS-Namen, kommagetrennt und ohne Leerzeichen zwischen den Werten. Beispiel: develop.example.com,new-test.example.com,production.example.com

Alle benutzerdefinierten SAN-Werte aus einer Instanz löschen

So löschen Sie alle benutzerdefinierten SAN-Werte aus einer Instanz:

gcloud

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

Ersetzen Sie INSTANCE_NAME durch den Namen der Cloud SQL-Instanz, die Sie aktualisieren möchten.

Benutzerdefinierte DNS-Einträge erstellen

Bevor Sie mit Ihren Clients und Anwendungen über den benutzerdefinierten DNS-Namen eine Verbindung zur Instanz herstellen können, müssen Sie die Zuordnung zwischen dem DNS-Namen und der IP-Adresse einrichten. Diese Zuordnung wird als DNS-Auflösung bezeichnet. Wenn Sie eine private Verbindung herstellen, erstellen Sie den DNS-Eintrag in einer privaten DNS-Zone im entsprechenden VPC-Netzwerk (Virtual Private Cloud).

So erstellen Sie benutzerdefinierte DNS-Einträge für Ihre Instanz:

  1. Rufen Sie die IP-Adresse für Ihre Instanz ab. Führen Sie dazu diesen Befehl aus:

    gcloud sql instances describe INSTANCE_NAME \
     --project=PROJECT_ID

    Ersetzen Sie die folgenden Werte:

    • INSTANCE_NAME: Der Name der Cloud SQL-Instanz.
    • PROJECT_ID: die ID oder Projektnummer des Google Cloud Projekts, das die Instanz enthält
  2. Suchen Sie in der Antwort nach dem Feld ipAddresses:.

    Beispiel:

    ipAddresses:
    - ipAddress: 192.0.2.4
      type: PRIVATE
    

    Sie können die private IP-Adresse für eine Instanz abrufen, die für den Zugriff auf private Dienste, Private Service Connect oder beides konfiguriert ist.

  3. Fügen Sie einer DNS-Zone, die von Ihrer Anwendung verwendet wird, zwei DNS-Einträge hinzu. Sie können einen von Ihnen verwalteten DNS-Server oder die private Cloud DNS-Zone verwenden, die von Ihrer Anwendung verwendet wird.

    • Erstellen Sie einen A-Eintrag für die IP-Adresse der Instanz.
    • Erstellen Sie einen TXT-Eintrag mit dem Namen der Instanzverbindung.

    Standarddatenbankclients verwenden den A-Eintrag, um die IP-Adresse für die Verbindung abzurufen. Cloud SQL Language Connectors und der Cloud SQL Auth-Proxy verwenden den TXT-Eintrag, um den Namen der Instanzverbindung abzurufen.

    Angenommen, der Verbindungsstring für Ihre Instanz lautet my-project:region:my-instance, Sie möchten aber eine Verbindung über den DNS-Namen prod-db.mycompany.example.com herstellen. Wenn die IP-Adresse der Instanz in Ihrem Unternehmensnetzwerk 192.0.2.4 lautet, erstellen Sie die folgenden DNS-Einträge:

    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
    

Verbindung zu einer Instanz über einen benutzerdefinierten DNS-Namen herstellen

Wenn Sie eine Verbindung zur Cloud SQL for PostgreSQL-Instanz herstellen, konfigurieren Sie den benutzerdefinierten DNS-Namen als Hostnamen und aktivieren Sie die Serveridentitätsbestätigung in Ihrem Client.

Geben Sie beispielsweise beim Verwenden des psql-Clients das Flag sslmode=verify-full an. Andere PostgreSQL-Client-Treiber haben ähnliche Konfigurations-Flags.

Wenn Sie eine Verbindung von einem externen Netzwerk zu einer privaten Cloud SQL-Instanz herstellen, müssen Sie Ihre Cloud SQL-Instanz und das zugehörige VPC-Netzwerk (Virtual Private Cloud) so konfigurieren, dass externe Verbindungen zulässig sind und Cloud DNS mit lokalen Systemen kommunizieren kann. Weitere Informationen zu dieser Konfiguration finden Sie unter Über eine externe Quelle verbinden und DNS für lokale Systeme konfigurieren.

Beschränkungen

  • Dem Serverzertifikat einer Cloud SQL-Instanz können nicht mehr als drei DNS-Namen als benutzerdefinierte SAN-Werte hinzugefügt werden.
  • Die maximale Länge eines DNS-Namens, den Sie dem Zertifikat als benutzerdefinierten SAN-Wert für eine Instanz hinzufügen können, beträgt 253 Zeichen.
  • Die DNS-Namen, die Sie dem Zertifikat für eine Instanz hinzufügen, dürfen keine Platzhalterzeichen (*) oder Endpunkte enthalten. test.example.com. ist beispielsweise nicht zulässig.
  • Die DNS-Namen müssen gemäß RFC 1034 gültig sein.
  • Benutzerdefinierte SAN-Werte können nur für CUSTOMER_MANAGED_CAS_CA-Instanzen angegeben werden.

Nächste Schritte