Sichere Verbindung zur Datenbank
Übersicht
Dieser Abschnitt enthält Zabbix-Einrichtungsschritte und Konfigurationsbeispiele für sichere TLS-Verbindungen zwischen:
| Datenbank | Zabbix-Komponenten |
|---|---|
| MySQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
| PostgreSQL | Zabbix Frontend, Zabbix Server, Zabbix Proxy |
Informationen zum Einrichten der Verbindungsverschlüsselung innerhalb des DBMS finden Sie in der offiziellen Dokumentation des jeweiligen Herstellers:
- MySQL: Replikationsdatenbankserver für Quelle und Replikat.
- MySQL: Datenbankserver für Gruppenreplikation usw.
- PostgreSQL Verschlüsselungsoptionen.
Alle Beispiele basieren auf den GA-Releases von MySQL CE (8.0) und PgSQL (13), die über die offiziellen Repositorys unter CentOS 8 verfügbar sind.
Anforderungen
Folgendes ist für die Einrichtung der Verschlüsselung erforderlich:
- Vom Entwickler unterstütztes Betriebssystem mit OpenSSL >=1.1.X oder einer Alternative.
Es wird empfohlen, Betriebssysteme mit End-of-Life-Status zu vermeiden, insbesondere bei Neuinstallationen
- Datenbank-Engine (RDBMS), installiert und gepflegt aus dem offiziellen Repository des Entwicklers. Betriebssysteme werden oft mit veralteten Versionen von Datenbanksoftware ausgeliefert, für die keine Unterstützung für Verschlüsselung implementiert ist, zum Beispiel auf RHEL-7-basierten Systemen und PostgreSQL 9.2, MariaDB 5.5 ohne Unterstützung für Verschlüsselung.
Terminologie
Durch das Setzen dieser Option wird die Verwendung einer TLS-Verbindung zur Datenbank vom Zabbix Server/Proxy und vom Frontend zur Datenbank erzwungen:
required- Verbindung über TLS als Transportmodus ohne Identitätsprüfungenverify_ca- Verbindung über TLS und Überprüfung des Zertifikatsverify_full- Verbindung über TLS, Überprüfung des Zertifikats und Überprüfung, dass die von DBHost angegebene Datenbankidentität (CN) mit ihrem Zertifikat übereinstimmt
Zabbix-Konfiguration
Frontend zur Datenbank
Eine sichere Verbindung zur Datenbank kann während der Frontend-Installation konfiguriert werden:
- Aktivieren Sie das Kontrollkästchen Database TLS encryption im Schritt Configure DB connection, um die Transportverschlüsselung zu aktivieren.
- Aktivieren Sie das Kontrollkästchen Verify database certificate, das angezeigt wird, wenn das Feld TLS encryption aktiviert ist, um die Verschlüsselung mit Zertifikaten zu aktivieren.
Für MySQL ist das Kontrollkästchen Database TLS encryption deaktiviert, wenn Database host auf localhost gesetzt ist, da eine Verbindung, die eine Socket-Datei (unter Unix) oder Shared Memory (unter Windows) verwendet, nicht verschlüsselt werden kann.
Für PostgreSQL ist das Kontrollkästchen TLS encryption deaktiviert, wenn der Wert des Feldes Database host mit einem Schrägstrich beginnt oder das Feld leer ist.
Die folgenden Parameter werden im Modus der TLS-Verschlüsselung mit Zertifikaten verfügbar (wenn beide Kontrollkästchen aktiviert sind):
| Parameter | Beschreibung |
|---|---|
| Database TLS CA file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Zertifizierungsstellen-(CA)-Datei an. |
| Database TLS key file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Schlüsseldatei an. |
| Database TLS certificate file | Geben Sie den vollständigen Pfad zu einer gültigen TLS-Zertifikatsdatei an. |
| Database host verification | Aktivieren Sie dieses Kontrollkästchen, um die Host-Überprüfung zu aktivieren. Für MYSQL deaktiviert, da die PHP-MySQL-Bibliothek das Überspringen des Schritts zur Überprüfung des Peer-Zertifikats nicht zulässt. |
| Database TLS cipher list | Geben Sie eine benutzerdefinierte Liste gültiger Cipher an. Das Format der Cipher-Liste muss dem OpenSSL-Standard entsprechen. Nur für MySQL verfügbar. |
TLS-Parameter müssen auf gültige Dateien verweisen. Wenn sie auf nicht vorhandene oder ungültige Dateien verweisen, führt dies zu einem Autorisierungsfehler.
Wenn Zertifikatsdateien beschreibbar sind, erzeugt das Frontend im Bericht System information eine Warnung, dass "TLS certificate files must be read-only." (wird nur angezeigt, wenn der PHP-Benutzer der Besitzer des Zertifikats ist).
Mit Passwörtern geschützte Zertifikate werden nicht unterstützt.
Anwendungsfälle
Das Zabbix-Frontend verwendet die GUI, um mögliche Optionen zu definieren: required, verify_ca, verify_full. Geben Sie die erforderlichen Optionen im Schritt Configure DB connections des Installationsassistenten an. Diese Optionen werden wie folgt in die Konfigurationsdatei (zabbix.conf.php) abgebildet:
| GUI settings | Configuration file | Description | Result |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
Database TLS encryption aktivieren Verify database certificate deaktiviert lassen |
Aktiviert den Modus required. |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '';$DB['CERT_FILE'] = '';$DB['CA_FILE'] = '/etc/ssl/mysql/ca.pem';$DB['VERIFY_HOST'] = false;$DB['CIPHER_LIST'] = '';... |
1. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS CA file angeben |
Aktiviert den Modus verify_ca. |
![]() |
... // Used for TLS connection with strictly defined Cipher list. $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '<cipher_list>';... Or: ... // Used for TLS connection without Cipher list defined - selected by MySQL server $DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = '';... |
1. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS key file angeben 3. Pfad zur Database TLS CA file angeben 4. Pfad zur Database TLS certificate file angeben 5. Database TLS cipher list angeben (optional) |
Aktiviert den Modus verify_full für MySQL. |
![]() |
...$DB['ENCRYPTION'] = true;$DB['KEY_FILE'] = '<key_file_path>';$DB['CERT_FILE'] = '<key_file_path>';$DB['CA_FILE'] = '<key_file_path>';$DB['VERIFY_HOST'] = true;$DB['CIPHER_LIST'] = ' ';... |
1. Database TLS encryption und Verify database certificate aktivieren 2. Pfad zur Database TLS key file angeben 3. Pfad zur Database TLS CA file angeben 4. Pfad zur Database TLS certificate file angeben 5. Database host verification aktivieren |
Aktiviert den Modus verify_full für PostgreSQL. |
Siehe auch: Encryption configuration examples for MySQL, Encryption configuration examples for PostgreSQL.
Zabbix Server/Proxy-Konfiguration
Sichere Verbindungen zur Datenbank können mit den entsprechenden Parametern in der Zabbix-Server- und/oder Proxy-Konfigurationsdatei eingerichtet werden.
| Konfiguration | Ergebnis |
|---|---|
| Keine | Verbindung zur Datenbank ohne Verschlüsselung. |
1. Setzen Sie DBTLSConnect=required |
Server/Proxy stellen eine TLS-Verbindung zur Datenbank her. Eine unverschlüsselte Verbindung ist nicht zulässig. |
1. Setzen Sie DBTLSConnect=verify_ca2. Setzen Sie DBTLSCAFile - geben Sie die TLS-Zertifizierungsstellen-Datei an |
Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats eine TLS-Verbindung zur Datenbank her. |
1. Setzen Sie DBTLSConnect=verify_full2. Setzen Sie DBTLSCAFile - geben Sie die TLS-Zertifizierungsstellen-Datei an |
Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats und der Datenbank-Hostidentität eine TLS-Verbindung zur Datenbank her. |
1. Setzen Sie DBTLSCAFile - geben Sie die TLS-Zertifizierungsstellen-Datei an2. Setzen Sie DBTLSCertFile - geben Sie die Datei des öffentlichen Client-Schlüsselzertifikats an3. Setzen Sie DBTLSKeyFile - geben Sie die private Client-Schlüsseldatei an |
Server/Proxy stellen beim Verbinden mit der Datenbank ein Client-Zertifikat bereit. |
1. Setzen Sie DBTLSCipher - die Liste der Verschlüsselungs-Cipher, die der Client für Verbindungen mit TLS-Protokollen bis einschließlich TLS 1.2 zulässtoder DBTLSCipher13 - die Liste der Verschlüsselungs-Cipher, die der Client für Verbindungen mit dem TLS-1.3-Protokoll zulässt |
(MySQL) Die TLS-Verbindung wird mit einem Cipher aus der angegebenen Liste hergestellt. (PostgreSQL) Das Setzen dieser Option wird als Fehler betrachtet. |



