HashiCorp konfigurācija

Pārskats

Šajā sadaļā ir izskaidrots, kā konfigurēt Zabbix noslēpumu izgūšanai 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 vairāk par TLS konfigurēšanu Zabbix, skatiet sadaļu 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, konfigurācijas failā norādiet šādus konfigurācijas parametrus:

  • Vault - kurš vault nodrošinātājs jāizmanto.
  • VaultToken - vault autentifikācijas tokens (detalizētu informāciju skatiet Zabbix servera/starpniekservera konfigurācijas failā); to nevar izmantot kopā ar VaultAppRoleID.
  • VaultAppRoleID un VaultAppSecretID - vault autentifikācijas lomas ID un slepenais ID (detalizētu informāciju skatiet Zabbix servera/starpniekservera konfigurācijas failā); tos nevar izmantot kopā ar VaultToken.
  • VaultURL - vault servera HTTP(S) URL.
  • VaultDBPath - ceļš uz vault noslēpumu, kurā ir datubāzes akreditācijas dati (šo opciju var izmantot tikai tad, ja DBUser un DBPassword nav norādīti). Zabbix serveris vai starpniekserveris izgūs akreditācijas datus, izmantojot atslēgas "password" un "username".
  • VaultPrefix - pielāgots prefikss vault ceļam vai vaicājumam atkarībā no vault; ja tas nav norādīts, tiks izmantota vispiemērotākā noklusējuma vērtība. Ņemiet vērā, ka prefiksam jāsākas un jābeidzas ar /.

Konfigurācijas parametri Vault, VaultToken (vai VaultAppRoleID/VaultAppSecretID), VaultURL un VaultPrefix tiek izmantoti arī vault autentifikācijai, kad Zabbix serveris apstrādā slepenos vault makro (un Zabbix starpniekserveris, ja tas ir konfigurēts). Zabbix serveris un starpniekserveri neatvērs slepenos vault makro, kas satur DB akreditācijas datus no VaultDBPath.

Ir stingri ieteicams dažādiem starpniekserveriem izmantot atšķirīgus tokenus.

Zabbix serveris un Zabbix starpniekserveris palaišanas laikā nolasa ar vault saistītos konfigurācijas parametrus no zabbix_server.conf un zabbix_proxy.conf.

Turklāt Zabbix serveris un Zabbix starpniekserveris palaišanas laikā vienreiz nolasa vides mainīgo VAULT_TOKEN un noņem to, lai tas nebūtu pieejams caur atdalītajiem skriptiem; ja gan VaultToken, gan VAULT_TOKEN parametri satur vērtību, tā ir kļūda.

Piemērs
  1. Konfigurējiet Zabbix servera parametrus.

Neizmantojiet dokumentācijā norādītās piemēra marķiera, lomas ID vai slepenā ID vērtības produkcijas vidēs.

  • Ja izmantojat vides mainīgo VAULT_TOKEN, norādiet tālāk norādītos parametrus Zabbix servera konfigurācijas failā (zabbix_server.conf) un iestatiet mainīgo:
Vault=HashiCorp
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/

Pirms tā palaišanas iestatiet Zabbix servera vides mainīgo VAULT_TOKEN:

export VAULT_TOKEN=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
zabbix_server -c /etc/zabbix/zabbix_server.conf
  • Ja izmantojat parametru VaultToken, norādiet tālāk norādītos parametrus Zabbix servera konfigurācijas failā:

Ja izmantojat parametru VaultToken, marķieris konfigurācijas failā tiek saglabāts vienkāršā tekstā. Iestatiet faila atļaujas uz 0600, lai to varētu lasīt tikai lietotājs, kas palaiž Zabbix serveri vai starpniekserveri.

Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
  • Ja izmantojat parametru VaultAppRoleID, norādiet tālāk norādītos parametrus Zabbix servera konfigurācijas failā:

Ja izmantojat parametru VaultAppSecretID, slepenais ID konfigurācijas failā tiek saglabāts vienkāršā tekstā. Iestatiet faila atļaujas uz 0600, lai to varētu lasīt tikai lietotājs, kas palaiž Zabbix serveri vai starpniekserveri.

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/
  1. Izpildiet tālāk norādītās CLI komandas, lai glabātuvē izveidotu nepieciešamo slepeno vērtību:
# Iespējojiet "secret/" montēšanas punktu, ja tas vēl nav iespējots; ņemiet vērā, ka jāizmanto "kv-v2".
vault secrets enable -path=secret/ kv-v2

# Ievietojiet jaunas slepenās vērtības ar atslēgām username un password montēšanas punktā "secret/" un ceļā "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>

# Pārbaudiet, vai slepenā vērtība ir veiksmīgi pievienota.
vault kv get secret/zabbix/database

