Přeskočit obsah

LogMan.io Tenant Rex

LogMan.io Tenant Rex (lmio-trex) je mikroslužba, která spravuje obchodní tenanty a automaticky nasazuje pro každého tenanta modely baseliner a correlator vzdálené kontroly.

Tato stránka je jediným místem pro operátory a administrátory, kteří potřebují pochopit, jak T Rex umisťuje korelátory, obnovuje je a které soubory odstraňuje.

Analytici, kteří v uživatelském rozhraní pouze povolují pravidla, by si měli přečíst Nasazení detekčních pravidel.

Co dělá T Rex

  1. Vytváří, aktualizuje a odstraňuje objekty podnikových nájemců (MongoDB), včetně atributů, jako jsou schéma a časové pásmo.
  2. Píše modely knihoven do /Site/model-trex-{tenant}.yaml pro lmio-baseliner a lmio-correlator.
  3. Po změně modelu žádá ASAB Remote Control, aby spustil compose up (standardně postupy node_upgrade / cluster_sequential_up; volitelně starší metoda per-node POST /node/{id}).
  4. Volitelně komunikuje s Kafka Admin API pro zpoždění spotřebitelů, členství (HA) a mazání nepoužívaných skupin spotřebitelů korelátoru.

T Rex ne hodnotí korelační pravidla. Hodnocení pravidel zůstává uvnitř lmio-correlator.

Volba vůdce

S volbou vůdce pomocí ZooKeeper ([trex] leader_name, výchozí lmio-trex):

  1. Pouze vedoucí přestavuje modely, spouští životní cyklus korelátoru (prodleva / HA / údržba Kafka) a ukládá nájemce do ZooKeeperu.
  2. Následovníci udržují HTTP API.

Spusťte jednu nebo více instancí T Rex na každý cluster. Musí sdílet MongoDB a ZooKeeper.

Umístění korelátoru

T Rex vytváří instance korelátoru z výběru nájemce Detections v MongoDB (knihovní složky; vybraný soubor se mapuje na svou rodičovskou složku).

Vyloučené složky

Ve výchozím nastavení se tyto předpony knihoven nikdy nezmění na skupiny korelátorů ([correlator] exclude_folders):

  1. /Detections/Parsec/
  2. /Detections/Filtry/

Jsou vyřazeni z výběrů nasazení a z tvorby modelů.

Hloubka složky (folder_max_depth)

Ve výchozím nastavení T Rex umístí korelátor na nejbližší / nejhlubší vybranou složku.

Hloubku můžete omezit pod vybranými kořeny pomocí [correlator] folder_max_depth (víceřádkově path=N). Hloubka je počet segmentů cesty pod tímto kořenem.

Výchozí:

[correlator]
folder_max_depth=
    /Detections/Sigma/=3

Příklad s /Detections/Sigma/=3:

  1. Cesta k pravidlu: /Detections/Sigma/windows/builtin/security/account_management/rule.yaml
  2. Korelátor groups: /Detections/Sigma/windows/builtin/security/
  3. Hlouběji ukryté podsložky sdílejí tu jednu instanci (korelátor stále načítá pravidla rekurzivně).

Cesty, které nejsou uvedeny, si zachovávají chování nejbližší / nejhlubší složky (typické pro /Correlations/…).

Nastavení folder_max_depth v konfiguraci nahrazuje celý výchozí seznam. Pokud přidáte jiné kořenové složky a stále chcete limit Sigma, znovu zahrňte /Detections/Sigma/=3.

Prázdné nebo chybějící složky

Pokud vybraná složka nemá v Knihovně žádné povolené soubory pravidel (je prázdná, smazaná nebo všechny jsou zakázané), T Rex tento korelátor z modelu vynechá. Při příští přestavbě ho prostřednictvím Vzdálené správy up odinstaluje.

Kafka spotřebitel group_id

Každá instance korelátoru získá explicitní skupinu spotřebitelů Kafka pod pipeline:CorrelatorsPipeline:KafkaSource:

