2 Configurazione di HashiCorp
Panoramica
Questa sezione spiega come configurare Zabbix per recuperare segreti da HashiCorp Vault KV Secrets Engine - Versione 2.
Il vault deve essere distribuito e configurato come descritto nella documentazione ufficiale di HashiCorp.
Per informazioni sulla configurazione di TLS in Zabbix, vedere Archiviazione dei segreti.
Recupero delle credenziali del database
Per recuperare correttamente un segreto contenente le credenziali del database, è necessario configurare entrambi:
- Zabbix server/proxy
- Zabbix frontend
Server/proxy
Per configurare Zabbix server o proxy, specificare i seguenti parametri di configurazione nel file di configurazione:
Vault- quale provider vault deve essere utilizzato;VaultToken- token di autenticazione del vault (vedere il file di configurazione di Zabbix server/proxy per i dettagli);VaultURL- URL HTTP[S] del server vault;VaultDBPath- percorso del segreto vault contenente le credenziali del database (questa opzione può essere utilizzata solo se DBUser e DBPassword non sono specificati); Zabbix server o proxy recupererà le credenziali tramite le chiavi "password" e "username";VaultPrefix- prefisso personalizzato per il percorso o la query del vault, a seconda del vault; se non specificato, verrà utilizzato il valore predefinito più adatto.
I parametri di configurazione Vault, VaultToken, VaultURL e VaultPrefix vengono utilizzati anche per l'autenticazione al vault durante l'elaborazione delle macro del vault segreto da parte di Zabbix server (e di Zabbix proxy, se configurato). Zabbix server e i proxy non apriranno le macro del vault segreto che contengono credenziali DB da VaultDBPath.
Si consiglia vivamente di utilizzare token diversi per proxy diversi.
Zabbix server e Zabbix proxy leggono i parametri di configurazione relativi al vault da zabbix_server.conf e zabbix_proxy.conf all'avvio.
Inoltre, Zabbix server e Zabbix proxy leggeranno la variabile d'ambiente VAULT_TOKEN una volta durante l'avvio e la rimuoveranno in modo che non sia disponibile tramite script forkati; è considerato un errore se sia VaultToken sia VAULT_TOKEN contengono un valore.
Esempio
- In zabbix_server.conf, specificare i seguenti parametri:
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
- Eseguire i seguenti comandi CLI per creare il secret richiesto nel vault:
# Abilitare il punto di mount "secret/" se non è già abilitato; notare che deve essere usato "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Inserire nuovi secret con le chiavi username e password sotto il punto di mount "secret/" e il percorso "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# Verificare che il secret sia stato aggiunto correttamente.
vault kv get secret/zabbix/database
# Infine verificare con Curl; notare che "data" deve essere aggiunto manualmente dopo il punto di mount e "/v1" prima del punto di mount, vedere anche il parametro --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
- Di conseguenza, Zabbix server recupererà le seguenti credenziali per l'autenticazione al database:
- Nome utente: zabbix
- Password: <password>
Frontend
Il frontend di Zabbix può essere configurato per recuperare le credenziali del database dal vault
sia durante l'installazione del frontend sia aggiornando il
file di configurazione del frontend (zabbix.conf.php).
Se le credenziali del vault sono state modificate dopo la precedente installazione del frontend, eseguire nuovamente l'installazione del frontend
oppure aggiornare zabbix.conf.php. Vedere anche: Aggiornamento della configurazione esistente.
Durante l'installazione del frontend i parametri di configurazione devono essere specificati nel passaggio Configure DB Connection:

