0003 — โหนด cTrader CLI เป็น HTTP + JWT ไม่มี SSH/shell
บริบท
คอนเทนเนอร์ย้อนกลับ/รันเรียกใช้บนโฮสต์ระยะไกล แนวทางที่ชัดเจน — SSH และรัน docker — ให้แอปหลักการดำเนินการโค้ดระยะไกลโดยพลการและข้อมูลประจำตัวระยะยาวบนทุกโหนด นั่นคือรัศมีการระเบิดขนาดใหญ่สำหรับระบบที่เรียกใช้ cBot ที่ไม่น่าเชื่อถือ
การตัดสินใจ
แต่ละโฮสต์ระยะไกลรันเอเจนต์ HTTP ของ CtraderCliNode ที่เป็นอิสระ โดยไม่มี SSH และไม่มี shell แอปหลักเรียกเอเจนต์ผ่าน HTTP; ทุกคำขอมี JWT ระยะสั้น HS256 (5 นาที iss=app-main / aud=app-node) ที่ลงนามด้วยความลับของโหนดนั้น เอเจนต์:
- เรียกใช้เฉพาะรูปภาพที่ตรงกับ
AllowedImagePrefix(มีขอบเขตเส้นทางเพื่อให้ghcr.io/spotwareไม่สามารถจับคู่ghcr.io/spotware-evil/...); - execs docker ผ่าน
ArgumentList— ไม่เคยเป็นสตริง shell; - เป็น stateless การค้นหาคอนเทนเนอร์โดยป้ายกำกับ
app.instance; - ลงทะเบียนตนเองและหัวใจจะ
POST /api/nodes/register; แอปหลักจำแนกCtraderCliNodeตามชื่อ เพื่อให้โหนดมีความสำคัญข้อมูลที่ตัวจักรการเปลี่ยนแปลง
ผลที่ตามมา
- โทเคนคำขอที่รั่วไหลหมดอายุในไม่กี่นาที; ไม่มี shell credential ที่ยังคงอยู่เพื่อให้ขโมย
- ความสามารถของเอเจนต์ได้รับการจำกัด "รันรูปภาพที่อนุญาต" — มันไม่สามารถเปลี่ยนเป็นเชลล์ระยะไกลทั่วไป
- ตัวตนโหนดตั้งชื่อเป็นพื้นฐาน ดังนั้นการจัดเตรียมโหนดใหม่ด้วย IP ใหม่จึงไม่ทำให้ประวัติของมันเป็นส่วนประกอบที่เก่า