0003 — Nod cTrader CLI ialah HTTP + JWT, tiada SSH/shell
Konteks
Bekas backtest/larian melaksanakan pada hos jauh. Pendekatan jelas — SSH dalam dan jalankan docker — memberikan apl utama pelaksanaan kod jauh sewenang-wenang dan kredensial berumur panjang pada setiap nod. Itu adalah jejari letupan besar untuk sistem yang menjalankan cBot pengguna yang tidak dipercayai.
Keputusan
Setiap hos jauh menjalankan ejen HTTP CtraderCliNode kendiri tanpa SSH dan tanpa shell. Apl utama memanggil ejen melalui HTTP; setiap permintaan membawa JWT HS256 berumur pendek (5 minit, iss=app-main / aud=app-node) ditandatangani dengan rahsia nod itu. Ejen:
- hanya menjalankan imej yang sepadan
AllowedImagePrefix(dengan sempadan laluan jadighcr.io/spotwaretidak boleh padananghcr.io/spotware-evil/...); - exec docker melalui
ArgumentList— tidak pernah rentetan shell; - adalah stateless, mencari bekas mengikut label
app.instance; - daftar diri dan jantung ke
POST /api/nodes/register; apl utama upsertCtraderCliNodemengikut nama, jadi nod kekal perubahan IP.
Akibat
- Token permintaan yang bocor tamat dalam beberapa minit; tiada kredensial shell yang berdiri untuk dicuri.
- Keupayaan ejen terikat kepada "menjalankan imej yang dibenarkan" — ia tidak boleh ditukar menjadi shell jauh umum.
- Identiti nod berasaskan nama, jadi menyediakan semula nod dengan IP baru tidak mengungkapkan sejarahnya.