# Visbeidzot pārbaudiet ar Curl; ņemiet vērā, ka pēc montēšanas punkta manuāli jāpievieno "data", bet pirms montēšanas punkta - "/v1"; skatiet arī parametru --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
  1. Rezultātā Zabbix serveris iegūs tālāk norādītos akreditācijas datus autentifikācijai datubāzē:
  • Lietotājvārds: zabbix
  • Parole: <password>

Lietotāja saskarne

Zabbix lietotāja saskarni var konfigurēt, lai tā izgūtu datubāzes akreditācijas datus no glabātavas vai nu lietotāja saskarnes instalēšanas laikā, vai atjauninot lietotāja saskarnes konfigurācijas failu (zabbix.conf.php).

Ja glabātavas akreditācijas dati kopš iepriekšējās lietotāja saskarnes instalēšanas ir mainīti, atjauniniet esošo konfigurāciju.

Lietotāja saskarnes instalēšanas laikā savienojuma parametri jānorāda darbībā Configure DB Connection.

Konfigurācijas piemērs, izmantojot marķiera 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 savienojuma izveidei ar glabātavu formātā scheme://host:port
Vault prefix no /v1/secret/data/ Norādiet pielāgotu glabātavas ceļa vai vaicājuma prefiksu. 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 jāizgūst, izmantojot atslēgas "password" un "username".
Piemērs: database
Vault authentication type no Atlasiet glabātavas autentifikācijas veidu:
Token - izmantot marķiera autentifikāciju;
AppRole - izmantot AppRole autentifikācijas metodi.
Vault authentication token yes Norādiet autentifikācijas marķieri tikai lasīšanas piekļuvei noslēpuma ceļam.
Informāciju par marķieru un glabātavas politiku izveidi skatiet HashiCorp dokumentācijā.
Šis lauks ir pieejams tikai tad, ja kā glabātavas autentifikācijas veids ir atlasīts Token.
Vault authentication role ID yes Norādiet AppRole lomas ID.
Informāciju par AppRole skatiet HashiCorp dokumentācijā.
Šis lauks ir pieejams tikai tad, ja kā glabātavas autentifikācijas veids ir atlasīts AppRole.
Vault authentication secret ID yes Norādiet AppRole piešķirto noslēpuma ID.
Informāciju par AppRole skatiet HashiCorp dokumentācijā.
Šis lauks ir pieejams tikai tad, ja kā glabātavas autentifikācijas veids ir atlasīts AppRole.

Lietotāja makro vērtību izgūšana

Lai izmantotu HashiCorp Vault Vault noslēpuma lietotāja makro vērtību glabāšanai, pārliecinieties, ka:

Zabbix serverim (un Zabbix starpniekserverim, ja tas ir konfigurēts) ir nepieciešama piekļuve Vault noslēpuma makro vērtībām glabātuvē. Zabbix lietotāja saskarnei šāda piekļuve nav nepieciešama.

Makro vērtībai jāsatur atsauces ceļš (formātā path:key, piemēram, macros:password). Autentifikācijas pilnvarai, kas norādīta Zabbix servera/starpniekservera konfigurēšanas laikā (izmantojot parametru VaultToken), ir jānodrošina tikai lasīšanas piekļuve šim ceļam.

Detalizētu informāciju par makro vērtību apstrādi Zabbix skatiet sadaļā Vault noslēpuma makro.

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

  1. Zabbix pievienojiet lietotāja makro {$PASSWORD} ar tipu "Vault secret" un vērtību macros:password

  1. 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
  1. Rezultātā Zabbix atrisinās makro {$PASSWORD} uz vērtību: <password>

Esošās konfigurācijas atjaunināšana

Lai atjauninātu esošo konfigurāciju noslēpumu izgūšanai no HashiCorp Vault:

  1. Atjauniniet Zabbix servera vai starpniekservera konfigurācijas faila parametrus, kā aprakstīts sadaļā Datubāzes akreditācijas dati.

  2. Atjauniniet Zabbix lietotāja saskarnes konfigurācijas faila parametrus:

Izmantojot Vault pilnvaru:

$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/';
  1. Ja nepieciešams, konfigurējiet lietotāja makro, kā aprakstīts sadaļā Lietotāja makro vērtības.

Lai atjauninātu esošo konfigurāciju noslēpumu izgūšanai no CyberArk Vault, skatiet sadaļu CyberArk konfigurācija.

Problēmu novēršana

  1. 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 tika (atkārtoti) palaists, taču tas nav atslēgts (tas ir nepieciešams noklusējuma konfigurācijā, bet nav nepieciešams, ja ir konfigurēta automātiskā atslēgšana).

  1. 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 HashiCorp Vault ir beidzies vai ir sasniegts tā izmantošanas reižu ierobežojums.