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:
- Erstellen Sie eine Instanz, die mit einer vom Kunden verwalteten Zertifizierungsstelle konfiguriert ist.
- Fügen Sie der Instanz benutzerdefinierte SAN-Werte hinzu. Die benutzerdefinierten SAN-Werte werden in das SAN-Feld des Serverzertifikats der Instanz eingefügt.
- Ermitteln Sie die IP-Adresse der Instanz.
- Erstellen Sie benutzerdefinierte DNS-Einträge für Ihre Instanz.
- 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 dieenum
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
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:
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
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.
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 denTXT
-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-Namenprod-db.mycompany.example.com
herstellen. Wenn die IP-Adresse der Instanz in Ihrem Unternehmensnetzwerk192.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
- Erstellen Sie einen
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
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
- SSL/TLS auf Ihrer Cloud SQL-Instanz verwalten
- Weitere Informationen zur Verschlüsselung in Google Cloud.
- SSL/TLS-Zertifikate zur Verbindung mit Ihrer Cloud SQL-Instanz
- SSL/TLS mit PostgreSQL verwenden