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 poświadczeń bazy danych
Aby pomyślnie pobrać sekret z poświadczeniami bazy danych, należy skonfigurować oba elementy:
- Zabbix server/proxy
- Zabbix frontend
Server/proxy
Aby skonfigurować Zabbix server lub proxy, należy określić następujące parametry konfiguracji w pliku konfiguracyjnym:
Vault- który dostawca vault ma być używany;VaultToken- token uwierzytelniania vault (szczegóły znajdują się w pliku konfiguracyjnym Zabbix server/proxy);VaultURL- adres HTTP[S] serwera vault;VaultDBPath- ścieżka do sekretu vault zawierającego poświadczenia bazy danych (tej opcji można użyć tylko wtedy, gdy nie określono DBUser i DBPassword); Zabbix server lub proxy pobierze poświadczenia według kluczy "password" i "username";VaultPrefix- niestandardowy prefiks dla ścieżki lub zapytania vault, zależnie od vault; jeśli nie zostanie określony, zostanie użyta najbardziej odpowiednia wartość domyślna.
Zabbix server używa również parametrów konfiguracji Vault, VaultToken, VaultURL i VaultPrefix do uwierzytelniania w vault podczas przetwarzania makr sekretów vault.
Zabbix server i Zabbix proxy odczytują parametry konfiguracji związane z vault z plików zabbix_server.conf i zabbix_proxy.conf podczas uruchamiania.
Dodatkowo Zabbix server i Zabbix proxy odczytają zmienną środowiskową VAULT_TOKEN tylko raz podczas uruchamiania, a następnie ją usuną, aby nie była dostępna dla skryptów uruchamianych przez fork; wystąpi błąd, jeśli zarówno parametr VaultToken, jak i VAULT_TOKEN zawierają wartość.
Zabbix server lub proxy obsługują automatyczne odnawianie tokenów usługowych oraz okresowych tokenów usługowych. Jeśli Zabbix wykryje, że token można odnowić, będzie go automatycznie odnawiać aż do osiągnięcia maksymalnego TTL tokenu lub, w przypadku okresowych tokenów usługowych, 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.