Пређи на главни садржај

0003 — cTrader CLI чворови су HTTP + JWT, без SSH/shell-а

Контекст​

Контејнери за тестирање/покретање се извршавају на удаљеним домаћинима. Очигледни приступ — SSH и покрени docker — даје главној апликацији произвољно удаљено извршавање кода и дугорочне креденцијале на сваком чвору. То је велик полупречник взрива за систем који покреће неповерљиве cBots корисника.

Одлука​

Сваки удаљени домаћин покреће독ов HTTP агента CtraderCliNode без SSH-а и без shell-а. Главна апликација позива агента преко HTTP-а; сваки захтев носи краткотрајни HS256 JWT (5-минутни, iss=app-main / aud=app-node) потписан тајном тог чвора. Агент:

  • само покреће слике које се подударају са AllowedImagePrefix (са границом пута да ghcr.io/spotware не може се подударити са ghcr.io/spotware-evil/...);
  • извршава docker преко ArgumentList — никад не користи shell string;
  • је без стања, налазећи контејнере по ознаци app.instance;
  • самостално се региструје и упаљава POST /api/nodes/register; главна апликација ажурира CtraderCliNode по имену, тако да чвор прелази IP промене.

Последице​

  • Процурени захтев токена истиче за минуте; нема трајне shell креденцијале која может бити украдена.
  • Способност агента је ограничена на "покрени дозвољену слику" — не може бити претворена у опште удаљени shell.
  • Идентитет чвора је заснован на имену, тако да поновна подешавања чвора са новом IP не оставља сирочад историју.