[comment]: # translation:outdated

[comment]: # ({22b96536-5407a56a})
# 5 Sichere Verbindung zur Datenbank

[comment]: # ({/22b96536-5407a56a})

[comment]: # ({b38f1bac-7cadd09e})
#### Übersicht

Dieser Abschnitt enthält Schritte zur Einrichtung von Zabbix sowie Konfigurationsbeispiele für
sichere TLS-Verbindungen zwischen:

|Datenbank|Zabbix-Komponenten|
|--------|-----------------|
|MySQL|Zabbix Frontend, Zabbix Server, Zabbix Proxy|
|PostgreSQL|Zabbix Frontend, Zabbix Server, Zabbix Proxy|

Um die Verbindungsverschlüsselung innerhalb des DBMS einzurichten, finden Sie
Einzelheiten in der offiziellen Dokumentation des jeweiligen Anbieters:

-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/replication-encrypted-connections.html):
    Quell- und Replikat-Replikationsdatenbankserver.
-   [MySQL](https://dev.mysql.com/doc/refman/8.0/en/group-replication-security.html):
    Datenbankserver für Gruppenreplikation usw.
-   [PostgreSQL](https://www.postgresql.org/docs/current/encryption-options.html)
    Verschlüsselungsoptionen.

Alle Beispiele basieren auf den GA-Releases von MySQL CE (8.0) und PgSQL
(13), die über offizielle Repositories für CentOS 8 verfügbar sind.

[comment]: # ({/b38f1bac-7cadd09e})

[comment]: # ({b7e9dcca-5af34b43})
##### Voraussetzungen

Für die Einrichtung der Verschlüsselung ist Folgendes erforderlich:

-   Ein vom Entwickler unterstütztes Betriebssystem mit OpenSSL >=1.1.X oder
    einer Alternative.

::: noteclassic
 Es wird empfohlen, Betriebssysteme mit End-of-Life-Status zu vermeiden,
insbesondere bei Neuinstallationen. 
:::

-   Eine Datenbank-Engine (RDBMS), die aus dem offiziellen, vom Entwickler
    bereitgestellten Repository installiert und gepflegt wird. Betriebssysteme werden
    häufig mit veralteten Versionen der Datenbanksoftware ausgeliefert, für die
    keine Unterstützung für Verschlüsselung implementiert ist, zum Beispiel
    RHEL-7-basierte Systeme und PostgreSQL 9.2, MariaDB 5.5 ohne Unterstützung
    für Verschlüsselung.

[comment]: # ({/b7e9dcca-5af34b43})

[comment]: # ({53676bc9-9801ac5b})
##### Terminologie

Das Setzen dieser Option erzwingt die Verwendung einer TLS-Verbindung zur Datenbank vom
Zabbix Server/Proxy und Frontend zur Datenbank:

-   `required` - Verbindung über TLS als Transportmodus ohne
    Identitätsprüfungen herstellen
-   `verify_ca` - Verbindung über TLS herstellen und das Zertifikat
    verifizieren
-   `verify_full` - Verbindung über TLS herstellen, das Zertifikat verifizieren und prüfen, dass
    die durch DBHost angegebene Datenbankidentität (CN) mit ihrem Zertifikat übereinstimmt

[comment]: # ({/53676bc9-9801ac5b})

[comment]: # ({84f30836-84f30836})
#### Zabbix-Konfiguration

[comment]: # ({/84f30836-84f30836})

[comment]: # ({9a1ac113-b1071a8a})
##### Frontend zur Datenbank

Eine sichere Verbindung zur Datenbank kann während der Installation des Frontends konfiguriert werden:

-   Aktivieren Sie das Kontrollkästchen *Database TLS encryption* im Schritt [Configure DB
    connection](/manual/installation/frontend#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.

::: noteclassic
 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 gemeinsamen Speicher (unter Windows) verwendet, nicht verschlüsselt werden kann.<br>
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 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-Datei (CA) 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-Verifizierung zu aktivieren.<br>Für MYSQL deaktiviert, da die PHP-MySQL-Bibliothek das Überspringen der Validierung des Peer-Zertifikats nicht erlaubt.|
|*Database TLS cipher list*|Geben Sie eine benutzerdefinierte Liste gültiger Chiffren an. Das Format der Chiffrenliste muss dem OpenSSL-Standard entsprechen.<br>Nur für MySQL verfügbar.|

::: noteimportant
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.<br>
Wenn Zertifikatsdateien schreibbar sind, erzeugt das Frontend im Bericht [System information](/manual/web_interface/frontend_sections/reports/status_of_zabbix) die Warnung „TLS certificate files must be read-only.“ (wird nur angezeigt, wenn der PHP-Benutzer Eigentümer des Zertifikats ist).

Passwortgeschützte Zertifikate werden nicht unterstützt. 
:::

[comment]: # ({/9a1ac113-b1071a8a})

[comment]: # ({18fae872-d4fd87a2})
##### Anwendungsfälle

Das Zabbix Frontend verwendet eine GUI-Oberfläche, 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 der Konfigurationsdatei (zabbix.conf.php) zugeordnet:

|GUI-Einstellungen|Konfigurationsdatei|Beschreibung|Ergebnis|
|----|----|----|----|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_transport.png)|...<br>// Used for TLS connection.<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '';<br>$DB\['CERT\_FILE'\] = '';<br>$DB\['CA\_FILE'\] = '';<br>$DB\['VERIFY\_HOST'\] = false;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|*Database TLS encryption* aktivieren<br>*Verify database certificate* nicht aktivieren|Modus `required` aktivieren.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_ca.png)|...<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '';<br>$DB\['CERT\_FILE'\] = '';<br>$DB\['CA\_FILE'\] = '/etc/ssl/mysql/ca.pem';<br>$DB\['VERIFY\_HOST'\] = false;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|1\. *Database TLS encryption* und *Verify database certificate* aktivieren<br>2. Pfad zur *Database TLS CA file* angeben|Modus `verify_ca` aktivieren.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full1.png)|...<br>// Used for TLS connection with strictly defined Cipher list.<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '<cipher\_list>';<br>...<br><br>Oder:<br><br>...<br>// Used for TLS connection without Cipher list defined - selected by MySQL server<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = '';<br>...|1\. *Database TLS encryption* und *Verify database certificate* aktivieren<br>2. Pfad zur *Database TLS key file* angeben<br>3. Pfad zur *Database TLS CA file* angeben<br>4. Pfad zur *Database TLS certificate file* angeben<br>5. *Database TLS cipher list* angeben (optional)|Modus `verify_full` für MySQL aktivieren.|
|![](../../../../assets/en/manual/appendix/install/encrypt_db_verify_full2.png)|...<br>$DB\['ENCRYPTION'\] = true;<br>$DB\['KEY\_FILE'\] = '<key\_file\_path>';<br>$DB\['CERT\_FILE'\] = '<key\_file\_path>';<br>$DB\['CA\_FILE'\] = '<key\_file\_path>';<br>$DB\['VERIFY\_HOST'\] = true;<br>$DB\['CIPHER\_LIST'\] = ' ';<br>...<br>|1\. *Database TLS encryption* und *Verify database certificate* aktivieren<br>2. Pfad zur *Database TLS key file* angeben<br>3. Pfad zur *Database TLS CA file* angeben<br>4. Pfad zur *Database TLS certificate file* angeben<br>5. *Database host verification* aktivieren|Modus `verify_full` für PostgreSQL aktivieren.|

**Siehe auch:** [Beispiele für die Verschlüsselungskonfiguration für
MySQL](/manual/appendix/install/db_encrypt/mysql), [Beispiele für die Verschlüsselungskonfiguration für
PostgreSQL](/manual/appendix/install/db_encrypt/postgres).

[comment]: # ({/18fae872-d4fd87a2})

[comment]: # ({b504a368-9cfb91d1})
#### Zabbix Server/Proxy-Konfiguration

Sichere Verbindungen zur Datenbank können mit den entsprechenden
Parametern in der Zabbix-[server](/manual/appendix/config/zabbix_server)- und/oder
[proxy](/manual/appendix/config/zabbix_proxy)-Konfigurationsdatei eingerichtet werden.

|Konfiguration|Ergebnis|
|--|--|
|Keine|Verbindung zur Datenbank ohne Verschlüsselung.|
|1\. `DBTLSConnect=required` setzen|Server/Proxy stellen eine TLS-Verbindung zur Datenbank her. Eine unverschlüsselte Verbindung ist nicht zulässig.|
|1\. `DBTLSConnect=verify_ca` setzen<br>2. `DBTLSCAFile` setzen - die Datei der TLS-Zertifizierungsstelle angeben|Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats eine TLS-Verbindung zur Datenbank her.|
|1\. `DBTLSConnect=verify_full` setzen<br>2. `DBTLSCAFile` setzen - die Datei der TLS-Zertifizierungsstelle angeben|Server/Proxy stellen nach der Überprüfung des Datenbankzertifikats und der Identität des Datenbank-Host eine TLS-Verbindung zur Datenbank her.|
|1\. `DBTLSCAFile` setzen - die Datei der TLS-Zertifizierungsstelle angeben<br>2. `DBTLSCertFile` setzen - die Datei des öffentlichen Client-Schlüsselzertifikats angeben<br>3. `DBTLSKeyFile` setzen - die Datei des privaten Client-Schlüssels angeben|Server/Proxy stellen beim Verbinden mit der Datenbank ein Client-Zertifikat bereit.|
|1\. `DBTLSCipher` setzen - die Liste der Verschlüsselungsverfahren, die der Client für Verbindungen mit TLS-Protokollen bis TLS 1.2 zulässt<br><br>oder `DBTLSCipher13` - die Liste der Verschlüsselungsverfahren, die der Client für Verbindungen mit dem TLS-1.3-Protokoll zulässt|(MySQL) Die TLS-Verbindung wird mit einem Verschlüsselungsverfahren aus der angegebenen Liste hergestellt.<br>(PostgreSQL) Das Setzen dieser Option wird als Fehler betrachtet.|

[comment]: # ({/b504a368-9cfb91d1})
