Auf dieser Seite wird beschrieben, wie Sie die SSL/TLS-Verschlüsselung für eine Instanz erzwingen, um sicherzustellen, dass alle Verbindungen verschlüsselt sind. Sie können auch mehr dazu erfahren, wie Cloud SQL selbstverwaltete SSL/TLS-Zertifikate verwendet, um eine sichere Verbindung zu Cloud SQL-Instanzen herzustellen
Übersicht
Cloud SQL generiert automatisch ein Serverzertifikat, wenn Sie eine Instanz erstellen. Wir empfehlen, alle Verbindungen zur Verwendung von SSL/TLS zu zwingen.
Wenn Sie die Client-/Serveridentität mithilfe von SSL/TLS-Zertifikaten validieren möchten, erstellen Sie ein Clientzertifikat und laden Sie die Zertifikate auf Ihren MySQL-Clienthostcomputer herunter. Wenn Sie für eine Instanz SSL erzwingen, muss die Instanz neu gestartet werden. Möglicherweise ist auch ein Neustart erforderlich, nachdem Sie die SSL/TLS-Zertifikate geändert haben. Falls ein Neustart erforderlich ist, startet Cloud SQL die Instanz automatisch neu. Der Neustart einer Instanz kann zu Ausfallzeiten führen.SSL/TLS-Verschlüsselung erzwingen
Sie können die Einstellung SSL-Modus verwenden, um die SSL-Verschlüsselung zu erzwingen:
Sowohl Nicht-SSL als auch Nicht-TLS zulassen und SSL/TLS-Verbindungen herstellen. Das Clientzertifikat wird für SSL/TLS-Verbindungen nicht geprüft. Das ist die Standardeinstellung.
Erlaubt nur Verbindungen, die mit SSL/TLS verschlüsselt wurden. Das Clientzertifikat wird für SSL-Verbindungen nicht geprüft.
- Erlaubt nur Verbindungen, die mit SSL/TLS und mit gültigen Client-Zertifikaten verschlüsselt wurden.
Wenn Sie für Ihre Cloud SQL-Instanz Nicht-SSL/Nicht-TLS- und SSL/TLS-Verbindungen zulassen auswählen, werden SSL-/TLS-Verbindungen sowie unverschlüsselte und unsichere Verbindungen akzeptiert. Wenn Sie nicht für alle Verbindungen SSL/TLS benötigen, sind unverschlüsselte Verbindungen weiterhin zulässig. Es wird daher dringend empfohlen, SSL für alle Verbindungen zu erzwingen, wenn über öffentliche IP-Adressen auf Ihre Instanz zugegriffen wird.
Sie können SSL/TLS-Zertifikate verwenden, um eine direkte Verbindung zu Instanzen herzustellen, oder Sie können über den Cloud SQL Auth Proxy oder Cloud SQL-Connectors eine Verbindung herstellen. Wenn Sie eine Verbindung über Cloud SQL Auth Proxy oder Cloud SQL Connectors herstellen, werden die Verbindungen automatisch mit SSL/TLS verschlüsselt. Mit Cloud SQL Auth Proxy und Cloud SQL Connectors werden Client- und Server-Identitäten auch unabhängig von der Einstellung des SSL-Modus automatisch überprüft.
So aktivieren Sie die Erfordernis von SSL/TLS:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
- Wählen Sie den Tab Sicherheit aus.
- Folgende Optionen sind verfügbar:
- Unverschlüsselten Netzwerktraffic zulassen (nicht empfohlen)
- Nur SSL-Verbindungen zulassen. Diese Option lässt nur Verbindungen mit SSL/TLS-Verschlüsselung zu. Zertifikate werden nicht validiert.
- Vertrauenswürdige Clientzertifikate erforderlich. Diese Option lässt nur Verbindungen von Clients zu, die ein gültiges Clientzertifikat verwenden und SSL-verschlüsselt sind.
gcloud
gcloud sql instances patch INSTANCE_NAME \ --ssl-mode=SSL_ENFORCEMENT_MODE
Ersetzen Sie SSL_ENFORCEMENT_MODE durch eine der folgenden Optionen:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: Lässt Nicht-SSL-/Nicht-TLS- und SSL/TLS-Verbindungen zu. Bei SSL-Verbindungen wird das Clientzertifikat nicht geprüft. Dies ist der Standardwert.ENCRYPTED_ONLY
: Erlaubt nur Verbindungen, die mit SSL/TLS verschlüsselt wurden. Das Clientzertifikat wird für SSL-Verbindungen nicht geprüft.TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: Erlaubt nur Verbindungen, die mit SSL/TLS und mit gültigen Client-Zertifikaten verschlüsselt wurden.
Weitere Informationen finden Sie unter Einstellungen für Cloud SQL for MySQL.
Terraform
Verwenden Sie zum Erzwingen der SSL/TLS-Verschlüsselung eine Terraform-Ressource:
Änderungen anwenden
Führen Sie die Schritte in den folgenden Abschnitten aus, um Ihre Terraform-Konfiguration auf ein Google Cloud -Projekt anzuwenden.
Cloud Shell vorbereiten
- Rufen Sie Cloud Shell auf.
-
Legen Sie das Standardprojekt Google Cloud fest, auf das Sie Ihre Terraform-Konfigurationen anwenden möchten.
Sie müssen diesen Befehl nur einmal pro Projekt und in jedem beliebigen Verzeichnis ausführen.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Umgebungsvariablen werden überschrieben, wenn Sie in der Terraform-Konfigurationsdatei explizite Werte festlegen.
Verzeichnis vorbereiten
Jede Terraform-Konfigurationsdatei muss ein eigenes Verzeichnis haben (auch als Stammmodul bezeichnet).
-
Erstellen Sie in Cloud Shell ein Verzeichnis und eine neue Datei in diesem Verzeichnis. Der Dateiname muss die Erweiterung
.tf
haben, z. B.main.tf
. In dieser Anleitung wird die Datei alsmain.tf
bezeichnet.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Wenn Sie einer Anleitung folgen, können Sie den Beispielcode in jedem Abschnitt oder Schritt kopieren.
Kopieren Sie den Beispielcode in das neu erstellte
main.tf
.Kopieren Sie optional den Code aus GitHub. Dies wird empfohlen, wenn das Terraform-Snippet Teil einer End-to-End-Lösung ist.
- Prüfen und ändern Sie die Beispielparameter, die auf Ihre Umgebung angewendet werden sollen.
- Speichern Sie die Änderungen.
-
Initialisieren Sie Terraform. Dies ist nur einmal für jedes Verzeichnis erforderlich.
terraform init
Fügen Sie optional die Option
-upgrade
ein, um die neueste Google-Anbieterversion zu verwenden:terraform init -upgrade
Änderungen anwenden
-
Prüfen Sie die Konfiguration und prüfen Sie, ob die Ressourcen, die Terraform erstellen oder aktualisieren wird, Ihren Erwartungen entsprechen:
terraform plan
Korrigieren Sie die Konfiguration nach Bedarf.
-
Wenden Sie die Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
Warten Sie, bis Terraform die Meldung „Apply complete“ anzeigt.
- Öffnen Sie Ihr Google Cloud Projekt, um die Ergebnisse aufzurufen. Rufen Sie in der Google Cloud Console Ihre Ressourcen in der Benutzeroberfläche auf, um sicherzustellen, dass Terraform sie erstellt oder aktualisiert hat.
Änderungen löschen
So löschen Sie das Projekt:
- Um den Löschschutz zu deaktivieren, setzen Sie in der Terraform-Konfigurationsdatei das Argument
deletion_protection
auffalse
.deletion_protection = "false"
- Wenden Sie die aktualisierte Terraform-Konfiguration an. Führen Sie dazu den folgenden Befehl aus und geben Sie
yes
an der Eingabeaufforderung ein:terraform apply
-
Entfernen Sie Ressourcen, die zuvor mit Ihrer Terraform-Konfiguration angewendet wurden, indem Sie den folgenden Befehl ausführen und
yes
an der Eingabeaufforderung eingeben:terraform destroy
REST Version 1
-
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- SSL_ENFORCEMENT_MODE: Verwenden Sie eine der folgenden Optionen:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: Lässt Nicht-SSL-/Nicht-TLS- und SSL/TLS-Verbindungen zu. Bei SSL-Verbindungen wird das Clientzertifikat nicht geprüft. Dies ist der Standardwert.ENCRYPTED_ONLY
: Erlaubt nur Verbindungen, die mit SSL/TLS verschlüsselt wurden.TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: Erlaubt nur Verbindungen, die mit SSL/TLS und mit gültigen Client-Zertifikaten verschlüsselt wurden.
- INSTANCE_ID: die Instanz-ID
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
REST v1beta4
-
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: die Projekt-ID
- SSL_ENFORCEMENT_MODE: Verwenden Sie eine der folgenden Optionen:
ALLOW_UNENCRYPTED_AND_ENCRYPTED
: Lässt Nicht-SSL-/Nicht-TLS- und SSL/TLS-Verbindungen zu. Bei SSL-Verbindungen wird das Clientzertifikat nicht geprüft. Dies ist der Standardwert.ENCRYPTED_ONLY
: Erlaubt nur Verbindungen, die mit SSL/TLS verschlüsselt wurden.TRUSTED_CLIENT_CERTIFICATE_REQUIRED
: Erlaubt nur Verbindungen, die mit SSL/TLS und mit gültigen Client-Zertifikaten verschlüsselt wurden.
- INSTANCE_ID: die Instanz-ID
HTTP-Methode und URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON-Text anfordern:
{ "settings": { "ipConfiguration": {"sslMode": "SSL_ENFORCEMENT_MODE"} } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
Serverzertifikate
Cloud SQL generiert automatisch ein Serverzertifikat, wenn Sie eine Instanz erstellen. Solange das Serverzertifikat gültig ist, müssen Sie keine Schritte zum Verwalten Ihres Serverzertifikats ausführen. Mit Cloud SQL können Sie zwischen drei verschiedenen Zertifizierungsstellenhierarchien (Certificate Authority, CA) wählen. Die ausgewählte CA-Hierarchie wird zum Server-CA-Modus der Instanz. Wenn Sie die CA pro Instanz als Server-CA-Modus für Ihre Instanz verwenden, haben die Serverzertifikate ein Ablaufdatum von 10 Jahren. Wenn Sie die gemeinsame CA oder die vom Kunden verwaltete CA als Server-CA-Modus Ihrer Instanz verwenden, hat das Serverzertifikat ein Ablaufdatum von einem Jahr*. Nach dem Ablaufdatum ist das Serverzertifikat nicht mehr gültig und Clients können mit diesem Zertifikat keine sichere Verbindung mehr zu Ihrer Instanz herstellen. Wenn ein Client so konfiguriert ist, dass er die Zertifizierungsstelle oder den Hostnamen im Serverzertifikat überprüft, schlagen die Verbindungen dieses Clients zu Cloud SQL-Instanzen mit abgelaufenen Serverzertifikaten fehl. Um Unterbrechungen von Clientverbindungen zu vermeiden, sollten Sie das Serverzertifikat rotieren, bevor es abläuft. Sie werden benachrichtigt, wenn das Serverzertifikat bald abläuft. Die Benachrichtigungen werden an den folgenden Tagen vor dem Ablaufdatum gesendet: 90, 30, 10, 2 und 1.
* Bei einer vom Kunden verwalteten CA kann das Ablaufdatum Ihres Serverzertifikats kürzer als ein Jahr sein, wenn Sie für den Gültigkeitszeitraum Ihrer CA ein kürzeres Ablaufdatum ausgewählt haben.
Serverzertifikate auflisten und erstellen
Wenn Sie die Details Ihrer Serverzertifikate in der Google Cloud Console aufrufen möchten, rufen Sie die Seite Verbindungen auf und klicken Sie auf den Tab Sicherheit.
In der Zertifikatstabelle sehen Sie die folgenden Details:
- Zertifikatsstatus: „Bevorstehend“, „Aktiv“ oder „Vorherig“
- Bevorstehend: Das Zertifikat ist verfügbar, aber nicht aktiv. Verwenden Sie die Rotationsprozedur, um das Zertifikat zu aktivieren.
- Aktiv: Das Zertifikat wird verwendet.
- Vorherig: Das Zertifikat wird nicht mehr verwendet. Verwenden Sie das Rollback-Verfahren, um das Zertifikat zu aktivieren.
- Erstellt: Das Datum und die Uhrzeit, zu der das Zertifikat erstellt wurde
- Ablaufdatum: Das Datum und die Uhrzeit, an dem das Zertifikat abläuft
Bevor das aktive Zertifikat abläuft, können Sie manuell ein neues Zertifikat erstellen.
Console
Für Instanzen, die selbstsignierte Serverzertifikate verwenden (CA pro Instanz):
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
- Wählen Sie den Tab Sicherheit aus.
- Gehen Sie zum Abschnitt Server-CA-Zertifikate verwalten.
- Maximieren Sie Zertifikate verwalten.
- Klicken Sie auf Neues CA-Zertifikat erstellen.
Das neue Server-CA-Zertifikat wird im Bereich Bevorstehend angezeigt. Wenn Sie sofort zum neuen Server-CA-Zertifikat wechseln möchten, fahren Sie mit der Rotation des Server-CA-Zertifikats fort, indem Sie Ihre Clients aktualisieren und die Rotation abschließen.
Für Instanzen, die von einer gemeinsamen Zertifizierungsstelle ausgestellte Serverzertifikate verwenden:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
- Wählen Sie den Tab Sicherheit aus.
- Gehen Sie zum Abschnitt Serverzertifikate verwalten.
- Maximieren Sie Zertifikate verwalten.
- Klicken Sie auf Serverzertifikat erstellen.
Das neue Serverzertifikat wird im Bereich Bevorstehend angezeigt. Wenn Sie das neue Serverzertifikat sofort verwenden möchten, fahren Sie mit der Rotation des Serverzertifikats fort, indem Sie Ihre Clients aktualisieren und die Rotation abschließen.
gcloud
Für Instanzen, die selbstsignierte Serverzertifikate verwenden (CA pro Instanz):
- Verwenden Sie den Befehl sql ssl server-ca-certs list, um Informationen zum Serverzertifikat abzurufen:
gcloud sql ssl server-ca-certs list \ --instance=INSTANCE_NAME
- Verwenden Sie den Befehl sql ssl server-ca-certs create, um ein Serverzertifikat zu erstellen:
gcloud sql ssl server-ca-certs create \ --instance=INSTANCE_NAME
- Laden Sie die Zertifikatsinformationen in eine lokale PEM-Datei herunter:
gcloud sql ssl server-ca-certs list \ --format="value(cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Aktualisieren Sie alle Ihre Clients so, dass die neuen Informationen verwendet werden. Kopieren Sie hierzu die heruntergeladene Datei auf Ihre Client-Hostcomputer und ersetzen Sie die vorhandenen
server-ca.pem
-Dateien.
Für Instanzen, die von einer gemeinsamen Zertifizierungsstelle ausgestellte Serverzertifikate verwenden:
- Verwenden Sie den Befehl sql ssl server-certs list, um Informationen zum Serverzertifikat abzurufen:
gcloud sql ssl server-certs list \ --instance=INSTANCE_NAME
- Verwenden Sie den Befehl sql ssl server-certs create, um ein Serverzertifikat zu erstellen:
gcloud sql ssl server-certs create \ --instance=INSTANCE_NAME
- Laden Sie die Zertifikatsinformationen in eine lokale PEM-Datei herunter:
gcloud sql ssl server-certs list \ --format="value(ca_cert.cert)" \ --instance=INSTANCE_NAME > \ FILE_PATH/FILE_NAME.pem
- Aktualisieren Sie alle Ihre Clients so, dass die neuen Informationen verwendet werden. Kopieren Sie hierzu die heruntergeladene Datei auf Ihre Client-Hostcomputer und ersetzen Sie die vorhandenen
server-ca.pem
-Dateien.
Terraform
Verwenden Sie zum Bereitstellen von Informationen zum Serverzertifikat als Ausgabe eine Terraform-Datenquelle:
- Fügen Sie Ihrer Terraform-Konfigurationsdatei Folgendes hinzu:
data "google_sql_ca_certs" "ca_certs" { instance = google_sql_database_instance.default.name } locals { furthest_expiration_time = reverse(sort([for k, v in data.google_sql_ca_certs.ca_certs.certs : v.expiration_time]))[0] latest_ca_cert = [for v in data.google_sql_ca_certs.ca_certs.certs : v.cert if v.expiration_time == local.furthest_expiration_time] } output "db_latest_ca_cert" { description = "Latest CA certificate used by the primary database server" value = local.latest_ca_cert sensitive = true }
- Führen Sie den folgenden Befehl aus, um die Datei
server-ca.pem
zu erstellen:terraform output db_latest_ca_cert > server-ca.pem
Clientzertifikate
Neues Clientzertifikat erstellen
Sie können für jede Instanz bis zu zehn Clientzertifikate erstellen. Zum Erstellen von Clientzertifikaten benötigen Sie die IAM-Rolle Cloud SQL Admin
.
Beachten Sie bei Clientzertifikaten Folgendes:
- Wenn Sie den privaten Schlüssel für ein Zertifikat verlieren, müssen Sie einen neuen Schlüssel erstellen. Der private Schlüssel kann nicht wiederhergestellt werden.
- Das Clientzertifikat hat standardmäßig ein Ablaufdatum von 10 Jahren.
- Sie werden nicht benachrichtigt, wenn die Clientzertifikate bald ablaufen.
- Die Cloud SQL-Instanz muss ausgeführt werden, um ein SSL-Zertifikat erstellen zu können.
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Instanznamen, um die Seite Übersicht einer Instanz zu öffnen.
- Klicken Sie im SQL-Navigationsmenü auf Verbindungen.
- Wählen Sie den Tab Sicherheit aus.
- Klicken Sie auf Clientzertifikat erstellen.
- Geben Sie im Dialogfeld Clientzertifikat erstellen einen eindeutigen Namen ein.
- Klicken Sie auf Erstellen.
- Klicken Sie im ersten Abschnitt des Dialogfelds Neues SSL-Zertifikat erstellt auf client-key.pem herunterladen, um den privaten Schlüssel in eine Datei mit dem Namen
client-key.pem
herunterzuladen. - Klicken Sie im zweiten Abschnitt auf client-cert.pem herunterladen, um das Clientzertifikat in eine Datei mit dem Namen
client-cert.pem
herunterzuladen. - Klicken Sie im dritten Abschnitt auf server-ca.pem herunterladen, um das Serverzertifikat in eine Datei mit dem Namen
server-ca.pem
herunterzuladen. - Klicken Sie auf Schließen.
gcloud
Erstellen Sie mit dem Befehl
ssl client-certs create
ein Clientzertifikat:gcloud sql ssl client-certs create CERT_NAME client-key.pem \ --instance=INSTANCE_NAME
Rufen Sie den öffentlichen Schlüssel für das gerade erstellte Zertifikat ab und kopieren Sie ihn mit dem Befehl
ssl client-certs describe
in die Dateiclient-cert.pem
:gcloud sql ssl client-certs describe CERT_NAME \ --instance=INSTANCE_NAME \ --format="value(cert)" > client-cert.pem
Kopieren Sie das Serverzertifikat mit dem Befehl
instances describe
in die Dateiserver-ca.pem
:gcloud sql instances describe INSTANCE_NAME \ --format="value(serverCaCert.cert)" > server-ca.pem
Terraform
Verwenden Sie zum Erstellen eines Clientzertifikats eine Terraform-Ressource:
REST Version 1
Erstellen Sie ein SSL/TLS-Zertifikat. Sein Name darf für diese Instanz nur einmal vorkommen:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- client-cert-name: der Name des Clientzertifikats
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/sslCerts
JSON-Text anfordern:
{ "commonName" : "client-cert-name" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
- Gehen Sie so vor, um den gesamten Zertifikatsinhalt innerhalb der Anführungszeichen (jedoch ohne die Anführungszeichen selbst) aus der Antwort in lokale Dateien zu kopieren:
- Kopieren Sie
serverCaCert.cert
inserver-ca.pem
. - Kopieren Sie
clientCert.cert
inclient-cert.pem
. - Kopieren Sie
certPrivateKey
inclient-key.pem
.
- Kopieren Sie
-
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- activation-policy: die Einstellung der Aktivierungsrichtlinie lautet ALWAYS oder NEVER
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/restart
JSON-Text anfordern:
{ "settings": { "activationPolicy": "activation-policy" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
REST v1beta4
Erstellen Sie ein SSL/TLS-Zertifikat. Sein Name darf für diese Instanz nur einmal vorkommen:
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- client-cert-name: der Name des Clientzertifikats
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts
JSON-Text anfordern:
{ "commonName" : "client-cert-name" }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten in etwa folgende JSON-Antwort erhalten:
- Gehen Sie so vor, um den gesamten Zertifikatsinhalt innerhalb der Anführungszeichen (jedoch ohne die Anführungszeichen selbst) aus der Antwort in lokale Dateien zu kopieren:
- Kopieren Sie
serverCaCert.cert
inserver-ca.pem
. - Kopieren Sie
clientCert.cert
inclient-cert.pem
. - Kopieren Sie
certPrivateKey
inclient-key.pem
.
- Kopieren Sie
-
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- project-id: die Projekt-ID
- instance-id: die Instanz-ID
- activation-policy: die Einstellung der Aktivierungsrichtlinie lautet ALWAYS oder NEVER
HTTP-Methode und URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/restart
JSON-Text anfordern:
{ "settings": { "activationPolicy": "activation-policy" } }
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "PENDING", "user": "[email protected]", "insertTime": "2020-01-20T21:30:35.667Z", "operationType": "RESTART", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
Sie haben nun die folgenden Elemente:
- Ein Serverzertifikat, das als
server-ca.pem
gespeichert ist. - Ein Public-Key-Zertifikat des Clients, das als
client-cert.pem
gespeichert ist. - Einen privaten Schlüssel für den Client, der als
client-key.pem
gespeichert ist.
Je nachdem, welches Tool beim Verbindungsaufbau verwendet wird, werden diese drei Elemente auf unterschiedliche Weise angegeben. Beim Verbindungsaufbau mit dem MySQL-Client sind diese drei Dateien beispielsweise die Werte für die Befehlsoptionen --ssl-ca
, --ssl-cert
bzw. --ssl-key
. Ein Beispiel für eine Verbindung über den MySQL-Client und SSL/TLS finden Sie unter Verbindung zum MySQL-Client herstellen.
Überprüfung der Serveridentität
Die Überprüfung der Serveridentität hängt von der Konfiguration der CA-Hierarchie (Certificate Authority) Ihrer Cloud SQL-Instanz ab.
Bei Instanzen, die eine CA pro Instanz verwenden, wird durch die Überprüfung der CA auch die Serveridentität überprüft, da jede Instanz eine eindeutige CA hat. Bei Instanzen, die eine gemeinsame Zertifizierungsstelle verwenden, ist die Überprüfung des Hostnamens zusammen mit der Überprüfung der Zertifizierungsstelle für die Überprüfung der Serveridentität erforderlich, da Serverzertifizierungsstellen instanzübergreifend verwendet werden.
Wenn Sie eine CA pro Instanz haben, können Sie die Serveridentität nur für Instanzen, die mit Private Service Connect konfiguriert sind, anhand des DNS-Namens überprüfen. Wenn Sie eine gemeinsame Zertifizierungsstelle haben, können Sie die serverbasierte Identitätsüberprüfung anhand des DNS-Namens für alle Arten von Instanzen durchführen, nämlich Private Service Connect-, Private Service Access- und Instanzen mit öffentlicher IP-Adresse.
Wenn Sie eine vom Kunden verwaltete CA verwenden, können Sie die CA-Vertrauenskette prüfen und die serverbasierte Identitätsprüfung auf DNS-Namenbasis für jede Art von Instanz durchführen, die eine vom Kunden verwaltete CA für ihr serverCAmode
verwendet.
Wenn Sie für Ihre Instanz die Option „Vom Kunden verwaltete CA“ auswählen, können Sie benutzerdefinierte DNS-Namen in das Feld „SAN“ des Serverzertifikats einfügen. Weitere Informationen finden Sie unter Benutzerdefiniertes SAN-Feld bearbeiten.
Sie können die für eine Cloud SQL-Instanz konfigurierte CA-Hierarchie in den Instanzdetails einsehen. Weitere Informationen finden Sie unter Instanzinformationen ansehen.
Serveridentitätsbestätigung aktivieren
Wenn Sie „Shared CA“ als Server-CA-Modus Ihrer Cloud SQL-Instanz auswählen oder benutzerdefinierte DNS-Namen mit benutzerdefinierten SAN-Werten einrichten, empfehlen wir, auch die Serveridentitätsüberprüfung zu aktivieren.
Bei Instanzen, die die gemeinsame CA als Server-CA-Modus verwenden, ist der DNS-Name der Instanz im Feld „Subject Alternative Name“ (SAN) des Serverzertifikats enthalten. Sie können diesen DNS-Namen mit der API zum Suchen von Instanzen abrufen und die Antwort als Hostname für die Überprüfung der Serveridentität verwenden. Sie müssen die DNS-Auflösung für den DNS-Namen einrichten.
So aktivieren Sie die Serveridentitätsüberprüfung für eine Instanz, die eine gemeinsame Zertifizierungsstelle verwendet:
Rufen Sie den DNS-Namen ab.
Verwenden Sie den Befehl
gcloud sql instances describe
, um zusammenfassende Informationen zu einer Cloud SQL-Instanz einschließlich des DNS-Namens der Instanz aufzurufen: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
dnsNames:
. Dieses Feld kann mehrere DNS-Namen zurückgeben, die die folgenden Formate haben:Netzwerkkonfiguration Format des DNS-Namens Ebene benennen Private Service Connect oder öffentliche IP-Adresse INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql.goog.
Beispiel:
1a23b4cd5e67.1a2b345c6d27.us-central1.sql.goog.
Instanz Zugriff auf private Dienste INSTANCE_UID.PROJECT_DNS_LABEL.REGION_NAME.sql-psa.goog.
Beispiel:
1a23b4cd5e67.1a2b345c6d27.us-central1.sql-psa.goog.
Instanz
DNS-Eintrag in einer DNS-Zone erstellen Wenn Sie eine private Verbindung herstellen, erstellen Sie den DNS-Eintrag in einer privaten DNS-Zone im entsprechenden VPC-Netzwerk (Virtual Private Cloud).
Wenn Sie eine Verbindung zur Cloud SQL for MySQL-Instanz herstellen, konfigurieren Sie den DNS-Namen als Hostnamen. Aktivieren Sie dann die Serveridentitätsüberprüfung in Ihrem Client.
Wenn Sie beispielsweise den MySQL-Client verwenden, geben Sie das Flag
--ssl-mode=VERIFY_IDENTITY
an. Andere MySQL-Clienttreiber haben ähnliche Konfigurationsflags.
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 MySQL verwenden