Mit SSL-/TLS-Zertifikaten autorisieren

Auf dieser Seite wird beschrieben, wie Cloud SQL selbstverwaltete SSL/TLS-Zertifikate verwendet, um eine sichere Verbindung zu Cloud SQL-Instanzen herzustellen.

Ü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 eine Verbindung zu einer Instanz über ihre öffentliche IP-Adresse herstellen, sollten Sie SSL/TLS-Zertifikate verwenden, 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 Zertifikate zu ersetzen. Wenn der Server eine neue server-ca.pem-Datei generiert, müssen Sie sie herunterladen und auf dem Hostcomputer des PostgreSQL-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 und alle Clientzertifikate funktionieren weiterhin korrekt. 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 PostgreSQL-Clients so, dass die neue Datei verwendet wird. Dafür kopieren Sie sie auf alle PostgreSQL-Client-Hostcomputer und ersetzen die vorhandene Datei.

Nachdem alle PostgreSQL-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 bei der Konfiguration Ihrer Cloud SQL-Instanz festlegen, dass SSL-/TLS-Verbindungen akzeptiert werden sollen, werden SSL-/TLS-Verbindungen für die Instanz aktiviert. Es werden aber auch weiterhin alle unsicheren Verbindungen akzeptiert. Sie müssen die SSL-/TLS-Verschlüsselung für alle Verbindungen zur Bedingung machen, sonst können auch Clients ohne gültiges Zertifikat Verbindungen herstellen. Es wird daher dringend empfohlen, SSL für alle Verbindungen zu erzwingen, wenn über IP-Adressen auf Ihre Instanz zugegriffen wird.

Autorisierte Netzwerke verwenden

Wenn Ihre Cloud SQL-Instanz eine öffentliche IP-Adresse verwendet, müssen Sie beim Konfigurieren von SSL/TLS die IP-Adressen Ihrer PostgreSQL-Clients als autorisierte Netzwerke hinzufügen.

In diesem Fall sind PostgreSQL-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.

Nächste Schritte

  • SSL/TLS mit PostgreSQL verwenden