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 verwenden möchten, um eine Verbindung zu einer Cloud SQL-Instanz herzustellen, konfigurieren Sie einen benutzerdefinierten alternativen Betreffnamen (Subject Alternative Name, SAN). Sie können einen benutzerdefinierten 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. Durch diese Anpassung können Sie den benutzerdefinierten DNS-Namen sicher mit der Hostnamenvalidierung 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 des Cloud SQL Auth-Proxys.

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 mit dem benutzerdefinierten DNS-Namen eine Verbindung zur Instanz her.

Hinweise

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

Wenn Sie eine neue Cloud SQL-Instanz erstellen, muss für den Server-CA-Modus auch eine vom Kunden verwaltete Zertifizierungsstelle (Certificate Authority, CA) verwendet werden, damit benutzerdefinierte SANs verwendet werden können.

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 dasselbe sein wie das Projekt, in dem Sie Ihre Cloud SQL-Instanz erstellen möchten, oder ein anderes.
  • 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.
  • Ersetzen Sie CA_POOL_ID durch die ID des von Ihnen erstellten CA-Pools.
  • CUSTOM_DNS_NAME mit bis zu drei benutzerdefinierten DNS-Namen, die durch Kommas getrennt sind und zwischen den Werten keine Leerzeichen enthalten. 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, die bereits benutzerdefinierte SAN-Werte hat, müssen Sie die vorhandenen benutzerdefinierten SAN-Werte angeben, da sie sonst ersetzt werden.

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, die durch Kommas getrennt sind und zwischen den Werten keine Leerzeichen enthalten. Beispiel: develop.example.com,new-test.example.com,production.example.com

Alle benutzerdefinierten SAN-Werte aus einer Instanz entfernen

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 Zugriff auf private Dienste, Private Service Connect oder beides konfiguriert ist.

  3. Einer von Ihrer Anwendung verwendeten DNS-Zone zwei DNS-Einträge hinzufügen Sie können einen DNS-Server verwenden, den Sie selbst verwalten, oder die private Cloud DNS-Zone, die von Ihrer Anwendung verwendet wird.

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

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

    Der Verbindungsstring für Ihre Instanz ist beispielsweise 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 ist, 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ätsprüfung in Ihrem Client.

Wenn Sie beispielsweise den psql-Client verwenden, geben Sie das Flag sslmode=verify-full an. Andere PostgreSQL-Clienttreiber haben ähnliche Konfigurationsflags.

Wenn Sie von einem externen Netzwerk aus eine Verbindung zu einer privaten Cloud SQL-Instanz herstellen, müssen Sie Ihre Cloud SQL-Instanz und ihr VPC-Netzwerk (Virtual Private Cloud) so konfigurieren, dass externe Verbindungen zugelassen werden und Cloud DNS mit lokalen Systemen kommunizieren kann. Weitere Informationen zu dieser Konfiguration finden Sie unter Verbindung von einer externen Quelle herstellen und DNS für lokale Systeme konfigurieren.

Beschränkungen

  • Sie können dem Serverzertifikat einer Cloud SQL-Instanz nicht mehr als drei DNS-Namen als benutzerdefinierte SAN-Werte hinzufügen.
  • Ein DNS-Name, den Sie dem Zertifikat als benutzerdefinierten SAN-Wert für eine Instanz hinzufügen können, darf maximal 253 Zeichen lang sein.
  • Die DNS-Namen, die Sie dem Zertifikat für eine Instanz hinzufügen, dürfen keine Platzhalterzeichen (*) oder nachgestellte Punkte enthalten. test.example.com. ist beispielsweise nicht zulässig.
  • Die DNS-Namen müssen gemäß RFC 1034 gültig sein.
  • Sie können benutzerdefinierte SAN-Werte nur für CUSTOMER_MANAGED_CAS_CA-Instanzen angeben.

Nächste Schritte