HashiCorp konfigurācija
Pārskats
Šajā sadaļā ir paskaidrots, kā konfigurēt Zabbix, lai izgūtu noslēpumus no HashiCorp Vault KV Secrets Engine - Version 2.
Vault ir jāizvieto un jākonfigurē, kā aprakstīts oficiālajā HashiCorp dokumentācijā.
Lai uzzinātu par TLS konfigurēšanu Zabbix, skatiet Noslēpumu glabāšana.
Datubāzes akreditācijas datu izgūšana
Lai veiksmīgi izgūtu noslēpumu ar datubāzes akreditācijas datiem, ir jākonfigurē abi:
- Zabbix serveris/starpniekserveris
- Zabbix lietotāja saskarne
Serveris/starpniekserveris
Lai konfigurētu Zabbix serveri vai starpniekserveri, norādiet šādus konfigurācijas parametrus konfigurācijas failā:
Vault- kuru vault nodrošinātāju izmantot;VaultToken- vault autentifikācijas marķieris (sīkāku informāciju skatiet Zabbix servera/starpniekservera konfigurācijas failā); nevar izmantot kopā arVaultAppRoleID;VaultAppRoleIDunVaultAppSecretID- vault autentifikācijas lomas ID un slepenais ID (sīkāku informāciju skatiet Zabbix servera/starpniekservera konfigurācijas failā); nevar izmantot kopā arVaultToken;VaultURL- vault servera HTTP[S] URL;VaultDBPath- ceļš uz vault noslēpumu, kas satur datubāzes akreditācijas datus (šo opciju var izmantot tikai tad, ja nav norādīti DBUser un DBPassword); Zabbix serveris vai starpniekserveris izgūs akreditācijas datus pēc atslēgām "password" un "username";VaultPrefix- pielāgots prefikss vault ceļam vai vaicājumam atkarībā no vault; ja nav norādīts, tiks izmantots vispiemērotākais noklusējums.
Konfigurācijas parametri Vault, VaultToken (vai VaultAppRoleID/VaultAppSecretID), VaultURL un VaultPrefix tiek izmantoti arī vault autentifikācijai, kad Zabbix serveris apstrādā noslēpumu vault makro (un Zabbix starpniekserveris, ja tas ir konfigurēts). Zabbix serveris un starpniekserveri neatvērs vault noslēpumu makro, kas satur DB akreditācijas datus no VaultDBPath.
Ir ļoti ieteicams izmantot atšķirīgus marķierus dažādiem starpniekserveriem.
Zabbix serveris un Zabbix starpniekserveris nolasa ar vault saistītos konfigurācijas parametrus no zabbix_server.conf un zabbix_proxy.conf startēšanas laikā.
Turklāt Zabbix serveris un Zabbix starpniekserveris startēšanas laikā vienu reizi nolasīs vides mainīgo VAULT_TOKEN un pēc tam to notīrīs, lai tas nebūtu pieejams caur atzarotajiem skriptiem; tā ir kļūda, ja gan VaultToken, gan VAULT_TOKEN parametros ir norādīta vērtība.
Piemērs
- Failā
zabbix_server.confnorādiet šādus parametrus.
Izmantojot VaultToken:
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
Vai arī, izmantojot VaultAppRoleID:
Vault=HashiCorp
VaultAppRoleID=6f1567f1-538d-7d70-e8e4-5d3e59471b2e
VaultAppSecretID=89dac8b1-f7d6-96a7-2ecf-f94d2de3d6f1
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
- Izpildiet šādas CLI komandas, lai vault izveidotu nepieciešamo slepeno informāciju:
# Iespējojiet "secret/" mount point, ja tas vēl nav iespējots; ņemiet vērā, ka jāizmanto "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Ievietojiet jaunus noslēpumus ar atslēgām username un password mount point "secret/" un ceļā "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# Pārbaudiet, vai slepenā informācija ir veiksmīgi pievienota.
vault kv get secret/zabbix/database
# Visbeidzot pārbaudiet ar Curl; ņemiet vērā, ka "data" ir manuāli jāpievieno pēc mount point un "/v1" pirms mount point, kā arī skatiet parametru --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
- Rezultātā Zabbix serveris autentifikācijai datubāzē izgūs šādus akreditācijas datus:
- Lietotājvārds: zabbix
- Parole: <password>
Lietotāja saskarne
Zabbix lietotāja saskarne var tikt konfigurēta, lai izgūtu datubāzes akreditācijas datus no seifa
vai nu lietotāja saskarnes instalēšanas laikā, vai arī atjauninot
lietotāja saskarnes konfigurācijas failu (zabbix.conf.php).
Ja seifa akreditācijas dati ir mainīti kopš iepriekšējās lietotāja saskarnes instalēšanas, palaidiet lietotāja saskarnes instalēšanu vēlreiz
vai atjauniniet zabbix.conf.php. Skatiet arī: Esošās konfigurācijas atjaunināšana.
Lietotāja saskarnes instalēšanas laikā savienojuma parametri jānorāda solī Configure DB Connection.
Konfigurācijas piemērs, izmantojot tokena autentifikāciju:

