2 Configuration de HashiCorp

Aperçu

Cette section explique comment configurer Zabbix pour récupérer des secrets depuis le moteur de secrets KV de HashiCorp Vault - version 2.

Le coffre-fort doit être déployé et configuré comme décrit dans la documentation HashiCorp officielle.

Pour en savoir plus sur la configuration de TLS dans Zabbix, consultez Stockage des secrets.

Récupération des identifiants de base de données

Pour récupérer avec succès un secret contenant des identifiants de base de données, il est nécessaire de configurer les deux éléments suivants :

  • Zabbix serveur/proxy
  • Zabbix interface
Serveur/proxy

Pour configurer Zabbix serveur ou proxy, spécifiez les paramètres de configuration suivants dans le fichier de configuration :

  • Vault - quel fournisseur de coffre-fort doit être utilisé ;
  • VaultToken - jeton d'authentification du coffre-fort (voir le fichier de configuration de Zabbix serveur/proxy pour plus de détails) ;
  • VaultURL - URL HTTP[S] du serveur du coffre-fort ;
  • VaultDBPath - chemin vers le secret du coffre-fort contenant les identifiants de base de données (cette option ne peut être utilisée que si DBUser et DBPassword ne sont pas spécifiés) ; Zabbix serveur ou proxy récupérera les identifiants à l'aide des clés "password" et "username" ;
  • VaultPrefix - préfixe personnalisé pour le chemin ou la requête du coffre-fort, selon le coffre-fort ; s'il n'est pas spécifié, la valeur par défaut la plus appropriée sera utilisée.

Zabbix serveur utilise également les paramètres de configuration Vault, VaultToken, VaultURL et VaultPrefix pour l'authentification au coffre-fort lors du traitement des macros de secret du coffre-fort.

Zabbix serveur et Zabbix proxy lisent les paramètres de configuration liés au coffre-fort depuis zabbix_server.conf et zabbix_proxy.conf au démarrage. De plus, Zabbix serveur et Zabbix proxy liront la variable d'environnement VAULT_TOKEN une seule fois au démarrage et la supprimeront afin qu'elle ne soit pas disponible via les scripts forkés ; c'est une erreur si les paramètres VaultToken et VAULT_TOKEN contiennent tous deux une valeur.

Zabbix serveur ou proxy prennent en charge le renouvellement automatique des jetons de service et des jetons de service périodiques. Si Zabbix détecte qu'un jeton est renouvelable, il continuera à le renouveler automatiquement jusqu'à ce que la TTL maximale du jeton soit atteinte ou, dans le cas des jetons de service périodiques, indéfiniment.

Exemple

  1. Dans zabbix_server.conf, spécifiez les paramètres suivants :
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
  1. Exécutez les commandes CLI suivantes pour créer le secret requis dans le coffre :
# Activez 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

# Ajoutez de nouveaux secrets avec les clés username et password sous le point de montage "secret/" et le chemin "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>

# Vérifiez que le secret a bien été ajouté.
vault kv get secret/zabbix/database

# Enfin, testez avec Curl ; notez que "data" doit être ajouté 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
  1. Par conséquent, le serveur Zabbix récupérera les informations d'identification suivantes pour l'authentification à la base de données :
  • Nom d'utilisateur : zabbix
  • Mot de passe : <password>
Interface

L'interface Zabbix peut être configurée pour récupérer les identifiants de la base de données depuis le vault, soit pendant l'installation de l'interface, soit en mettant à jour le fichier de configuration de l'interface (zabbix.conf.php).

Si les identifiants du vault ont été modifiés depuis la précédente installation de l'interface, relancez l'installation de l'interface ou mettez à jour zabbix.conf.php. Voir aussi : Mise à jour d'une configuration existante.

Pendant l'installation de l'interface, les paramètres de configuration doivent être spécifiés à l'étape Configurer la connexion à la base de données :

  • Définissez le paramètre Stocker les identifiants dans sur "HashiCorp Vault".
  • Spécifiez les paramètres de connexion :
