Přeskočit na obsah

Fleet — Serverový agent

Sencai Fleet je odlehčený Go binary, který instalujete na vaše servery (bare metal nebo VM). Po zaregistrování Fleet průběžně hlásí zpět do Sencai: softwarový inventář, stav patchů, CIS bezpečnostní benchmarky a výsledky spuštění runbooků. Přímo z Sencai UI lze také otevřít terminál v prohlížeči pro libovolný zaregistrovaný server.

Fleet funguje na libovolném linuxovém serveru — bare metal, cloudové VM i Kubernetes nody.


  • Softwarový inventář: výpis nainstalovaných balíčků přes dpkg-query (Debian/Ubuntu) nebo rpm -qa (RHEL/Fedora), porovnaný proti endoflife.date kvůli EOL riziku
  • CIS benchmark: spouští Lynis CIS Level 1/2 hardening kontroly a hlásí skóre
  • Stav patchů: identifikuje zastaralé balíčky a CVE zranitelnosti
  • Terminál v prohlížeči: kliknutím na „Připojit” otevřete SSH relaci přímo v prohlížeči pro libovolný zaregistrovaný server
  • Spouštění runbooků: vzdálené spuštění předschválených operačních úloh, podmíněné capability runbook:execute
  • Karanténa: izolujte kompromitovaný server jedním kliknutím
  • Heartbeat: odesílá ping o životnosti každých 30 sekund — Sencai detekuje výpadek serveru přibližně do 2 minut

Fleet agenti startují s nulovými capabilities. Operátor musí explicitně povolit jednotlivé capabilities per agent (nebo per skupina agentů), než agent provede odpovídající scan nebo akci. Povolení se spravují jako záznamy agent-policy, konfigurované ze stránky Agenti (/gravity/agents) a ze stránky nastavení capabilities/politik /gravity/settings/agent-policies.

Dostupné capabilities:

CapabilityCo odemyká
monitorSledování metrik/procesů/služeb (heartbeat data)
patch_management:scanSkenování dostupných aktualizací OS balíčků
patch_management:applyAplikaci patchů
inventory:scanSběr softwarového inventáře
log_shipping:systemOdesílání systémových logů
log_shipping:appOdesílání aplikačních logů
runbook:executeSpouštění runbooků na hostu
agent:updateSamo-aktualizaci binárky agenta

Pokud capability nebyla povolena, agent daný scan nebo akci potichu přeskočí, místo aby hlasitě selhal — pokud se očekávaná data nezobrazují, zkontrolujte seznam povolených capabilities na stránce Agenti. Spuštění runbooku konkrétně vyžaduje povolenou capability runbook:execute, jinak na daném agentovi žádný runbook neproběhne.


  • Linux server (amd64 nebo arm64)
  • Odchozí síťový přístup na endpoint agent-gateway vaší organizace (výchozí port 4400)
  • Root nebo sudo přístup na serveru
  • Enrollment token od administrátora vaší organizace

Doporučený způsob instalace je balíček .deb/.rpm pro vaši distribuci, sestavený přes nfpm. Alternativně použijte instalační skript:

Terminál
curl -fsSL https://agent.sencai.space/install.sh \
| SENCAI_GATEWAY_URL=https://agent-gateway:4400 SENCAI_TOKEN=<vas-org-enrollment-token> bash

Tím se nainstaluje binary sencai-agent do /usr/local/bin/sencai-agent a vytvoří se systemd jednotka (sencai-agent.service).

Pokud jste instalovali přes balíček .deb/.rpm, nebo chcete zaregistrovat ručně:

Terminál
sudo sencai-agent enroll --gateway https://agent-gateway:4400 --token <vas-org-enrollment-token>

Přepínače --url ani --name neexistují — enrollment přijímá pouze --gateway a --token.

Během enrollmentu:

  1. Agent odešle enrollment token spolu s hostname/OS/arch/verzí na endpoint /enroll služby agent-gateway
  2. agent-gateway vydá mTLS klientský certifikát a CA bundle a vrátí počáteční sadu povolených capabilities
  3. Certifikáty a konfigurace se zapíšou do /etc/sencai-agent/
  4. Po spuštění agent zahájí svou heartbeat smyčku

Server se na stránce Agenti (/gravity/agents) objeví krátce po prvním úspěšném heartbeatu.

Terminál
sudo systemctl enable --now sencai-agent
sudo systemctl status sencai-agent

Agent se automaticky spouští při startu systému a po výpadku sítě se znovu připojuje (s exponenciálním backoffem).


Pro Kubernetes clustery řeší správu flotily na úrovni clusteru samostatný k8s-agent (Helm chart / manifesty) — jde o odlišnou komponentu od výše popsaného hostitelského binary sencai-agent. Konkrétní kroky enrollmentu pro k8s-agent konzultujte s administrátorem vaší organizace nebo v dokumentaci pro Kubernetes flotilu.


Přejděte na Agenti (/gravity/agents) a zobrazí se všichni zaregistrovaní agenti s následujícími sloupci:

  • hostname
  • os
  • version
  • status
  • last_heartbeat_at
  • cloud_instance — odkaz na přiřazenou cloud instanci, pokud byl agent zaregistrován na instanci provisionované Sencai; agenti zaregistrovaní přímo na on-prem/bare-metal serverech zde místo prázdné pomlčky zobrazují explicitní chip On-Prem — jde o plně podporovanou cestu registrace, ne o chybějící/neúplný stav

Z této stránky lze také spravovat povolené capabilities per agent a spouštět dostupné akce (Připojit, Karanténa, Spustit runbook atd.).