lmio_correlator_<instance_id>

Pomlčky v ID instance se změní na podtržítka.

Když instance opustí model, T Rex smaže tu spotřebitelskou skupinu (pokud je nastaveno [kafka] bootstrap_servers). Periodická údržba také odstraňuje opuštěné skupiny s předponami lmio_correlator* a starší lmio-correlator*.

Adresáře s daty na disku nejsou mazány. Po odstranění instance může na uzlu zůstat hostitelská složka, například /data/ssd/correlators/lmio-correlator-…. Příkaz Remote Control up neodstraní nepoužívané zdroje svazků. Pokud je potřeba, vyčistěte je na uzlu.

Rozdělování pravidel založené na prodlevě

Když je [correlator:lag] enabled=yes a Kafka je dostupná:

  1. T Rex vzorkuje zpoždění spotřebitele pro známé skupiny.
  2. Chronicky rostoucí zpoždění snižuje efektivní limit pravidel na instanci pro tuto složku.
  3. Další přestavba modelu vytváří více instancí se stejnou složkou groups, ale s různými částmi read_from / read_declarations.
  4. Každá část má svůj vlastní group_id a stále čte celý proud událostí; hodnotí pouze svůj podmnožinu pravidel.

Tím se přidává kapacita CPU pro pravidla. Nejde o škálování particí Kafka.

I když je adaptace zpoždění vypnutá, T Rex stále rozděluje složku, pokud má více pravidel než default_rules_limit (výchozí 500), až do max_instances_per_folder (výchozí 10).

Zakázání škálování korelátoru

  1. Zastavte snižování limitu pravidel na jeden případ způsobené zpožděním:
[correlator:lag]
enabled=no
  1. Uchovávat jednu instanci korelátoru na složku bez ohledu na počet pravidel (žádné statické dělení):
[correlator:lag]
enabled=no
max_instances_per_folder=1

Alternativně zvyšte default_rules_limit dostatečně vysoko, aby žádná složka jej nepřekročila. Kafka sampling pro HA může stále používat sample_every_ticks z této sekce; pouze přehodnocení zpoždění se přeskočí, pokud je enabled=no.

Zakázat synchronizaci položky knihovny (detekční obrazovka)

Po změně výběru detekce se T Rex synchronizuje s příznaky zakázání asab-knihovny podle výběru (PUT /library/item-disable/...) pro YAML ve nasazených složkách. Vybraná pravidla, která byla zakázána, se povolí; nevybraná se zakážou. To udržuje knihovnu a obrazovku detekcí v souladu.

Ve výchozím nastavení T Rex synchronizuje každou složku (item_disable_sync_max_rules=0). Velké složky jsou pomalé (jedno PUT na pravidlo, které je potřeba změnit). Nastavte kladnou hodnotu [correlator] item_disable_sync_max_rules (např. 500) pro přeskočení zakázání položek u nadměrných složek a uložení pouze výběru / přestavbu modelu.

  1. Kompromis při přeskočení: dříve zakázaná pravidla v té složce zůstávají zakázána, dokud znovu nezvýšíte limit na 0, nesnížíte jej nebo je z jiného způsobu nezapnete.
  2. PUTy používají [asab:library] item_disable_concurrency (výchozí 1; vyšší hodnoty mohou způsobit závod na /.disabled.yaml). Po každé aplikaci T Rex znovu vylistuje a zkouší až do [asab:library] item_disable_sync_rounds (výchozí 8, s postupným zpožděním). Synchronizace je na úrovni nájemce a běží z detekčního API, nikoliv z modelového zápisového tiknutí.
[correlator]
item_disable_sync_max_rules=0
# item_disable_sync_max_rules=500   # skip item-disable on folders with more than 500 rules

[asab:library]
# item_disable_concurrency=1
# item_disable_sync_rounds=8

Vysoká dostupnost (HA)

