Sandboxing เริ่ม 2007 บังคับ 2012 เป็นเครื่องมือ macOS จำกัดความเสียหายจากแอปที่โดน Hijack Apple กล่าว: "App Sandbox ไม่ป้องกันการโจมตีแอป แต่ลดความเสียหายจากการโจมตีที่สำเร็จ macOS App Sandboxing ปกป้องผู้ใช้โดยจำกัดความเสียหายที่แอปทำได้"
macOS App Sandboxing คืออะไร?
แต่ละแอปได้พื้นที่ของตัวเอง: "Sandbox" หากแอปอยากออกนอก Sandbox ต้องขออนุญาต OS ขึ้นอยู่กับ Sandbox Settings OS จะปฏิเสธหรืออนุมัติ พร้อมให้ข้อมูลเฉพาะที่จำเป็นน้อยที่สุด

คิดถึงรถยนต์: ผู้ขับขี่ได้รับการปกป้องจาก ABS, Airbags, Crumple Zones ในปี 2007 (ยุค Sandboxing) ไม่มีระบบคอมพิวเตอร์ที่คล้ายกัน คำถาม: Seatbelts ของคอมพิวเตอร์อยู่ไหน? Sandboxing ปกป้องผู้ใช้เหมือนรถยนต์: จัดการความล้มเหลวด้วยระบบลดความเสียหาย ไม่ว่าจาก Malicious Activity หรือ Coding Errors ความเสียหายลดลง
เพราะ Sandboxing จำกัดสิ่งที่แอปทำได้ จึงจำกัดอิสระนักพัฒนา Sandbox Apps รันช้ากว่า และพัฒนานานกว่า ด้วยความสามารถมหาศาลของ Mac ขีดจำกัด Sandbox ส่งผลใหญ่ต่อ Compatibility ของแอปต่างๆ Power Users มักเลือกแอปนอก Sandbox เพื่อ Performance หรือ Features
App Sandboxing ทำงานอย่างไร?
Sandboxing ฐานบน Principle of Least Privilege: ระบบทำสิ่งที่จำเป็นเท่านั้น โดยจำกัดแต่ละส่วนให้ทำเป้าหมายที่ประกาศไว้ ลดโอกาสแอปถูก Hijack เช่น แอปไฟฉาย ไม่ควรเข้าถึง Contacts
แอปออกนอก Sandbox ได้แต่ต้องได้อนุญาต OS ตัวอย่าง: Dialog "Save and Open" ใน macOS แอปใน Sandbox เข้าถึง Filesystem ไม่ได้โดยตรง ไม่สามารถวาด Open Panel ที่ ~/Documents ได้ ต้องขอ Powerbox API ผ่าน NSOpenPanel และ NSSavePanel Classes

แอปไม่เห็นภายใน Powerbox โดยตรง เฉพาะไฟล์ที่ Open/Save จะเข้าถึงได้ ทำหน้าที่สำคัญโดยไม่เสี่ยง
ทำได้ด้วย Entitlement (เฉพาะ com.apple.security.files.user-selected.read-write) นักพัฒนาตั้ง Entitlements ประกาศว่าแอปทำอะไร OS อนุญาตฟังก์ชันที่เหมาะสมและจำกัด
กระบวนคิดนี้ครอบคลุมทั้ง Sandboxing Model และ Mechanism: แอปต้องประกาศเจตนา และขออนุญาต OS-level Boss ก่อนทำสิ่งอันตราย
Sandboxed Apps vs Non-Sandboxed Apps
ตั้งแต่ 1 June 2012 แอป Third-party บน Mac App Store ต้อง Sandbox แม้ Sandbox อนุญาตฟังก์ชันมาก แอป Mac App Store มักจำกัดกว่าเวอร์ชัน Non-sandboxed บาง Developer ทำ 2 เวอร์ชัน: Full-featured สำหรับ Direct Download และ Gimped สำหรับ Mac App Store ด้วยความซับซ้อนของ Sandbox Development เพิ่มฟังก์ชันใหม่ยากขึ้น – ถ้าฟังก์ชันนั้น OS อนุญาต
แม้ Sandboxed Apps ได้ประโยชน์จากการกระจายผ่าน Mac App Store แตคุณเดาได้ว่าเราคิดว่ามีค่าเท่าไหร่ Sandboxing ขยายได้ด้วย Security Permissions แอปไม่สามารถเปิด Accessibility Permissions ให้ตัวเอง แต่อาจขอผู้ใช้ทำแทน


ดูว่าแอปไหน Sandbox: เปิด Activity Monitor คลิกขวา Column Titles เพิ่ม "Sandbox"

มีแอปที่ไม่มีอยู่ใน Sandbox ได้จริง Use Cases มีค่าหลายอย่างถูกป้องกันโดย Sandboxing ป้องกัน Inter-app Communication, Observation, Modification จำกัด Interaction ระหว่างแอป System-wide Shortcuts เช่น TextExpander ห้ามเพราะ Sandbox ไม่อนุญาตระดับนั้น
สรุป
แม้มีความหวัง macOS App Sandboxing ไม่ได้ Execute ดี จำกัด Unique Selling Points ของ Mac Apps: Speed และ Enhanced Functionality Apps นอก Sandbox เกือบเสมอ Capable และเร็วกว่า จากมุมมอง Power User: แอปที่ใช้บ่อยสุดเป็น Non-sandboxed TextExpander, SnagIt, TotalFinder สำคัญต่องานประจำวัน ระบบความปลอดภัยอนาคตต้องมี Flexibility และ Power สมดุลกับ Transparency