2 Konfiguracja HashiCorp
Przegląd
Ta sekcja wyjaśnia, jak skonfigurować Zabbix do pobierania sekretów z silnika sekretów HashiCorp Vault KV - wersja 2.
Vault powinien zostać wdrożony i skonfigurowany zgodnie z opisem w oficjalnej dokumentacji HashiCorp.
Aby dowiedzieć się więcej o konfigurowaniu TLS w Zabbix, zobacz Przechowywanie sekretów.
Pobieranie danych uwierzytelniających do bazy danych
Aby pomyślnie pobrać sekret zawierający dane uwierzytelniające do bazy danych, należy skonfigurować oba elementy:
- serwer/proxy Zabbix
- frontend Zabbix
Serwer/proxy
Aby skonfigurować serwer lub proxy Zabbix, określ następujące parametry konfiguracji w pliku konfiguracyjnym:
Vault- dostawca magazynu sekretów, który ma być używany.VaultToken- token uwierzytelniania magazynu sekretów (szczegółowe informacje znajdziesz w pliku konfiguracyjnym serwera/proxy Zabbix).VaultURL- adres URL serwera magazynu sekretów HTTP(S).VaultDBPath- ścieżka do sekretu magazynu sekretów zawierającego dane uwierzytelniające do bazy danych (tej opcji można używać tylko wtedy, gdy nie określono DBUser i DBPassword). Serwer lub proxy Zabbix pobierze dane uwierzytelniające za pomocą kluczy „password” i „username”.VaultPrefix- niestandardowy prefiks ścieżki lub zapytania magazynu sekretów, zależnie od magazynu; jeśli nie zostanie określony, zostanie użyta najbardziej odpowiednia wartość domyślna. Pamiętaj, że prefiks musi zaczynać się i kończyć znakiem/.
Serwer Zabbix używa również parametrów konfiguracji Vault, VaultToken, VaultURL i VaultPrefix do uwierzytelniania w magazynie sekretów podczas przetwarzania makr sekretów magazynu.
Serwer Zabbix i proxy Zabbix odczytują parametry konfiguracji związane z magazynem sekretów z plików zabbix_server.conf i zabbix_proxy.conf podczas uruchamiania.
Ponadto serwer Zabbix i proxy Zabbix odczytują zmienną środowiskową VAULT_TOKEN jednokrotnie podczas uruchamiania i usuwają ją, aby nie była dostępna za pośrednictwem skryptów uruchamianych przez forkowanie; wystąpienie wartości zarówno w parametrach VaultToken, jak i VAULT_TOKEN jest błędem.
Serwer Zabbix lub proxy obsługuje automatyczne odnawianie tokenów usług oraz okresowych tokenów usług. Jeśli Zabbix wykryje, że token można odnawiać, będzie go automatycznie odnawiać do momentu osiągnięcia maksymalnego TTL tokenu lub, w przypadku okresowych tokenów usług, bezterminowo.
Przykład
- W pliku zabbix_server.conf określ następujące parametry:
Vault=HashiCorp
VaultToken=hvs.CAESIIG_PILmULFYOsEyWHxkZ2mF2a8VPKNLE8eHqd4autYGGh4KHGh2cy5aeTY0NFNSaUp3ZnpWbDF1RUNjUkNTZEg
VaultURL=https://127.0.0.1:8200
VaultDBPath=database
VaultPrefix=/v1/secret/data/zabbix/
- Uruchom następujące polecenia CLI, aby utworzyć wymagany sekret w vault:
# Włącz punkt montowania "secret/", jeśli nie jest jeszcze włączony; zwróć uwagę, że musi być użyte "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Dodaj nowe sekrety z kluczami username i password w punkcie montowania "secret/" oraz pod ścieżką "zabbix/database".
vault kv put -mount=secret zabbix/database username=zabbix password=<password>
# Sprawdź, czy sekret został pomyślnie dodany.
vault kv get secret/zabbix/database
# Na koniec przetestuj za pomocą Curl; zwróć uwagę, że "data" należy dodać ręcznie po punkcie montowania, a "/v1" przed punktem montowania; zobacz także parametr --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/database
- W rezultacie serwer Zabbix pobierze następujące dane uwierzytelniające do uwierzytelniania bazy danych:
- Nazwa użytkownika: zabbix
- Hasło: <password>
Frontend
Frontend Zabbix może być skonfigurowany do pobierania poświadczeń bazy danych z vault
podczas instalacji frontendu lub przez aktualizację
pliku konfiguracyjnego frontendu (zabbix.conf.php).
Jeśli poświadczenia vault zostały zmienione od czasu poprzedniej instalacji frontendu, uruchom ponownie instalację frontendu
lub zaktualizuj zabbix.conf.php. Zobacz także: Aktualizacja istniejącej konfiguracji.
Podczas instalacji frontendu parametry konfiguracyjne muszą zostać określone na etapie Configure DB Connection:

