Konfiguracja HashiCorp
Przegląd
Ta sekcja wyjaśnia, jak skonfigurować Zabbix do pobierania sekretów z HashiCorp Vault KV Secrets Engine - Version 2.
Vault powinien być wdrożony i skonfigurowany zgodnie z opisem w oficjalnej dokumentacji HashiCorp.
Aby dowiedzieć się, jak skonfigurować 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 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 są określone 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żyty najbardziej odpowiedni domyślny.
Parametry konfiguracji Vault, VaultToken, VaultURL i VaultPrefix są również używane do uwierzytelniania w vault podczas przetwarzania makr sekretów vault przez Zabbix server (oraz Zabbix proxy, jeśli jest skonfigurowany). Zabbix server i proxy nie będą otwierać makr sekretów vault, które zawierają poświadczenia bazy danych z VaultDBPath.
Zdecydowanie zaleca się używanie różnych tokenów dla różnych proxy.
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 i 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ść.
Przykład
- W pliku
zabbix_server.confokreś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; pamiętaj, że należy użyć "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Umieść nowe sekrety z kluczami username i password w punkcie montowania "secret/" oraz ścieżce "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; pamiętaj, że "data" należy dodać ręcznie po punkcie montowania, a "/v1" przed punktem montowania, zobacz też 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 poświadczenia do uwierzytelniania w bazie danych:
- Nazwa użytkownika: zabbix
- Hasło: <password>
Frontend
Frontend Zabbixa można skonfigurować tak, aby pobierał dane uwierzytelniające do bazy danych z vaulta
podczas instalacji frontend albo przez aktualizację
pliku konfiguracyjnego frontend (zabbix.conf.php).
Jeśli dane uwierzytelniające vaulta 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ć podane na etapie Configure DB Connection:

- Ustaw parametr Store credentials in na "HashiCorp Vault".
- Określ parametry połączenia:
| Parameter | Mandatory | Default value | Description |
|---|---|---|---|
| Vault API endpoint | yes | https://localhost:8200 | Określ adres URL do połączenia z vaultem w formacie scheme://host:port |
| Vault prefix | no | /v1/secret/data/ | Podaj niestandardowy prefiks dla ścieżki lub zapytania vaulta. Jeśli nie zostanie określony, zostanie użyta wartość domyślna. Przykład: /v1/secret/data/zabbix/ |
| Vault secret path | no | Ścieżka do sekretu, z którego dane uwierzytelniające do bazy danych mają zostać pobrane za pomocą kluczy "password" i "username". Przykład: database |
|
| Vault authentication token | no | Podaj token uwierzytelniający do dostępu tylko do odczytu do ścieżki sekretu. Informacje o tworzeniu tokenów i polityk vaulta znajdziesz 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:
- Zabbix server/proxy jest skonfigurowany do pracy z HashiCorp Vault.
- Parametr Vault provider w Administration > General > Other jest ustawiony na "HashiCorp Vault" (domyślnie).

Zabbix server (oraz Zabbix proxy, jeśli jest skonfigurowany) wymaga dostępu do wartości makr Vault secret z vault. Zabbix frontend nie potrzebuje 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 Zabbix server/proxy (za pomocą parametru VaultToken) musi zapewniać dostęp tylko do odczytu do tej ścieżki.
Szczegółowe informacje o przetwarzaniu wartości makr przez Zabbix znajdziesz w sekcji Vault secret macros.
Składnia ścieżki
Symbole ukośnika ("/") i dwukropka (":") są zarezerwowane.
Ukośnik może być używany wyłącznie do oddzielenia punktu montowania od ścieżki (np. secret/zabbix, gdzie punktem montowania jest "secret", a ścieżką "zabbix"). W przypadku makr Vault dwukropek może być używany wyłącznie do oddzielenia ścieżki/zapytania od klucza.
Możliwe jest zakodowanie znaków ukośnika i dwukropka w formacie URL, jeśli istnieje potrzeba utworzenia punktu montowania o nazwie zawierającej ukośnik (np. foo/bar/zabbix, gdzie punktem montowania jest "foo/bar", a ścieżką "zabbix", można zakodować jako "foo%2Fbar/zabbix") oraz jeśli nazwa punktu montowania lub ścieżka muszą zawierać dwukropek.
Przykład
- W Zabbix dodaj makro użytkownika {$PASSWORD} typu "Vault secret" i z 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; pamiętaj, że należy użyć "kv-v2".
vault secrets enable -path=secret/ kv-v2
# Dodaj nowy sekret z kluczem "password" w punkcie montowania "secret/" i ścieżce "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; pamiętaj, że "data" należy ręcznie dodać po punkcie montowania, a "/v1" przed punktem montowania; zobacz też 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 lub proxy Zabbix zgodnie z opisem w sekcji Poświadczenia bazy danych.
-
Zaktualizuj ustawienia połączenia z bazą danych, rekonfigurując frontend Zabbix i określając wymagane parametry zgodnie z opisem w sekcji Frontend. Aby przekonfigurować frontend Zabbix, otwórz w przeglądarce adres URL konfiguracji frontendu:
- 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 frontendu (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.