Konfigurācijas piemērs, izmantojot AppRole autentifikāciju:

| Parameter | Mandatory | Default value | Description |
|---|---|---|---|
| Store credentials in | no | Atlasiet HashiCorp Vault. | |
| Vault API endpoint | yes | https://localhost:8200 | Norādiet URL savienojumam ar seifu formātā scheme://host:port |
| Vault prefix | no | /v1/secret/data/ | Norādiet pielāgotu prefiksu seifa ceļam vai vaicājumam. Ja tas nav norādīts, tiek izmantota noklusējuma vērtība. Piemērs: /v1/secret/data/zabbix/ |
| Vault secret path | yes | Ceļš uz noslēpumu, no kura datubāzes akreditācijas dati tiks izgūti, izmantojot atslēgas "password" un "username". Piemērs: database |
|
| Vault authentication type | no | Atlasiet seifa autentifikācijas veidu: Token - izmantot tokena autentifikāciju; AppRole - izmantot AppRole autentifikācijas metodi. |
|
| Vault authentication token | yes | Norādiet autentifikācijas tokenu tikai lasīšanas piekļuvei noslēpuma ceļam. Skatiet HashiCorp dokumentāciju, lai iegūtu informāciju par tokenu un seifa politiku izveidi. Šis lauks ir pieejams tikai tad, ja kā seifa autentifikācijas veids ir atlasīts Token. |
|
| Vault authentication role ID | yes | Norādiet AppRole lomas ID. Skatiet HashiCorp dokumentāciju, lai iegūtu informāciju par AppRole. Šis lauks ir pieejams tikai tad, ja kā seifa autentifikācijas veids ir atlasīts AppRole. |
|
| Vault authentication secret ID | yes | Norādiet AppRole izsniegto noslēpuma ID. Skatiet HashiCorp dokumentāciju, lai iegūtu informāciju par AppRole. Šis lauks ir pieejams tikai tad, ja kā seifa autentifikācijas veids ir atlasīts AppRole. |
Lietotāja makro vērtību izgūšana
Lai izmantotu HashiCorp Vault Vault secret lietotāja makro vērtību glabāšanai, pārliecinieties, ka:
- Zabbix serveris/starpniekserveris ir konfigurēts darbam ar HashiCorp Vault.
- Parametrs Vault provider sadaļā Administration > General > Other ir iestatīts uz "HashiCorp Vault" (noklusējums).

Zabbix serverim (un Zabbix starpniekserverim, ja tas ir konfigurēts) ir nepieciešama piekļuve Vault secret makro vērtībām no seifa. Zabbix lietotāja saskarnei šāda piekļuve nav nepieciešama.
Makro vērtībai jāietver atsauces ceļš (piemēram, path:key, piemēram, macros:password).
Autentifikācijas marķierim, kas norādīts Zabbix servera/starpniekservera konfigurācijas laikā (izmantojot parametru VaultToken), ir jānodrošina tikai lasīšanas piekļuve šim ceļam.
Skatiet Vault secret macros detalizētai informācijai par makro vērtību apstrādi Zabbix.
Ceļa sintakse
Simboli slīpsvītra ("/") un kols (":") ir rezervēti.
Slīpsvītru var izmantot tikai, lai atdalītu montēšanas punktu no ceļa (piem., secret/zabbix, kur montēšanas punkts ir "secret" un ceļš ir "zabbix"). Vault makrosu gadījumā kolu var izmantot tikai, lai atdalītu ceļu/vaicājumu no atslēgas.
Ir iespējams URL kodēt slīpsvītras un kola simbolus, ja ir nepieciešams izveidot montēšanas punktu ar nosaukumu, kas satur slīpsvītru (piem., foo/bar/zabbix, kur montēšanas punkts ir "foo/bar" un ceļš ir "zabbix", var kodēt kā "foo%2Fbar/zabbix"), kā arī tad, ja montēšanas punkta nosaukumā vai ceļā ir jāiekļauj kols.
Piemērs
- Zabbix pievienojiet lietotāja makro {$PASSWORD} ar tipu "Vault secret" un vērtību
macros:password

