This is a translation of the original English documentation page. Help us make it better.

13 Stockage des secrets

Aperçu

Il est possible de stocker secrètement certaines informations sensibles dans HashiCorp Vault KV Secrets Engine - Version 2. Les secrets peuvent être enregistrés pour :

  • les valeurs de macro utilisateur
  • les identifiants d'accès à la base de données

Zabbix fournit un accès en lecture seule aux secrets de Vault, en supposant que les secrets sont gérés par quelqu'un d'autre.

Valeurs des macros utilisateur

Il est possible de stocker secrètement les valeurs des macros utilisateur dans Vault.

Une valeur "secret Vault" d'une macro utilisateur contient un chemin de référence (comme 'chemin:clé', par exemple "secret/zabbix:password").

Les commandes suivantes peuvent être utilisées pour définir la valeur du chemin mentionné dans l'exemple :

# Activer le point de montage "secret/" s'il n'est pas déjà activé, notez que "kv-v2" doit être utilisé
       $ vault secrets enable -path=secret/ kv-v2
       
       # Mettre le nouveau secret avec le mot de passe clé sous le point de montage "secret/" et le chemin "secret/zabbix"
       $vault kv put secret/zabbix password=<mot de passe>
       
       # Tester que le secret est ajouté avec succès
       $ vault kv get secret/zabbix
       
       # Enfin testez avec Curl, notez que les "données" doivent être ajoutées manuellement après le point de montage et "/v1" avant le point de montage, voir également le paramètre --capath
       $ curl --header "X-Vault-Token : <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix

La valeur secrète est récupérée par le serveur Zabbix à chaque actualisation des données de configuration et est stockée dans le cache de configuration. Le jeton d'authentification pour un accès en lecture seule aux chemins de référence doit être fourni dans la configuration du serveur (paramètre 'VaultToken'). Si la valeur de la macro ne peut pas être récupérée avec succès, l'élément correspondant utilisant la valeur deviendra non pris en charge.

Il est également possible de déclencher l'actualisation des valeurs secrètes depuis Vault, grâce à l'option 'secrets_reload' de la ligne de commande.

Le proxy Zabbix ne communique jamais avec Vault pour obtenir des secrets autres que les informations d'identification de la base de données. Les valeurs secrètes sur le proxy Zabbix sont récupérées à partir du serveur Zabbix à chaque synchronisation de configuration et stockées dans le cache de configuration de la même manière que sur le serveur Zabbix.

Cela signifie qu'un proxy Zabbix ne peut pas démarrer la collecte de données après un redémarrage tant qu'il n'a pas reçu la mise à jour des données de configuration du serveur Zabbix pour la première fois. Le chiffrement doit être activé entre le serveur Zabbix et le proxy ; sinon, un message d'avertissement du serveur est loggé.

Identifiants de la base de données

Il est possible de stocker secrètement les informations d'identification de la base de données utilisées par le serveur Zabbix, les proxys et le frontend dans Vault :

  • Les paramètres liés à Vault pour la récupération des informations d'identification de la base de données peuvent être saisis en option dans l'interface assistant d'installation.

Les informations d'identification de la base de données récupérées à partir de Vault seront mises en cache par l'interface. Notez que le répertoire de fichiers temporaires du système de fichiers est utilisé pour la mise en cache des informations d'identification de la base de données dans le frontend. Vous pouvez utiliser la constante ZBX_DATA_CACHE_TTL pour contrôler la fréquence d'actualisation/invalidation du cache de données.

  • Pour le serveur/proxy, le paramètre de configuration VaultDBPath peut être utilisé pour spécifier le chemin à partir duquel les informations d'identification pour la base de données seront récupérées par les clés 'password' et 'username' (par exemple : secret/zabbix/database).

Les commandes suivantes peuvent être utilisées pour définir les valeurs du chemin mentionné dans l'exemple :

# Activer le point de montage "secret/" s'il n'est pas déjà activé, notez que "kv-v2" doit être utilisé
       $ vault secrets enable -path=secret/ kv-v2
       
       # Placez les nouveaux secrets avec les clés username et password sous le point de montage "secret/" et le chemin "secret/zabbix/database"
       $ vault kv put secret/zabbix/database username=zabbix password=<password>
       
       # Tester que le secret est ajouté avec succès
       $ vault kv get secret/zabbix/database
       
       # Enfin testez avec Curl, notez que les "données" doivent être ajoutées manuellement après le point de montage et "/v1" avant le point de montage, voir également le paramètre --capath
       $ curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database

Paramètres de configuration

Pour le serveur/proxy Zabbix, de nouveaux paramètres de configuration ont été ajoutés pour l'authentification Vault et la récupération des informations d'identification de la base de données :

  • VaultToken - Jeton d'authentification de coffre-fort (voir le fichier de configuration server/proxy Zabbix pour plus de détails)
  • VaultURL - URL HTTP[S] du serveur de Vault
  • VaultDBPath - Chemin de Vault à partir duquel les informations d'identification pour la base de données seront récupérées par les clés 'password' et 'username' (par exemple : secret/zabbix/database)

Le serveur Zabbix et le proxy Zabbix lisent les paramètres de configuration liés à Vault depuis zabbix_server.conf et zabbix_proxy.conf au démarrage.

Le serveur Zabbix et le proxy Zabbix liront en outre la variable d'environnement "VAULT_TOKEN" une fois au démarrage et la désactiveront afin qu'elle ne soit pas disponible via des scripts externes ou mal intentionnés ; c'est une erreur si VaultToken et VAULT_TOKEN contiennent une valeur.

La barre oblique et les deux-points sont des symboles réservés. La barre oblique ne peut être utilisée que pour séparer le point de montage du chemin (par exemple, secret/zabbix où le point de montage est "secret" et "zabbix" est le chemin) et, dans le cas des macros Vault, les deux-points ne peuvent être utilisés que pour séparer le chemin de la clé. Il est possible d'encoder l'URL "/" et ":" s'il est nécessaire de créer un point de montage avec un nom séparé par une barre oblique (par exemple, foo/bar/zabbix où le point de montage est "foo/bar" et le chemin est " zabbix" comme "foo%2Fbar/zabbix") et si le nom ou le chemin du point de montage doit contenir deux-points.

Configuration TLS

Le certificat signé par une autorité de certification (CA) doit être ajouté au magasin CA par défaut. Alternativement, un emplacement de magasin CA personnalisé peut être spécifié à l'aide du paramètre de configuration SSLCALocation ; notez que dans ce cas, le répertoire du certificat doit être préparé à l'aide de l'utilitaire openssl c_rehash, par exemple configurez SSLCALocation et copiez "ca.pem" dans ce répertoire, puis exécutez la commande suivante :

 $c_rehash .