2 Konfiguracja HashiCorp
Przegląd
Ta sekcja wyjaśnia, jak skonfigurować Zabbix do pobierania sekretów z HashiCorp Vault KV Secrets Engine - 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 zawierający poświadczenia bazy danych, należy skonfigurować oba następujące elementy:
- serwer/proxy Zabbix
- frontend Zabbix
Serwer/proxy
Aby skonfigurować serwer lub proxy Zabbix, należy określić następujące parametry konfiguracyjne w pliku konfiguracyjnym:
Vault— który dostawca vault ma być używany;VaultToken— token uwierzytelniania vault (szczegóły znajdują się w pliku konfiguracyjnym serwera/proxy Zabbix);VaultURL— adres URL 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); serwer lub proxy Zabbix pobierze poświadczenia przy użyciu kluczy „password” i „username”;VaultPrefix— niestandardowy prefiks ścieżki lub zapytania vault, zależnie od vault; jeśli nie zostanie określony, użyta zostanie najbardziej odpowiednia wartość domyślna.
Parametry konfiguracyjne Vault, VaultToken, VaultURL i VaultPrefix są również używane do uwierzytelniania w vault podczas przetwarzania makr sekretów vault przez serwer Zabbix (oraz proxy Zabbix, jeśli jest skonfigurowany). Serwer Zabbix i proxy Zabbix nie będą otwierać makr sekretów vault zawierających poświadczenia DB z VaultDBPath.
Zdecydowanie zaleca się używanie różnych tokenów dla różnych proxy.
Serwer Zabbix i proxy Zabbix odczytują parametry konfiguracyjne związane z vault z plików zabbix_server.conf i zabbix_proxy.conf podczas uruchamiania.
Dodatkowo serwer Zabbix i proxy Zabbix odczytają zmienną środowiskową VAULT_TOKEN jednokrotnie podczas uruchamiania, a następnie ją usuną, aby nie była dostępna dla skryptów potomnych; wystąpi błąd, jeśli zarówno parametr VaultToken, jak i VAULT_TOKEN zawierają wartość.
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
zarówno podczas instalacji frontend, jak i przez aktualizację
pliku konfiguracyjnego frontend (zabbix.conf.php).
Jeśli poświadczenia vault zostały zmienione od czasu poprzedniej instalacji frontend, uruchom ponownie instalację frontend
lub zaktualizuj zabbix.conf.php. Zobacz także: Aktualizacja istniejącej konfiguracji.
Podczas instalacji frontend parametry konfiguracyjne muszą zostać określone w kroku 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 | Podaj adres 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żyty zostanie prefiks domyślny. 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 zapewniający dostęp tylko do odczytu ś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 typu Vault secret, upewnij się, że:
- serwer/proxy Zabbix jest skonfigurowany do pracy z HashiCorp Vault;
- parametr Vault provider w Administracja → Ogólne → Inne jest ustawiony na „HashiCorp Vault” (domyślnie);

Serwer Zabbix (oraz proxy Zabbix, jeśli jest skonfigurowany) wymaga dostępu do wartości makr typu Vault secret z sejfu. Frontend Zabbix nie wymaga takiego dostępu.
Wartość makra powinna zawierać ścieżkę referencyjną (w postaci path:key, na przykład macros:password).
Token uwierzytelniający określony podczas konfiguracji serwera/proxy Zabbix (parametrem VaultToken) musi zapewniać dostęp tylko do odczytu do tej ścieżki.
Szczegółowe informacje o przetwarzaniu wartości makr przez Zabbix można znaleźć w sekcji Makra typu Vault secret.
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.