- Palaidiet šādas CLI komandas, lai izveidotu nepieciešamo noslēpumu vault:
# Enable "secret/" mount point if not already enabled; note that "kv-v2" must be used.
vault secrets enable -path=secret/ kv-v2
# Put new secret with key "password" under mount point "secret/" and path "zabbix/macros".
vault kv put -mount=secret zabbix/macros password=<password>
# Test that secret is successfully added.
vault kv get secret/zabbix/macros
# Finally test with Curl; note that "data" need to be manually added after mount point and "/v1" before the mount point, also see --capath parameter.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macros
- Rezultātā Zabbix atrisinās makro {$PASSWORD} uz vērtību: <password>
Esošās konfigurācijas atjaunināšana
Lai atjauninātu esošu konfigurāciju slepeno datu izgūšanai no HashiCorp Vault:
-
Atjauniniet Zabbix servera vai starpniekservera konfigurācijas faila parametrus, kā aprakstīts sadaļā Datubāzes akreditācijas dati.
-
Atjauniniet DB savienojuma iestatījumus, pārkonfigurējot Zabbix lietotāja saskarni un norādot nepieciešamos parametrus, kā aprakstīts sadaļā Lietotāja saskarne. Lai pārkonfigurētu Zabbix lietotāja saskarni, pārlūkprogrammā atveriet lietotāja saskarnes iestatīšanas URL:
- Apache gadījumā: http://<server_ip_or_name>/zabbix/setup.php
- Nginx gadījumā: http://<server_ip_or_name>/setup.php
Alternatīvi šos parametrus var iestatīt lietotāja saskarnes konfigurācijas failā (zabbix.conf.php).
Izmantojot Vault token:
$DB['VAULT'] = 'HashiCorp';
$DB['VAULT_URL'] = 'https://localhost:8200';
$DB['VAULT_DB_PATH'] = 'database';
$DB['VAULT_TOKEN'] = 'hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg';
$DB['VAULT_PREFIX'] = '/v1/secret/data/zabbix/';
Vai, izmantojot Vault AppRole metodi:
$DB['VAULT'] = 'HashiCorp';
$DB['VAULT_URL'] = 'https://localhost:8200';
$DB['VAULT_DB_PATH'] = 'database';
$DB['VAULT_APP_ROLE_ID'] = '6f1567f1-538d-7d70-e8e4-5d3e59471b2e';
$DB['VAULT_APP_SECRET_ID'] = '89dac8b1-f7d6-96a7-2ecf-f94d2de3d6f1';
$DB['VAULT_PREFIX'] = '/v1/secret/data/zabbix/';
- Ja nepieciešams, konfigurējiet lietotāja makro, kā aprakstīts sadaļā Lietotāja makro vērtības.
Lai atjauninātu esošu konfigurāciju slepeno datu izgūšanai no CyberArk Vault, skatiet CyberArk konfigurācija.
Problēmu novēršana
- Zabbix servera/starpniekservera žurnālfailā:
237839:20260729:130916.425 Vault token renew started to fail: cannot login into HashiCorp vault with AppRole method: unsuccessful response code "503"
Iespējamais iemesls: HashiCorp Vault ir (atkārtoti) palaists, bet nav atbloķēts (tas ir nepieciešams noklusējuma konfigurācijā, bet nav nepieciešams, ja ir konfigurēts Auto Unseal).
- Zabbix servera/starpniekservera žurnālfailā:
235545:20260729:125617.944 Vault token renew started to fail: cannot login into HashiCorp vault with AppRole method: unsuccessful response code "400"
vai
235545:20260729:125718.537 Vault token renew failed: cannot login into HashiCorp vault with AppRole method: unsuccessful response code "400"
Iespējamais iemesls: VaultAppSecretID ir beidzies derīguma termiņš vai sasniegts tā lietojuma limits HashiCorp vault.