5 Connexion sécurisée à la base de données
Aperçu
Cette section fournit les étapes de configuration de Zabbix et des exemples de configuration pour des connexions TLS sécurisées entre :
| Base de données | Composants Zabbix |
|---|---|
| MySQL | Zabbix frontend, Zabbix server, Zabbix proxy |
| PostgreSQL | Zabbix frontend, Zabbix server, Zabbix proxy |
Pour configurer le chiffrement des connexions au sein du SGBD, consultez la documentation officielle du fournisseur pour plus de détails :
- MySQL : serveurs de base de données de réplication source et réplique.
- MySQL : serveurs de base de données de réplication de groupe, etc.
- PostgreSQL options de chiffrement.
Tous les exemples sont basés sur les versions GA de MySQL CE (8.0) et de PgSQL (13) disponibles dans les dépôts officiels utilisant CentOS 8.
Spécifications
Les éléments suivants sont requis pour configurer le chiffrement :
- Le système d'exploitation pris en charge par les développeurs avec OpenSSL >=1.1.X ou alternative.
Il est recommandé d'éviter les systèmes d'exploitation en fin de vie, en particulier dans le cas de nouvelles installations
- Le moteur de base de données (RDBMS) installé et maintenu à partir du référentiel officiel fourni par le développeur. Les systèmes d'exploitation sont souvent livrés avec des versions de logiciels de base de données obsolètes pour lesquelles la prise en charge du chiffrement n'est pas mise en œuvre, par exemple les systèmes basés sur RHEL 7 et PostgreSQL 9.2, MariaDB 5.5 sans prise en charge du chiffrement.
Terminologie
La définition de cette option impose l’utilisation d’une connexion TLS à la base de données depuis le serveur/proxy Zabbix et le frontend vers la base de données :
required- se connecter en utilisant TLS comme mode de transport sans vérification d’identitéverify_ca- se connecter en utilisant TLS et vérifier le certificatverify_full- se connecter en utilisant TLS, vérifier le certificat et vérifier que l’identité de la base de données (CN) spécifiée par DBHost correspond à son certificat
Configuration de Zabbix
Interface vers la base de données
Une connexion sécurisée à la base de données peut être configurée pendant l'installation de l'interface:
- Cochez la case Chiffrement TLS de la base de données à l'étape Configurer la connexion à la base de données pour activer le chiffrement du transport.
- Cochez la case Vérifier le certificat de la base de données qui apparaît lorsque le champ Chiffrement TLS est coché pour activer le cryptage avec certificats.
Pour MySQL, la case à cocher Chiffrement TLS de la base de données est désactivée, si Hôte de la base de données est défini sur localhost, car la connexion qui utilise un fichier socket (sous Unix) ou de la mémoire partagée (sous Windows) ne peut pas être cryptée.
Pour PostgreSQL, la case à cocher Chiffrement TLS est désactivée, si la valeur du champ Hôte de la base de données commence par une barre oblique ou le champ est vide.
Les paramètres suivants deviennent disponibles dans le chiffrement TLS en mode certificats (si les deux cases sont cochées) :
| Paramètre | Description |
|---|---|
| Fichier CA TLS de la base de données | Spécifiez le chemin d'accès complet à un fichier d'autorité de certification TLS valide. |
| Fichier de clé TLS de la base de données | Spécifiez le chemin d'accès complet à un fichier de clé TLS valide. |
| Fichier de certificat TLS de base de données | Spécifiez le chemin d'accès complet à un fichier de certificat TLS valide. |
| Vérification de l'hôte de la base de données | Cochez cette case pour activer la vérification de l'hôte. Désactivé pour MYSQL, car la bibliothèque PHP MySQL ne permet pas d'ignorer l'étape de validation du certificat pair. |
| Liste de chiffrement TLS de la base de données | Spécifiez une liste personnalisée de chiffrements valides. Le format de la liste de chiffrement doit être conforme à la norme OpenSSL. Disponible pour MySQL uniquement. |
Les paramètres TLS doivent pointer vers des fichiers valides. Si ils pointent vers des fichiers inexistants ou invalides, cela conduira à une erreur d'autorisation.
Si les fichiers de certificat sont accessibles en écriture, l'interface génère un avertissement dans les informattions système signalant que "les fichiers de certificat TLS doivent être en lecture seule". (affiché uniquement si l'utilisateur PHP est le propriétaire du certificat).
Les certificats protégés par des mots de passe ne sont pas pris en charge.
Cas d'utilisation
Le frontend Zabbix utilise l'interface graphique (GUI) pour définir les options possibles : required,
verify_ca, verify_full. Spécifiez les options requises à l'étape
Configure DB connections de l'assistant d'installation. Ces options sont mappées vers le
fichier de configuration (zabbix.conf.php) de la manière suivante :
| Paramètres GUI | Fichier de configuration | Description | Résultat |
|---|---|---|---|
![]() |
... // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ... |
Cochez Database TLS encryption Laissez Verify database certificate décoché |
Active le mode 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. Cochez Database TLS encryption et Verify database certificate 2. Indiquez le chemin vers Database TLS CA file |
Active le mode 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. Cochez Database TLS encryption et Verify database certificate 2. Indiquez le chemin vers Database TLS key file 3. Indiquez le chemin vers Database TLS CA file 4. Indiquez le chemin vers Database TLS certificate file 5. Indiquez Database TLS cipher list (facultatif) |
Active le mode verify_full pour 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. Cochez Database TLS encryption et Verify database certificate 2. Indiquez le chemin vers Database TLS key file 3. Indiquez le chemin vers Database TLS CA file 4. Indiquez le chemin vers Database TLS certificate file 5. Cochez Database host verification |
Active le mode verify_full pour PostgreSQL. |
Voir aussi : Exemples de configuration du chiffrement pour MySQL, Exemples de configuration du chiffrement pour PostgreSQL.
Configuration du serveur/proxy Zabbix
Les connexions sécurisées à la base de données peuvent être configurées avec les paramètres correspondants dans le fichier de configuration du server Zabbix et/ou du proxy.
| Configuration | Résultat |
|---|---|
| Aucune | Connexion à la base de données sans chiffrement. |
1. Définir DBTLSConnect=required |
Le serveur/proxy établit une connexion TLS à la base de données. Une connexion non chiffrée n'est pas autorisée. |
1. Définir DBTLSConnect=verify_ca2. Définir DBTLSCAFile - spécifier le fichier de l'autorité de certification TLS |
Le serveur/proxy établit une connexion TLS à la base de données après avoir vérifié le certificat de la base de données. |
1. Définir DBTLSConnect=verify_full2. Définir DBTLSCAFile - spécifier le fichier de l'autorité de certification TLS |
Le serveur/proxy établit une connexion TLS à la base de données après avoir vérifié le certificat de la base de données et l'identité de l'hôte de la base de données. |
1. Définir DBTLSCAFile - spécifier le fichier de l'autorité de certification TLS2. Définir DBTLSCertFile - spécifier le fichier du certificat de clé publique du client3. Définir DBTLSKeyFile - spécifier le fichier de clé privée du client |
Le serveur/proxy fournit un certificat client lors de la connexion à la base de données. |
1. Définir DBTLSCipher - la liste des suites de chiffrement que le client autorise pour les connexions utilisant des protocoles TLS jusqu'à TLS 1.2ou DBTLSCipher13 - la liste des suites de chiffrement que le client autorise pour les connexions utilisant le protocole TLS 1.3 |
(MySQL) La connexion TLS est établie à l'aide d'une suite de chiffrement de la liste fournie. (PostgreSQL) La définition de cette option sera considérée comme une erreur. |



