Skip to main content

0004 — CBotBuilder ทำงานบนโฮสต์เว็บในคอนเทนเนอร์แซนด์บ็อกซ์

บริบท​

การสร้าง cBot ของผู้ใช้หมายถึงการเรียกใช้ MSBuild ที่ไม่น่าเชื่อถือ — โค้ดโดยพลการในเวลาการสร้าง (เป้าหมาย เครื่องกำเนิดต้นทาง สคริปต์ khôi) มันต้องการซ็อกเก็ต Docker เพื่อสปิน SDK คอนเทนเนอร์ โหนดเรียกใช้คอนเทนเนอร์การซื้อขายและไม่ควรเก็บสิทธิ์การสร้างด้วย

การตัดสินใจ​

CBotBuilder ทำงาน บนโฮสต์เว็บ (ซึ่งมีซ็อกเก็ต Docker อยู่แล้ว) ภายในคอนเทนเนอร์ SDK ที่สามารถทิ้งได้ ด้วย:

  • ไดเรกทอรี /work ที่ถูก bind-mounted (เพียงอินพุต/เอาต์พุตการสร้างเท่านั้น ไม่ใช่ระบบไฟล์โฮสต์);
  • ระดับเสียง app-nuget-cache ที่ใช้ร่วมกันเพื่อประสิทธิภาพการกู้คืน;
  • ไม่มีการเข้าถึงเครือข่ายโฮสต์นอกเหนือจากสิ่งที่การกู้คืนต้องการ

ดังนั้น MSBuild ที่ไม่น่าเชื่อถือจึงไม่สามารถเข้าถึงระบบไฟล์โฮสต์หรือเครือข่าย คอนเทนเนอร์เรียกใช้/ย้อนกลับในทางตรงกันข้ามเรียกใช้บนโหนดที่เลือกโดย NodeScheduler

ผลที่ตามมา​

  • สิทธิ์การสร้าง (ซ็อกเก็ต Docker) ถูกจำกัดไว้เฉพาะโฮสต์เว็บ; โหนดเรียกใช้เฉพาะรูปภาพการซื้อขายที่อนุญาต
  • การสร้างแต่ละครั้งจะถูกแยกในคอนเทนเนอร์ที่สามารถใช้ได้ — การสร้างที่เป็นอันตรายจะไม่สามารถคงอยู่หรือหลบหนี
  • โฮสต์เว็บจะต้องมีซ็อกเก็ต Docker ที่มีอยู่; นี่คือข้อกำหนดการจัดเตรียม ไม่ใช่ทางเลือก