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

  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 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 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

  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.