Když je [correlator:ha] enabled=yes a Kafka je dostupná:

  1. T Rex sleduje počet členů Kafka pro každou skupinu korelátorů.
  2. Pokud členové zůstanou na nule déle než unhealthy_after_sec (výchozí 300 s), T Rex požádá Remote Control o up na aktuálním uzlu (lokální restart; umístění beze změny).
  3. Pokud členové zůstanou na nule ještě další unhealthy_after_sec po tomto lokálním up, T Rex přiřadí instanci k jinému způsobilému uzlu (uzly ZooKeeper kromě arbiter a no-trex) a znovu nahraje model.

failover_cooldown_sec (výchozí 600 s) omezuje, jak často se může přesun opakovat.

Když je přepnutí při selhání přeskočeno

Přepnutí uzlu nemůže opravit poškozené pravidlo korelace. T Rex proto nepřesouvá instanci, když ASAB zjištění pro tento korelator stále hlásí:

  1. correlation_rules_with_errors (z korelátoru AttentionService)
  2. nebo attention_required na mikroservisu advertisement

V takovém případě dostanete nejvýše jeden lokální up, poté varování k opravě pravidel / problémů s knihovnou. Zkontrolujte protokoly korelátoru a upozornění knihovny.

Jistič

[correlator:ha] max_failovers (výchozí 2) omezuje, kolik přesunů uzlů se může stát během jedné epizody s nefunkčním stavem. Poté T Rex přestane provádět failover (užitečné pro smyčky zhroucení, kdy objevování nikdy neoznamuje). Nastavte 0 pro neomezený počet přesunů (nedoporučuje se).

Aktivní aktivní umístění

Když [correlator:active_active] enabled=yes (výchozí hodnotou je vypnuto):

  1. Každý logický řez korelátoru je nasazen na každém způsobilém uzlu.
  2. Repliky sdílejí stejnou konfiguraci a stejný Kafka group_id.
  3. Přepnutí uzlu při selhání je zakázáno; lokální up může stále běžet, pokud sdílená skupina nemá žádné členy.

Umístění baselineru

Ve výchozím nastavení ([baseliner:ha] enabled=yes) T Rex umístí jednu instanci baselineru na každý způsobilý uzel. Nastavte enabled=no pro jednu instanci s hashováním umístěnou na každého nájemce.

Odkaz na konfiguraci (lmio-trex)

[kafka]
# Required for lag, HA membership, and consumer group deletion.
bootstrap_servers=kafka-1:9092,kafka-2:9092

[correlator]
exclude_folders=
    /Detections/Parsec/
    /Detections/Filters/
folder_max_depth=
    /Detections/Sigma/=3
# item_disable_sync_max_rules=0
# item_disable_sync_max_rules=500   # skip item-disable on oversized folders

[asab:library]
# item_disable_concurrency=1
# item_disable_sync_rounds=8

[correlator:lag]
enabled=yes
sample_every_ticks=6
housekeep_every_ticks=30
# default_rules_limit=500
# max_instances_per_folder=10
# enabled=no                    # no lag driven split
# max_instances_per_folder=1    # at most one instance per folder (also with enabled=no)

[correlator:ha]
enabled=yes
unhealthy_after_sec=300
failover_cooldown_sec=600
max_failovers=2

[correlator:active_active]
enabled=no

[baseliner:ha]
enabled=yes

[trex]
leader_name=lmio-trex

[asab:remote:control]
# use_procedures=yes   # default: node_upgrade / cluster_sequential_up
# use_procedures=no    # legacy POST /node/{id} command=up
# Wait for Remote Control procedure completion (seconds). 0 = fire and forget after Accepted.
procedure_wait_sec=600
procedure_poll_sec=5

HTTP API poslouchající port: 8962 (viz Síťové porty).

Související čtení

  1. Nasazení pravidel detekce (uživatelské rozhraní analytika)
  2. Monitorování výkonnosti detekce (zpožděná a pomalá pravidla)
  3. Konfigurace korelátoru (manuální modely a Kafka pro lmio-correlator)
  4. Metriky korelátoru