- Impostare il parametro Store credentials in su "HashiCorp Vault".
- Specificare i parametri di connessione:
| Parameter | Mandatory | Default value | Description |
|---|---|---|---|
| Vault API endpoint | yes | https://localhost:8200 | Specificare l'URL per la connessione al vault nel formato scheme://host:port |
| Vault prefix | no | /v1/secret/data/ | Fornire un prefisso personalizzato per il percorso o la query del vault. Se non specificato, viene utilizzato quello predefinito. Esempio: /v1/secret/data/zabbix/ |
| Vault secret path | no | Un percorso del segreto da cui recuperare le credenziali per il database tramite le chiavi "password" e "username". Esempio: database |
|
| Vault authentication token | no | Fornire un token di autenticazione con accesso in sola lettura al percorso del segreto. Consultare la documentazione di HashiCorp per informazioni sulla creazione di token e policy del vault. |
Recupero dei valori delle macro utente
Per utilizzare HashiCorp Vault per memorizzare i valori delle macro utente Vault secret, assicurati che:
- Zabbix server/proxy sia configurato per funzionare con HashiCorp Vault;
- il parametro Vault provider in Administration → General → Other sia impostato su "HashiCorp Vault" (predefinito);

Zabbix server (e Zabbix proxy, se configurato) richiedono l'accesso ai valori delle macro Vault secret dal vault. Zabbix frontend non necessita di tale accesso.
Il valore della macro deve contenere un percorso di riferimento (come path:key, ad esempio macros:password).
Il token di autenticazione specificato durante la configurazione di Zabbix server/proxy (tramite il parametro VaultToken) deve fornire accesso in sola lettura a questo percorso.
Per informazioni dettagliate sull'elaborazione dei valori delle macro da parte di Zabbix, vedi Vault secret macros.
Sintassi del percorso
I simboli barra obliqua ("/") e due punti (":") sono riservati.
Una barra obliqua può essere utilizzata solo per separare un punto di mount da un percorso (ad esempio, secret/zabbix, dove il punto di mount è "secret" e il percorso è "zabbix"). Nel caso delle macro Vault, i due punti possono essere utilizzati solo per separare un percorso/query da una chiave.
È possibile codificare in URL i simboli barra obliqua e due punti se è necessario creare un punto di mount con un nome separato da una barra obliqua (ad esempio, foo/bar/zabbix, dove il punto di mount è "foo/bar" e il percorso è "zabbix", può essere codificato come "foo%2Fbar/zabbix") e se un nome di punto di mount o un percorso devono contenere i due punti.
Esempio
- In Zabbix, aggiungere una macro utente {$PASSWORD} di tipo "Vault secret" e con il valore
macros:password

- Eseguire i seguenti comandi CLI per creare il secret richiesto nel vault:
# Abilitare il punto di mount "secret/" se non è già abilitato; notare che deve essere usato "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Inserire un nuovo secret con chiave "password" sotto il punto di mount "secret/" e il percorso "zabbix/macros".
vault kv put -mount=secret zabbix/macros password=<password>
# Verificare che il secret sia stato aggiunto correttamente.
vault kv get secret/zabbix/macros
# Infine verificare con Curl; notare che "data" deve essere aggiunto manualmente dopo il punto di mount e "/v1" prima del punto di mount, vedere anche il parametro --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macros
- Di conseguenza, Zabbix risolverà la macro {$PASSWORD} nel valore: <password>
Aggiornamento di una configurazione esistente
Per aggiornare una configurazione esistente per il recupero dei segreti da un HashiCorp Vault:
-
Aggiornare i parametri del file di configurazione di Zabbix server o proxy come descritto nella sezione Credenziali del database.
-
Aggiornare le impostazioni di connessione al DB riconfigurando Zabbix frontend e specificando i parametri richiesti come descritto nella sezione Frontend. Per riconfigurare Zabbix frontend, aprire nel browser l'URL di configurazione del frontend:
- per Apache: http://<server_ip_or_name>/zabbix/setup.php
- per Nginx: http://<server_ip_or_name>/setup.php
In alternativa, questi parametri possono essere impostati nel file di configurazione del 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/';
- Configurare le macro utente come descritto nella sezione Valori delle macro utente, se necessario.
Per aggiornare una configurazione esistente per il recupero dei segreti da un CyberArk Vault, vedere Configurazione di CyberArk.