Další stránky provozu flotily:

  • /gravity/fleet/quarantine — správa karantény
  • /gravity/fleet/remote-exec — vzdálené spouštění příkazů
  • /gravity/fleet/telemetry — telemetrie agentů
  • /gravity/fleet/cohorts — správa kohort/vln rolloutu
  • /gravity/fleet/kubernetes — pohled na Kubernetes flotilu
  • /gravity/fleet/config — konfigurace flotily
  • /gravity/fleet/releases — správa vydání agenta
  • /gravity/fleet/secret-injections — správa injektáže secretů

Otevření terminálové relace na server:

  1. Přejděte na Agenti (/gravity/agents)
  2. Klikněte na agenta
  3. Klikněte na Připojit — v prohlížeči se otevře terminálový panel
  4. Zadávejte příkazy — plnohodnotný interaktivní shell, stejně jako SSH

Pod povrchem váš prohlížeč otevře WebSocket spojení na ssh-proxy-service, který ověří váš JWT a otevře SSH spojení na cílový server přes tunel Fleet agenta. Všechny stisknuté klávesy a výstup jsou zaznamenané v audit trail.


S povolenou capability inventory:scan Fleet sbírá nainstalované balíčky každých 24 hodin pomocí dpkg-query (Debian/Ubuntu) nebo rpm -qa (RHEL/Fedora/CentOS/SUSE) — žádná závislost na osquery neexistuje. Sebrané balíčky se porovnávají proti endoflife.date, aby se označil EOL a brzy-EOL software.

Inventář zobrazíte na stránce Agenti po rozkliknutí konkrétního agenta.

Lynis CIS skeny běží automaticky každých 24 hodin a na vyžádání. Výsledky zobrazují:

  • Celkové CIS skóre (0–100 %)
  • Stav splnění/nesplnění per kontrola
  • Návrhy nápravných opatření pro selhávající kontroly
  • Trend skóre v čase (zlepšující se / stabilní / zhoršující se)

S povolenou capability patch_management:scan agent denně kontroluje dostupné aktualizace OS. Záložka Patche zobrazuje:

  • Dostupné aktualizace per balíček
  • CVE ID pro bezpečnostní patche
  • Stáří patche (dny od vydání)
  • Odhadovanou úroveň rizika (kritická / vysoká / střední / nízká)

Aplikace patchů vyžaduje samostatnou capability patch_management:apply.


Runbooky jsou předpřipravené skripty, které lze spouštět na zaregistrovaných agentech. Nacházejí se na samostatné, top-level stránce Runbooky (/gravity/runbooks) — ne pod sekcí „Fleet”.

Typické příklady:

  • Aktualizace systému
  • Restart služby
  • Sběr a zabalení logů
  • Rotace certifikátů
  • Vlastní skripty

Agent musí mít povolenou capability runbook:execute (přes agent-policy, ze stránky Agenti nebo /gravity/settings/agent-policies), jinak žádost o spuštění runbooku nepřijme. Pokud capability chybí, agent-gateway žádost o spuštění rovnou odmítne.

Všechna spuštění runbooků jsou zaznamenána v audit trail: kdo je spustil, na kterém agentovi, výstup, exit kód a časové razítko.


Pokud je server kompromitován nebo se chová abnormálně, karanténa ho izoluje na síťové úrovni:

  1. Přejděte na /gravity/fleet/quarantine (nebo na řádek agenta na stránce Agenti)
  2. Klikněte na Karanténa
  3. agent-gateway spustí na hostu agenta OS pravidlo iptables OUTPUT DROP, označené komentářem (sencai-quarantine-<agentID>), aby ho bylo možné později identifikovat a odstranit
  4. Upozornění je odesláno administrátorům organizace

Karanténa je pouze pro Linux a vyžaduje, aby host agenta měl bezheslová (NOPASSWD) sudo práva pro iptables. Na ne-linuxových hostech karanténa selže s výslovnou chybou a nedojde k žádné úpravě systému — nejde o tichý no-op.

Uvolnění karantény: klikněte na Uvolnit karanténu po nápravě (vyžaduje odpovídající roli). Tím se odstraní označené pravidlo iptables.


Q: Agent se zaregistroval, ale okamžitě je offline

A: Zkontrolujte, že agent service běží: sudo systemctl status sencai-agent. Zkontrolujte odchozí konektivitu na endpoint agent-gateway (výchozí port 4400). Prohlédněte logy: sudo journalctl -u sencai-agent -f.

Q: CIS scan neběží

A: Lynis musí být nainstalován na serveru. Nainstalujte ho přes správce balíčků: sudo apt install lynis nebo sudo yum install lynis.

Q: Terminál v prohlížeči zobrazuje „Connection failed”

A: Ujistěte se, že je agent online (nedávný heartbeat na stránce Agenti). Příchozí porty nejsou potřeba — pouze odchozí přístup ke gateway. Pokud stále selhává, zkontrolujte logy agenta.

Q: Po enrollmentu agenta nevidím

A: Počkejte na první heartbeat a obnovte stránku. Pokud stále chybí, zkontrolujte výstup příkazu enroll pro chyby. Časté: špatný nebo expirovaný enrollment token (tokeny jsou scopované na organizaci).

Q: Capability, kterou očekávám, nic nedělá

A: Nepovolené capabilities způsobí, že agent odpovídající scan nebo akci potichu přeskočí. Ověřte, že je capability pro daného agenta povolena přes /gravity/settings/agent-policies.

Q: Jak aktualizovat agenta?

A: Spusťte sencai-agent update na hostu, nebo znovu spusťte instalační skript / upgrade balíčku — agent podporuje ring-based rollout pro samo-aktualizace. Ověřte, že je povolena capability agent:update; systemd služba se po úspěšné aktualizaci automaticky restartuje.