0003 — cTrader CLI uzly sú HTTP + JWT, bez SSH/shell
Kontext
Kontajnery backtestingu/spustenia sa spúšťajú na vzdialených hostiteľoch. Očividný prístup — SSH a spustenie docker — dáva hlavnej aplikácii ľubovoľné vzdialené vykonávanie kódu a dlhodobé poverenia na každom uzle. To je veľký rozsah zásahu pre systém, ktorý spúšťa nedôveryhodné cBoty používateľa.
Rozhodnutie
Každý vzdialený hostiteľ spúšťa samostatný CtraderCliNode HTTP agent s bez SSH a bez shell.
Hlavná aplikácia volá agenta cez HTTP; každá požiadavka obsahuje krátkodobý HS256 JWT (5-minútový,
iss=app-main / aud=app-node) podpísaný tajomstvom toho uzla. Agent:
- iba spúšťa obrázky zodpovedajúce
AllowedImagePrefix(s hranicou cesty, takžeghcr.io/spotwarenemôže zodpovedaťghcr.io/spotware-evil/...); - spúšťa docker cez
ArgumentList— nikdy reťazec shell; - je bezstavový, nájde kontajnery podľa štítku
app.instance; - samoreg stratuje a pulzuje na
POST /api/nodes/register; hlavná aplikácia vložiťCtraderCliNodepodľa mena, takže uzol prežije zmeny IP.
Dôsledky
- Uniklý token požiadavky vyprší za minúty; nie je tu žiadne stojace shell poverenie, ktoré by sa mohlo ukradnúť.
- Schopnosť agenta je obmedzená na "spustiť povolený obraz" — nemôže sa zmeniť na všeobecný vzdialený shell.
- Identita uzla je založená na mene, takže opätovné zriadenie uzla s novou IP neosiroťuje jeho históriu.