4
sandboxing ที่ปลอดภัยที่สุดที่เป็นไปได้ง่ายที่สุด (ต้องการทรัพยากรที่ จำกัด )
ฉันกำลังทำงานในโครงการที่ใช้การจำลองแบบกระจาย: โค้ดโดยพลการถูกดำเนินการบนหลายโหนดและผลลัพธ์จะถูกรวบรวมและรวมในภายหลัง แต่ละโหนดเป็นอินสแตนซ์ของเครื่องเสมือน Ubuntu Linux และเรียกใช้กระบวนการหลักซึ่งดูแลการส่งต่อรหัสที่จะถูกดำเนินการไปยังกระบวนการของผู้ปฏิบัติงานจำนวนมาก (1 สำหรับแต่ละคอร์) คำถามนี้เกี่ยวกับวิธีการตรวจสอบให้แน่ใจว่าผู้ปฏิบัติงานแต่ละคนทำงานในสภาพแวดล้อมแบบ sandbox โดยไม่ต้องหันไปใช้อินสแตนซ์ของเครื่องเสมือนสำหรับแต่ละคน ข้อกำหนดที่แน่นอนสำหรับคนงานคือ: fs : ไม่มีสิทธิ์ในการเขียนสิทธิ์แบบอ่านอย่างเดียวถูก จำกัด ไว้ที่ไดเรกทอรีเดียว (และโฟลเดอร์ย่อย) สุทธิ : อนุญาตการสื่อสารในท้องถิ่นเท่านั้น (IPC, TCP, อะไรก็ตาม ... ) mem : ขีดสูงสุดในการใช้งานหน่วยความจำ (ไม่มีหน่วยความจำ swap) ฆ่าถ้าเกินขีด จำกัด mem cpu : อนุญาตให้ 1 คอร์เท่านั้น, ฆ่าถ้าเกินเวลาที่กำหนด ไม่ควรมีข้อ จำกัด อื่น ๆ : ผู้ปฏิบัติงานควรสามารถโหลดไลบรารีไดนามิก (จากโฟลเดอร์แบบอ่านอย่างเดียว), วางไข่เธรดหรือกระบวนการใหม่, เรียกฟังก์ชันระบบ, ecc …