Paramètre Obligatoire Valeur par défaut Description
Point de terminaison de l'API Vault oui https://localhost:8200 Spécifiez l'URL de connexion au vault au format scheme://host:port
Préfixe Vault non /v1/secret/data/ Indiquez un préfixe personnalisé pour le chemin ou la requête du vault. S'il n'est pas spécifié, la valeur par défaut est utilisée.
Exemple : /v1/secret/data/zabbix/
Chemin du secret Vault non Chemin vers le secret à partir duquel les identifiants de la base de données seront récupérés à l'aide des clés "password" et "username".
Exemple : database
Jeton d'authentification Vault non Indiquez un jeton d'authentification pour un accès en lecture seule au chemin du secret.
Consultez la documentation HashiCorp pour plus d'informations sur la création de jetons et les politiques du vault.

Récupération des valeurs des macros utilisateur

Pour utiliser HashiCorp Vault afin de stocker les valeurs des macros utilisateur Vault secret, assurez-vous que :

Seul le serveur Zabbix nécessite un accès aux valeurs des macros Vault secret depuis le coffre-fort. Les autres composants Zabbix (proxy, interface) n'ont pas besoin d'un tel accès.

La valeur de la macro doit contenir un chemin de référence (au format path:key, par exemple macros:password). Le jeton d'authentification spécifié lors de la configuration du serveur Zabbix (via le paramètre VaultToken) doit fournir un accès en lecture seule à ce chemin.

Consultez Vault secret macros pour des informations détaillées sur le traitement des valeurs de macro par Zabbix.

Syntaxe du chemin

Les symboles barre oblique ("/") et deux-points (":") sont réservés.

Une barre oblique ne peut être utilisée que pour séparer un point de montage d’un chemin (par exemple, secret/zabbix, où le point de montage est « secret » et le chemin est « zabbix »). Dans le cas des macros Vault, un deux-points ne peut être utilisé que pour séparer un chemin/une requête d’une clé.

Il est possible d’encoder en URL les symboles barre oblique et deux-points s’il est nécessaire de créer un point de montage dont le nom est séparé par une barre oblique (par exemple, foo/bar/zabbix, où le point de montage est « foo/bar » et le chemin est « zabbix », peut être encodé sous la forme « foo%2Fbar/zabbix ») et si un nom de point de montage ou un chemin doit contenir un deux-points.

Exemple

  1. Dans Zabbix, ajoutez une macro utilisateur {$PASSWORD} de type « Vault secret » avec la valeur macros:password

  1. Exécutez les commandes CLI suivantes pour créer le secret requis dans le coffre :
# Activez 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

# Ajoutez un nouveau secret avec la clé "password" sous le point de montage "secret/" et le chemin "zabbix/macros".
vault kv put -mount=secret zabbix/macros password=<password>

# Vérifiez que le secret a bien été ajouté.
vault kv get secret/zabbix/macros

# Enfin, testez avec Curl ; notez que "data" doit être ajouté 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/macros
  1. Par conséquent, Zabbix résoudra la macro {$PASSWORD} à la valeur : <password>

Mise à jour d'une configuration existante

Pour mettre à jour une configuration existante afin de récupérer des secrets depuis un HashiCorp Vault :

  1. Mettez à jour les paramètres du fichier de configuration du serveur Zabbix ou du proxy comme décrit dans la section Identifiants de base de données.

  2. Mettez à jour les paramètres de connexion à la base de données en reconfigurant le frontend Zabbix et en spécifiant les paramètres requis comme décrit dans la section Frontend. Pour reconfigurer le frontend Zabbix, ouvrez l'URL de configuration du frontend dans le navigateur :

  • pour Apache : http://<server_ip_or_name>/zabbix/setup.php
  • pour Nginx : http://<server_ip_or_name>/setup.php

Vous pouvez également définir ces paramètres dans le fichier de configuration du frontend (zabbix.conf.php) :

$DB['VAULT']                    = 'HashiCorp';
$DB['VAULT_URL']                = 'https://localhost:8200';
$DB['VAULT_DB_PATH']            = 'database';
$DB['VAULT_TOKEN']              = '<mytoken>';
$DB['VAULT_CERT_FILE']          = '';
$DB['VAULT_KEY_FILE']           = '';
$DB['VAULT_PREFIX']             = '/v1/secret/data/zabbix/';
  1. Configurez les macros utilisateur comme décrit dans la section Valeurs des macros utilisateur, si nécessaire.

Pour mettre à jour une configuration existante afin de récupérer des secrets depuis un CyberArk Vault, voir Configuration CyberArk.