Datenbanktransport Sicherheit

Dieses Kapitel behandelt Fragen im Zusammenhang mit der Netzwerkkommunikation zum und vom Datenbankserver. Dazu gehören IP-Adressbindungen und die Verschlüsselung des Netzwerkverkehrs mit TLS.

Datenbank-Server-IP-Adresse binden

Um die sensible Datenbankkommunikation zwischen den Diensten und der Datenbank zu isolieren, empfiehlt es sich dringend, dass der Datenbankserver so konfiguriert ist, dass er nur über ein isoliertes Verwaltungsnetzwerk die Kommunikation von und aus der Datenbank ermöglicht. Dies wird durch die Beschränkung der Schnittstelle oder der IP-Adresse erreicht, auf der der Datenbankserver einen Netzwerksockel für eingehende Clientverbindungen bindet.

Beschränkung der Bindungsadresse für MySQL

In my.cnf:

[mysqld]
...
bind-address <ip address or hostname of management network interface>

Die Listener-Adresse für PostgreSQL einschränken

In postgresql.conf:

listen_addresses = <ip address or hostname of management network interface>

Datenbanktransport

Neben der Beschränkung der Datenbankkommunikation auf das Management-Netzwerk empfehlen wir auch dringend, dass der Cloud-Administrator sein Datenbank-Backend konfiguriert, um TLS anzufordern. Die Verwendung von TLS für die Datenbank-Client-Verbindungen schützt die Kommunikation vor Manipulation und Abhören. Wie im nächsten Abschnitt diskutiert wird, bietet TLS auch das Framework für die Datenbankbenutzerauthentifizierung über X.509-Zertifikate (allgemein als PKI bezeichnet). Im Folgenden finden Sie Anleitungen, wie TLS in der Regel für die beiden populären Datenbank-Backends MySQL und PostgreSQL konfiguriert ist.

Bemerkung

Wenn Sie das Zertifikat und die Schlüsseldateien installieren, stellen Sie sicher, dass die Dateiberechtigungen eingeschränkt sind, z. B. chmod 0600, und das Eigentum ist auf den Datenbank-Daemon-Benutzer beschränkt, um unbefugten Zugriff durch andere Prozesse und Benutzer auf dem Datenbankserver zu verhindern.

MySQL SSL Konfiguration

Folgende Zeilen sollten in der systemweiten MySQL-Konfigurationsdatei hinzugefügt werden:

In my.cnf:

[[mysqld]]
...
ssl-ca = /path/to/ssl/cacert.pem
ssl-cert = /path/to/ssl/server-cert.pem
ssl-key = /path/to/ssl/server-key.pem

Optional, wenn Sie die Menge der SSL-Cipher, die für die verschlüsselte Verbindung verwendet werden, einschränken möchten. Siehe Cipher für eine Liste der Cipher und die Syntax für die Angabe der Chiffrierzeichenfolge:

ssl-cipher = 'cipher:list'

PostgreSQL SSL Konfiguration

Die folgenden Zeilen sollten in der systemweiten PostgreSQL-Konfigurationsdatei postgresql.conf hinzugefügt werden.

ssl = true

Optional, wenn Sie die Menge der SSL-Cipher, die für die verschlüsselte Verbindung verwendet werden, einschränken möchten. Siehe Cipher für eine Liste der Cipher und die Syntax für die Angabe der Chiffrierzeichenfolge:

ssl-ciphers = 'cipher:list'

Die Dateien des Zertifikats, des Schlüssels und der Zertifizierungsstelle (CA) sollten im Verzeichnis $PGDATA in den folgenden Dateien abgelegt werden:

  • $PGDATA/server.crt- Serverzertifikat

  • $PGDATA/server.key- Privater Schlüssel, der server.crt entspricht

  • $PGDATA/root.crt- Vertrauenswürdige Zertifizierungsstellen

  • $PGDATA/root.crl- Zertifikatswiderrufliste