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

  1. 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/
  1. 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
  1. 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:

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

  1. W Zabbix dodaj makro użytkownika {$PASSWORD} typu "Vault secret" o wartości macros:password

  1. 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
  1. 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:

  1. Zaktualizuj parametry pliku konfiguracyjnego serwera Zabbix lub proxy zgodnie z opisem w sekcji Dane uwierzytelniające bazy danych.

  2. 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/';
  1. 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.