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 danych uwierzytelniających do bazy danych

Aby pomyślnie pobrać sekret zawierający dane uwierzytelniające do bazy danych, należy skonfigurować oba elementy:

  • serwer/proxy Zabbix
  • frontend Zabbix
Serwer/proxy

Aby skonfigurować serwer lub proxy Zabbix, określ następujące parametry konfiguracji w pliku konfiguracyjnym:

  • Vault - dostawca magazynu sekretów, który ma być używany.
  • VaultToken - token uwierzytelniania magazynu sekretów (szczegółowe informacje znajdziesz w pliku konfiguracyjnym serwera/proxy Zabbix).
  • VaultURL - adres URL serwera magazynu sekretów HTTP(S).
  • VaultDBPath - ścieżka do sekretu magazynu sekretów zawierającego dane uwierzytelniające do bazy danych (tej opcji można używać tylko wtedy, gdy nie określono DBUser i DBPassword). Serwer lub proxy Zabbix pobierze dane uwierzytelniające za pomocą kluczy „password” i „username”.
  • VaultPrefix - niestandardowy prefiks ścieżki lub zapytania magazynu sekretów, zależnie od magazynu; jeśli nie zostanie określony, zostanie użyta najbardziej odpowiednia wartość domyślna. Pamiętaj, że prefiks musi zaczynać się i kończyć znakiem /.

Serwer Zabbix używa również parametrów konfiguracji Vault, VaultToken, VaultURL i VaultPrefix do uwierzytelniania w magazynie sekretów podczas przetwarzania makr sekretów magazynu.

Serwer Zabbix i proxy Zabbix odczytują parametry konfiguracji związane z magazynem sekretów z plików zabbix_server.conf i zabbix_proxy.conf podczas uruchamiania. Ponadto serwer Zabbix i proxy Zabbix odczytują zmienną środowiskową VAULT_TOKEN jednokrotnie podczas uruchamiania i usuwają ją, aby nie była dostępna za pośrednictwem skryptów uruchamianych przez forkowanie; wystąpienie wartości zarówno w parametrach VaultToken, jak i VAULT_TOKEN jest błędem.

Serwer Zabbix lub proxy obsługuje automatyczne odnawianie tokenów usług oraz okresowych tokenów usług. Jeśli Zabbix wykryje, że token można odnawiać, będzie go automatycznie odnawiać do momentu osiągnięcia maksymalnego TTL tokenu lub, w przypadku okresowych tokenów usług, 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.