Auf dieser Seite wird die Verwendung selbstverwalteter SSL/Transport Layer Security-Zertifikate (TLS) durch Cloud SQL zum Aufbau sicherer Verbindungen zu Cloud SQL-Instanzen beschrieben.
Übersicht
Cloud SQL unterstützt den Verbindungsaufbau zu einer Instanz mit dem SSL/TLS-Protokoll (Transport Layer Security). Daten, die innerhalb einer physischen Grenze übertragen werden, die von Google oder im Auftrag von Google kontrolliert wird, werden in der Regel zwar authentifiziert, aber nicht standardmäßig verschlüsselt. Wenn Sie über ihre öffentliche IP-Adresse eine Verbindung zu einer Instanz herstellen, müssen Sie SSL/TLS-Zertifikate erzwingen, damit die Daten während der Übertragung sicher sind. SSL/TLS ist das Standardprotokoll für die Verschlüsselung von Daten, die über das Internet gesendet werden. Wenn Ihre Daten nicht verschlüsselt sind, kann jeder Ihre Pakete untersuchen und vertrauliche Informationen lesen.
Die sicherste Verschlüsselungsmethode ist die asymmetrische Kryptografie. Hierfür sind zwei kryptografische Schlüssel erforderlich: ein öffentlicher und ein privater. Im Wesentlichen verwenden Sie den öffentlichen Schlüssel zum Verschlüsseln der Daten und den privaten Schlüssel zum Entschlüsseln. Der Server- und der Clientrechner haben den gleichen Satz von Clientschlüsseln.
In Cloud SQL hat der öffentliche Schlüssel den Namen client-cert.pem
und der private Schlüssel den Namen client-key.pem
. Der Server generiert auch ein eigenes Zertifikat mit dem Namen server-ca.pem
.
Für Ihre Anwendung müssen alle drei Schlüssel erfolgreich verbunden sein.
Diese Schlüssel sollten sicher aufbewahrt werden. Jeder, der Zugriff darauf hat, kann unter Umständen eine Verbindung herstellen oder Ihre Daten abfangen. Sie können den privaten Schlüssel später nicht mehr vom Server abrufen. Wenn Sie ihn verlieren, müssen Sie neue Clientzertifikate erstellen, um die zuvor verwendeten zu ersetzen. Wenn der Server eine neue server-ca.pem
-Datei generiert, müssen Sie sie herunterladen und auf dem Hostcomputer des MySQL-Clients speichern, um die vorhandene Datei zu ersetzen.
SSL/TLS-Zertifikate
Für SSL-Verbindungen ist ein Serverzertifikat der Zertifizierungsstelle erforderlich. 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. Wenn das Ablaufdatum des Zertifikats nach zehn Jahren jedoch erreicht und überschritten wird, ist das Zertifikat ungültig und kann von den Clients nicht mehr verwendet werden, um eine sichere Verbindung zu Ihrer Instanz herzustellen. Sie können auch manuell ein neues Zertifikat erstellen.
Sie erstellen Clientzertifikate selbst. Pro Cloud SQL-Instanz sind maximal zehn Clientzertifikate zulässig.Rotation des Serverzertifikats
Cloud SQL bietet die Möglichkeit, das Serverzertifikat zu rotieren. Damit wird das alte Zertifikat vor seinem Ablauf nahtlos durch ein neues ersetzt.
Etwa drei Monate vor Ablauf des Serverzertifikats für eine Cloud SQL-Instanz erhalten die Projektinhaber eine E-Mail von Cloud SQL, in der sie darüber informiert werden, dass die Zertifikatsrotation für diese Instanz begonnen hat. Die E-Mail enthält den Namen der Instanz und besagt, dass dem Projekt ein neues Serverzertifikat hinzugefügt wurde. Das vorhandene Serverzertifikat funktioniert weiterhin normal. Tatsächlich hat die Instanz während dieses Zeitraums zwei Serverzertifikate.
Laden Sie vor Ablauf des aktuellen Zertifikats die neue server-ca.pem
-Datei herunter, die die Zertifikatsinformationen für das aktuelle und das neue Serverzertifikat enthält. Aktualisieren Sie Ihre MySQL-Clients so, dass die neue Datei verwendet wird. Dafür kopieren Sie sie auf alle MySQL-Client-Hostcomputer und ersetzen die vorhandene Datei.
Nachdem alle MySQL-Clients aktualisiert wurden, senden Sie einen Befehl an die Cloud SQL-Instanz, um zum neuen Serverzertifikat zu rotieren. Danach wird das alte Serverzertifikat nicht mehr erkannt und nur das neue Serverzertifikat kann verwendet werden.
Clientzertifikate sind von der Rotation des Serverzertifikats nicht betroffen.SSL/TLS-Verschlüsselung erzwingen
Wenn Sie Ihre Cloud SQL-Instanz so konfigurieren, dass SSL/TLS-Verbindungen akzeptiert werden sollen, werden SSL/TLS-Verbindungen für die Instanz aktiviert. Es werden aber auch weiterhin alle nicht verschlüsselten unsicheren 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.Nutzereinstellungen pro Konto können die globale Einstellung überschreiben, indem SSL erzwungen wird. Der SSL-Status eines Nutzerkontos wird in der Spalte ssl_type
der Tabelle mysql.user
angezeigt. Weitere Informationen finden Sie unter MySQL für die Verwendung verschlüsselter Verbindungen konfigurieren.
Autorisierte Netzwerke verwenden
Wenn Ihre Cloud SQL-Instanz eine öffentliche IP-Adresse verwendet, müssen Sie die IP-Adressen Ihrer MySQL-Clients als autorisierte Netzwerke hinzufügen, wenn Sie SSL/TLS konfigurieren.
Dadurch sind MySQL-Clients nur dann berechtigt, eine Verbindung herzustellen, wenn ihre IP-Adressen in diese Liste aufgenommen wurden. Die IP-Adressen können auf einen einzelnen Endpunkt beschränkt sein oder aus einem Bereich im CIDR-Format bestehen. Beispiel: 10.50.51.3
oder 10.50.51.0/26
.
Ablauf des SSL-Zertifikats
SSL-Zertifikate, die Cloud SQL-Instanzen zugeordnet sind, haben eine Gültigkeitsdauer von zehn Jahren. Führen Sie nach Ablauf die SSL-Zertifikatsrotation durch. Sie können die SSL-Konfiguration Ihrer Cloud SQL-Instanz auch jederzeit zurücksetzen.