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 officielle de HashiCorp.

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

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

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

  • serveur/proxy Zabbix
  • interface web Zabbix
Serveur/proxy

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

  • Vault - indique quel fournisseur de coffre-fort doit être utilisé ;
  • VaultToken - jeton d'authentification du coffre-fort (voir le fichier de configuration du serveur/proxy Zabbix pour plus de détails) ;
  • VaultURL - URL HTTP[S] du serveur de coffre-fort ;
  • VaultDBPath - chemin vers le secret du coffre-fort contenant les identifiants de la base de données (cette option ne peut être utilisée que si DBUser et DBPassword ne sont pas spécifiés) ; le serveur ou le proxy Zabbix 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.

Les paramètres de configuration Vault, VaultToken, VaultURL et VaultPrefix sont également utilisés pour l'authentification au coffre-fort lors du traitement des macros de coffre-fort secret par le serveur Zabbix (et le proxy Zabbix, s'il est configuré). Le serveur Zabbix et les proxys Zabbix n'ouvriront pas les macros de secret du coffre-fort contenant les identifiants de base de données provenant de VaultDBPath.

L'utilisation de jetons différents pour différents proxys est fortement recommandée.

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

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>
Frontend

Le frontend Zabbix peut être configuré pour récupérer les identifiants de la base de données depuis le coffre-fort, soit lors de l’installation du frontend, soit en mettant à jour le fichier de configuration du frontend (zabbix.conf.php).

Si les identifiants du coffre-fort ont été modifiés depuis la précédente installation du frontend, relancez l’installation du frontend ou mettez à jour zabbix.conf.php. Voir aussi : Mise à jour de la configuration existante.

Lors de l’installation du frontend, 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 Indiquez l’URL de connexion au coffre-fort au format scheme://host:port
Préfixe Vault non /v1/secret/data/ Fournissez un préfixe personnalisé pour le chemin ou la requête du coffre-fort. 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 Fournissez un jeton d’authentification avec 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 coffre-fort.

Récupération des valeurs des macros utilisateur

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

Le serveur Zabbix (et le proxy Zabbix, si configuré) nécessitent un accès aux valeurs des macros Vault secret depuis le coffre-fort. Le frontend Zabbix n’a 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/proxy 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 macros 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.