Co to jest audyt pierwszej strony?

Urządzenia audytowe w Vault: Szczegółowy przewodnik

15/10/2022

Rating: 4.75 (6922 votes)

W dynamicznym świecie zarządzania sekretami, urządzenia audytowe w Vault odgrywają kluczową rolę w utrzymaniu bezpieczeństwa i zgodności. Są to komponenty systemu Vault, które skrupulatnie rejestrują każdy ruch, każde zapytanie i odpowiedź, tworząc szczegółowy dziennik aktywności. Ponieważ Vault opiera się na interakcjach API, każde działanie – od uwierzytelnienia po pobieranie sekretów – jest rejestrowane, zapewniając kompleksowy ślad audytowy. Wyjątkiem jest kilka ścieżek systemowych, które z natury swojej funkcji, audytowi nie podlegają.

Jak poprawnie się pisze audyt?
w sprawie audytu i auditu Rada Języka Polskiego wypowiadała się niejednokrotnie – zawsze staliśmy na stanowisku, że jedyną poprawną formą jest audyt, ponieważ obcojęzyczne połączenie di przybiera w polszczyźnie formę dy (por. dyrektor, abdykować, akredytacja itp.).23 lut 2021
Spis treści

Ścieżki wyłączone z audytu

Istnieją pewne ścieżki w Vault, które z założenia nie są objęte procesem audytu. Są to ścieżki o fundamentalnym znaczeniu dla inicjalizacji, uszczelniania, odpieczętowywania i ogólnego stanu systemu. Należą do nich:

  • sys/init
  • sys/seal-status
  • sys/seal
  • sys/step-down
  • sys/unseal
  • sys/leader
  • sys/health
  • sys/rekey/init
  • sys/rekey/update
  • sys/rekey/verify
  • sys/rekey-recovery-key/init
  • sys/rekey-recovery-key/update
  • sys/rekey-recovery-key/verify
  • sys/storage/raft/bootstrap
  • sys/storage/raft/join
  • sys/internal/ui/feature-flags