- Ustaw parametr Store credentials in na „HashiCorp Vault”.
- Określ parametry połączenia:
| Parametr | Obowiązkowy | Wartość domyślna | Opis |
|---|---|---|---|
| Vault API endpoint | tak | https://localhost:8200 | Określ URL połączenia z vault w formacie scheme://host:port |
| Vault prefix | nie | /v1/secret/data/ | Podaj niestandardowy prefiks dla ścieżki lub zapytania vault. Jeśli nie zostanie podany, użyta zostanie wartość domyślna. Przykład: /v1/secret/data/zabbix/ |
| Vault secret path | nie | Ścieżka do sekretu, z którego poświadczenia bazy danych będą pobierane przy użyciu kluczy „password” i „username”. Przykład: database |
|
| Vault authentication token | nie | Podaj token uwierzytelniający do dostępu tylko do odczytu do ścieżki sekretu. Informacje o tworzeniu tokenów i polityk vault można znaleźć w dokumentacji HashiCorp. |
Pobieranie wartości makr użytkownika
Aby używać HashiCorp Vault do przechowywania wartości makr użytkownika Vault secret, upewnij się, że:
- serwer Zabbix jest skonfigurowany do pracy z HashiCorp Vault;
- parametr Vault provider w Administration → General → Other jest ustawiony na "HashiCorp Vault" (domyślnie).

Tylko serwer Zabbix wymaga dostępu do wartości makr Vault secret z vault. Inne komponenty Zabbix (proxy, frontend) nie potrzebują takiego dostępu.
Wartość makra powinna zawierać ścieżkę referencyjną (w formacie path:key, na przykład macros:password).
Token uwierzytelniający określony podczas konfiguracji serwera Zabbix (za pomocą parametru VaultToken) musi zapewniać dostęp tylko do odczytu do tej ścieżki.
Zobacz Vault secret macros, aby uzyskać szczegółowe informacje o przetwarzaniu wartości makr przez Zabbix.
Składnia ścieżki
Symbole ukośnika ("/") i dwukropka (":") są zastrzeżone.
Ukośnik może być używany wyłącznie do oddzielania punktu montowania od ścieżki (np. secret/zabbix, gdzie punkt montowania to "secret", a ścieżka to "zabbix"). W przypadku makr Vault dwukropek może być używany wyłącznie do oddzielania ścieżki/zapytania od klucza.
Możliwe jest zakodowanie symboli ukośnika i dwukropka w formacie URL, jeśli istnieje potrzeba utworzenia punktu montowania o nazwie rozdzielonej ukośnikiem (np. foo/bar/zabbix, gdzie punkt montowania to "foo/bar", a ścieżka to "zabbix", można zakodować jako "foo%2Fbar/zabbix"), a także jeśli nazwa punktu montowania lub ścieżka muszą zawierać dwukropek.
Przykład
- W Zabbix dodaj makro użytkownika {$PASSWORD} typu "Vault secret" o wartości
macros:password

- Uruchom następujące polecenia CLI, aby utworzyć wymagany sekret w vault:
# Włącz punkt montowania "secret/", jeśli nie jest jeszcze włączony; zwróć uwagę, że musi zostać użyte "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Umieść nowy sekret z kluczem "password" w punkcie montowania "secret/" i pod ścieżką "zabbix/macros".
vault kv put -mount=secret zabbix/macros password=<password>
# Sprawdź, czy sekret został pomyślnie dodany.
vault kv get secret/zabbix/macros
# Na koniec przetestuj za pomocą Curl; zwróć uwagę, że "data" należy dodać ręcznie po punkcie montowania, a "/v1" przed punktem montowania; zobacz także parametr --capath.
curl --header "X-Vault-Token: <VaultToken>" https://127.0.0.1:8200/v1/secret/data/zabbix/macros
- W rezultacie Zabbix rozwiąże makro {$PASSWORD} do wartości: <password>
Aktualizacja istniejącej konfiguracji
Aby zaktualizować istniejącą konfigurację pobierania sekretów z HashiCorp Vault:
-
Zaktualizuj parametry pliku konfiguracyjnego serwera Zabbix lub proxy zgodnie z opisem w sekcji Dane uwierzytelniające bazy danych.
-
Zaktualizuj ustawienia połączenia z DB, rekonfigurując frontend Zabbix i podając wymagane parametry zgodnie z opisem w sekcji Frontend. Aby ponownie skonfigurować frontend Zabbix, otwórz w przeglądarce URL konfiguracji frontend:
- dla Apache: http://<server_ip_or_name>/zabbix/setup.php
- dla Nginx: http://<server_ip_or_name>/setup.php
Alternatywnie parametry te można ustawić w pliku konfiguracyjnym 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/';
- W razie potrzeby skonfiguruj makra użytkownika zgodnie z opisem w sekcji Wartości makr użytkownika.
Aby zaktualizować istniejącą konfigurację pobierania sekretów z CyberArk Vault, zobacz Konfiguracja CyberArk.