Dodatkowo, jeśli konfiguracja listenera na to pozwala, dostęp bez uwierzytelniania mogą mieć ścieżki:

  • sys/metrics
  • sys/pprof/*
  • sys/in-flight-req

Wyłączenie tych ścieżek z audytu ma na celu uniknięcie potencjalnych pętli audytowych i zachowanie podstawowej funkcjonalności systemu w sytuacjach awaryjnych. Niemniej jednak, zdecydowana większość operacji w Vault jest rejestrowana, co zapewnia wysoki poziom przejrzystości i bezpieczeństwa.

Włączanie wielu urządzeń audytowych

Vault oferuje zaawansowaną funkcjonalność, umożliwiając włączenie wielu urządzeń audytowych jednocześnie. W takim scenariuszu, Vault podejmuje próbę wysłania logów audytowych do każdego z nich. To podejście ma kilka istotnych zalet:

  • Redundancja: Posiadanie wielu kopii logów audytowych zwiększa bezpieczeństwo danych. W przypadku awarii jednego urządzenia, logi nadal są dostępne w innych lokalizacjach.
  • Wykrywanie manipulacji: Porównanie logów z różnych urządzeń audytowych może pomóc w wykryciu potencjalnych prób manipulacji danymi. Rozbieżności między logami mogą wskazywać na nieautoryzowane działania.

Kluczowe jest zrozumienie, jak Vault definiuje sukces operacji audytu. Vault uzna żądanie za pomyślnie obsłużone, jeśli logowanie do co najmniej jednego skonfigurowanego urządzenia audytowego zakończy się sukcesem. Oznacza to, że nawet w przypadku problemów z jednym z urządzeń, Vault nadal będzie działał, o ile przynajmniej jedno urządzenie rejestruje zdarzenia. Aby uzyskać pełny obraz audytowanych działań, konieczne jest agregowanie i łączenie logów ze wszystkich skonfigurowanych urządzeń audytowych.

Zaleca się skonfigurowanie Vault do korzystania z wielu urządzeń audytowych. Awaria audytu może uniemożliwić Vault obsługę żądań, dlatego ważne jest zapewnienie co najmniej jednego urządzenia zapasowego.

Format logów audytowych

Każda linia w logu audytowym Vault jest obiektem JSON. Pole type określa rodzaj obiektu. Aktualnie istnieją dwa typy: request i response. Linia zawiera wszystkie informacje dotyczące danego żądania i odpowiedzi. Domyślnie, informacje wrażliwe są haszowane przed zapisaniem w logach.

Obsługa informacji wrażliwych

Logi audytowe zawierają pełne obiekty żądań i odpowiedzi dla każdej interakcji z Vault. Żądania i odpowiedzi można dopasować za pomocą unikalnego identyfikatora przypisanego do każdego żądania. Aby chronić poufne dane, większość ciągów znaków zawartych w żądaniach i odpowiedziach jest haszowana solą przy użyciu HMAC-SHA256. Celem haszowania jest uniemożliwienie przechowywania sekretów w postaci jawnej w logach audytowych. Jednakże, nadal istnieje możliwość weryfikacji wartości sekretów poprzez samodzielne generowanie kodów HMAC. Można to zrobić za pomocą funkcji haszującej i soli urządzenia audytowego, korzystając z punktu końcowego API /sys/audit-hash.

Obecnie haszowaniu HMAC podlegają tylko ciągi znaków pochodzące z JSON lub zwracane w JSON. Inne typy danych, takie jak liczby całkowite, wartości logiczne itp., są przekazywane w postaci jawnej. Zaleca się, aby wszystkie dane wrażliwe były dostarczane jako wartości ciągów znaków wewnątrz JSON wysyłanego do Vault (tj. wartości całkowite powinny być podawane w cudzysłowach).

Chociaż większość ciągów znaków jest haszowana, Vault można skonfigurować tak, aby wprowadzić pewne wyjątki. Na przykład w metodach uwierzytelniania i silnikach sekretów, użytkownicy mogą włączyć dodatkowe wyjątki za pomocą polecenia secrets enable, a następnie dostosować je.

Zobacz również:

  • auth enable
  • auth tune

Nagłówki żądań audytu

Vault API umożliwia konfigurację nagłówków żądań do monitorowania i audytowania nagłówków w przychodzących żądaniach klienta. Domyślnie Vault nie szyfruje wartości nagłówków żądań za pomocą HMAC, jeśli utworzysz wyjątek, aby zezwolić na nagłówki żądań w logu audytowym. Aby zaszyfrować wartości nagłówków, musisz skonfigurować odpowiednie nagłówki indywidualnie.

Domyślne nagłówki

Aby ułatwić korelację żądań w systemach rozproszonych, Vault automatycznie rejestruje następujące nagłówki w logu audytowym:

  • X-Request-ID
  • X-Forwarded-For
  • X-Vault-Request

Aby upewnić się, że Vault używa HMAC na wartościach nagłówków podczas logowania, ustaw wartość hmac na true dla wywołania API config/auditing/request-headers. Na przykład, aby włączyć HMAC dla nagłówka correlation-id:

curl \ --header "X-Vault-Token: ..." \ http://127.0.0.1:8200/v1/sys/config/auditing/request-headers/correlation-id \ --data '{ "hmac": true }' 

Innym sposobem identyfikacji źródła żądania jest nagłówek żądania User-Agent. Vault automatycznie rejestruje tę wartość jako user-agent w nagłówkach wpisu żądania w logu audytowym.

Włączanie i wyłączanie urządzeń audytowych

Po pierwszej inicjalizacji serwera Vault, audytowanie nie jest włączone. Urządzenia audytowe muszą zostać włączone przez użytkownika root za pomocą polecenia vault audit enable.

Podczas włączania urządzenia audytowego, można przekazać do niego opcje konfiguracyjne. Na przykład, poniższe polecenie włącza urządzenie audytowe file:

$ vault audit enable file file_path=/var/log/vault_audit.log 

W powyższym poleceniu przekazaliśmy parametr file_path, aby określić ścieżkę, w której będzie zapisywany log audytowy. Każde urządzenie audytowe ma swój własny zestaw parametrów. Więcej szczegółów można znaleźć w dokumentacji.

Uwaga: Konfiguracja urządzenia audytowego jest domyślnie replikowana na wszystkie węzły w klastrze oraz na węzły drugorzędne Performance/DR w klastrach Vault Enterprise. Przed włączeniem urządzenia audytowego, upewnij się, że wszystkie węzły w klastrze(-ach) będą mogły pomyślnie logować do urządzenia audytowego, aby uniknąć blokowania Vault przed obsługą żądań. Urządzenie audytowe można ograniczyć tylko do klastra węzła za pomocą parametru local.

Po wyłączeniu urządzenia audytowego, natychmiast przestanie ono otrzymywać logi. Istniejące logi, które zapisało, pozostają nienaruszone.

Uwaga: Po wyłączeniu urządzenia audytowego, nie będzie już można haszować wartości w celu porównania z wpisami w logach audytowych. Dotyczy to również sytuacji, gdy ponownie włączysz urządzenie audytowe pod tą samą ścieżką, ponieważ zostanie utworzona nowa sól do haszowania.

Zablokowane urządzenia audytowe

Logi urządzeń audytowych są krytycznie ważne, a ignorowanie błędów audytu otwiera drogę do ataku. Vault nie odpowie na żądania, jeśli żadne włączone urządzenie audytowe nie może ich zarejestrować.

Vault rozróżnia dwa typy awarii urządzeń audytowych:

  • Awaria blokująca: Próba zapisu do urządzenia audytowego nigdy się nie kończy. Jest to mało prawdopodobne w przypadku lokalnego urządzenia dyskowego, ale może wystąpić w przypadku sieciowego urządzenia audytowego.
  • Awaria nieblokująca: Występuje, gdy próba zapisu kończy się niepowodzeniem, ale nie blokuje dalszego działania Vault.

W przypadku włączenia wielu urządzeń audytowych, jeśli którekolwiek z nich ulegnie awarii w sposób nieblokujący, żądania Vault nadal mogą być pomyślnie realizowane, pod warunkiem, że co najmniej jedno urządzenie audytowe pomyślnie zapisze rekord audytu. Jeśli jednak którekolwiek z urządzeń audytowych ulegnie awarii w sposób blokujący, żądania Vault będą zawieszone do czasu usunięcia blokady.

Innymi słowy, Vault nie zrealizuje żadnych żądań, dopóki zablokowane urządzenie audytowe nie będzie mogło zapisywać.

Opcje konfiguracji urządzeń audytowych

Urządzenia audytowe oferują szereg opcji konfiguracyjnych, które pozwalają dostosować ich działanie do specyficznych potrzeb. Poniżej przedstawiono kilka najczęściej używanych opcji:

  • elide_list_responses (bool: false): Patrz sekcja "Pomijanie treści odpowiedzi list".
  • exclude (string: ""): (Enterprise) Definiuje zestaw reguł, które, gdy warunek (opcjonalny) jest spełniony, powodują, że Vault usuwa określone pola z wpisu audytu przed zapisaniem do logu audytowego. Więcej informacji można znaleźć w sekcji wykluczeń w przeglądzie audytu.
  • fallback (bool: false): (Enterprise) Wskazuje, czy urządzenie audytowe jest urządzeniem zapasowym do celów filtrowania. Vault obsługuje tylko jedno zapasowe urządzenie audytowe naraz.
  • filter (string: ""): (Enterprise) Ustawia opcjonalny ciąg znaków używany do filtrowania wpisów audytu logowanych przez urządzenie audytowe. Więcej informacji można znaleźć w sekcji filtrowania w przeglądzie audytu.
  • format (string: "json"): Umożliwia wybór formatu wyjściowego. Prawidłowe wartości to "json" i "jsonx", który formatuje normalne wpisy logów jako XML.
  • hmac_accessor (bool: true): Po włączeniu, włącza haszowanie accessora tokena.
  • log_raw (bool: false): Po włączeniu, loguje informacje wrażliwe bez haszowania, w formacie surowym. Należy zachować szczególną ostrożność przy korzystaniu z tej opcji.
  • prefix (string: ""): Konfigurowalny prefiks ciągu znaków do zapisu przed rzeczywistą linią logu.

Pomijanie treści odpowiedzi list

Niektóre odpowiedzi Vault mogą być bardzo duże. Dotyczy to głównie operacji listowania - ponieważ Vault nie ma paginacji w swoich API, listowanie bardzo dużej kolekcji może skutkować odpowiedzią o rozmiarze dziesiątek megabajtów. Niektóre back-endy audytu nie są w stanie przetwarzać pojedynczych rekordów audytu o większych rozmiarach.

Zawartość odpowiedzi dla operacji listowania często nie jest bardzo interesująca; większość zawiera tylko pole "keys", zawierające listę identyfikatorów. Wybrane punkty końcowe API dodatkowo zwracają pole "key_info", mapę od identyfikatora do pewnych dodatkowych informacji o wpisie na liście - identity/entity/id/ jest tego przykładem. Nawet w tym przypadku, odpowiedź na operację listowania jest zazwyczaj mniej poufną lub publiczną informacją, dla której posiadanie pełnej odpowiedzi w logach audytowych jest mniej istotne.

Opcja audytu elide_list_responses zapewnia elastyczność, aby nie zapisywać pełnych danych odpowiedzi list z logu audytowego, aby złagodzić tworzenie bardzo długich pojedynczych rekordów audytu. Po włączeniu, wpływa tylko na rekordy audytu typu type=response i request.operation=list. Wartości response.data.keys i response.data.key_info zostaną zastąpione prostą liczbą całkowitą, rejestrującą, ile wpisów zawierała lista (keys) lub mapa (key_info) - dlatego nawet przy włączonej tej funkcji, nadal można zobaczyć, ile elementów zostało zwróconych przez operację listowania.

To dodatkowe przetwarzanie wpływa tylko na pola danych odpowiedzi keys i key_info, i tylko wtedy, gdy mają one oczekiwane typy danych - w przypadku, gdy odpowiedź listowa zawiera dane wykraczające poza zwykłe konwencje, które dotyczą odpowiedzi listowych Vault, pozostaną one nietknięte przez tę funkcję.

Podsumowanie

Urządzenia audytowe są nieodzownym elementem systemu Vault, zapewniającym przejrzystość, bezpieczeństwo i zgodność. Poprzez rejestrowanie każdego żądania i odpowiedzi, umożliwiają monitorowanie aktywności, wykrywanie anomalii i przeprowadzanie analizy bezpieczeństwa. Konfiguracja wielu urządzeń audytowych zwiększa redundancję i bezpieczeństwo logów, a opcje konfiguracyjne pozwalają dostosować działanie audytu do specyficznych potrzeb organizacji. Zrozumienie i prawidłowe wykorzystanie urządzeń audytowych jest kluczowe dla efektywnego zarządzania sekretami i utrzymania wysokiego poziomu bezpieczeństwa w środowisku Vault.

Jeśli chcesz poznać inne artykuły podobne do Urządzenia audytowe w Vault: Szczegółowy przewodnik, możesz odwiedzić kategorię Audyt.

Go up