การจำลองสภาพแวดล้อมจริงด้วยตนเองโดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม

  • การกำหนดขอบเขตที่ชัดเจนสำหรับไฟล์ กระบวนการ เครือข่าย และข้อมูลประจำตัว เพื่อป้องกันข้อผิดพลาดและการโจมตีเรียกว่าการทำแซนด์บ็อกซ์ (Sandboxing)
  • ระบบปฏิบัติการ macOS, Linux และ Windows มีฟังก์ชันพื้นฐานในตัวสำหรับการสร้างสภาพแวดล้อมที่แยกต่างหากโดยไม่ต้องติดตั้งเครื่องมือเพิ่มเติม
  • Windows Sandbox ช่วยให้คุณสามารถเรียกใช้ซอฟต์แวร์และไฟล์ที่น่าสงสัยบนเดสก์ท็อปชั่วคราวที่ปลอดภัยได้
  • การผสานรวมแซนด์บ็อกซ์ นโยบายเครือข่าย การจัดการความลับ และการตั้งค่าตามโครงการ ช่วยเสริมความปลอดภัยให้กับเอเจนต์โค้ด

คู่มือแซนด์บ็อกซ์

เมื่อทำงานกับซอฟต์แวร์ เอเจนต์ AI หรือไฟล์ที่ดาวน์โหลดจากอินเทอร์เน็ต หนึ่งในความกังวลที่พบบ่อยที่สุดคือการทำให้ระบบเสียหาย ติดมัลแวร์ หรือข้อมูลสำคัญรั่วไหลโดยแทบไม่รู้ตัว คุณไม่จำเป็นต้องหวาดระแวงมากเกินไป: การทำงานผิดพลาดเพียงครั้งเดียวอาจลบฐานข้อมูล ทำลายการติดตั้ง หรือทำให้เกิดข้อผิดพลาดในระบบของคุณได้

ข่าวดีก็คือ ปัจจุบันคุณมีหลายวิธีในการสร้างสภาพแวดล้อมที่แยกต่างหากเพื่อทดสอบสิ่งต่างๆ โดยไม่ต้องเสี่ยงต่อความเสียหายและหลายวิธีนั้นถูกรวมเข้ากับระบบปฏิบัติการเองหรือแพลตฟอร์มที่ออกแบบมาสำหรับตัวแทนโค้ด เราเรียกสิ่งนี้ว่า "แซนด์บ็อกซ์" (sandboxing): การรันโค้ดภายในสภาพแวดล้อมที่ควบคุมได้ เพื่อให้แม้ว่าจะมีสิ่งผิดพลาดหรือมีเจตนาร้าย ความเสียหายก็จะถูกจำกัดอยู่ในวงแคบ

การทำแซนด์บ็อกซ์ด้วยตนเองโดยไม่ใช้ซอฟต์แวร์เพิ่มเติมคืออะไร?

ในด้านความปลอดภัยและการพัฒนา การพูดถึงแซนด์บ็อกซ์หมายถึงการกำหนดอย่างแม่นยำว่าโปรแกรมหรือเอเจนต์สามารถเข้าถึงอะไรได้บ้างขณะทำงานไม่ใช่แค่ "การรันมันในที่อื่น" แต่เป็นการกำหนดขอบเขตที่ชัดเจน เช่น ไฟล์ใดที่มันสามารถมองเห็นได้ กระบวนการใดที่มันสามารถเริ่มต้นได้ มันสามารถเข้าถึงเครือข่ายได้หรือไม่ ข้อมูลประจำตัวใดที่มันสามารถใช้ได้ สภาพแวดล้อมนั้นคงอยู่ได้นานแค่ไหน และสถานะของมันจะเป็นอย่างไรเมื่อมันหยุดทำงาน

วลี "ด้วยตนเอง" และ "โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม" นั้นอาจทำให้เข้าใจผิดได้ ในหลายกรณี คุณสามารถใช้คุณสมบัติที่มีอยู่แล้วในระบบปฏิบัติการหรือแพลตฟอร์มการพัฒนาของคุณเองเช่น Windows Sandbox, กลไกพื้นฐานของ Linux (Landlock, seccomp) หรือกลไกของ macOS คุณไม่จำเป็นต้องติดตั้งชุดซอฟต์แวร์เวอร์ชวลไลเซชันแบบเต็มรูปแบบ แต่คุณต้องเรียนรู้วิธีการเปิดใช้งานและจัดการกลไกในตัวเหล่านี้เพื่อให้ทำหน้าที่เป็นกำแพงกั้นระหว่างโค้ดที่คุณต้องการทดสอบกับเครื่องจริงของคุณ

เหตุใดเอเจนต์โค้ดจึงต้องการสภาพแวดล้อมที่แยกต่างหาก?

เอเจนต์การเขียนโค้ดสมัยใหม่ไม่ได้เป็นเพียงแค่ผู้ช่วยแชทที่แนะนำโค้ดตัวอย่างอีกต่อไปแล้ว แต่เป็นสภาพแวดล้อมการทำงานที่เชื่อมโยงกับโมเดลภาษาพวกมันสามารถอ่านที่เก็บโค้ดของคุณ แก้ไขไฟล์ เรียกใช้คำสั่งเทอร์มินัลติดตั้งแพ็กเกจ สร้างคอนเทนเนอร์สื่อสารกับ API ภายนอก และแม้กระทั่งเปิดเซสชันเบราว์เซอร์ได้

แพลตฟอร์มต่างๆ เช่น Claude Code, "Deep Agents" บางตัวของ LangChain และแซนด์บ็อกซ์เฉพาะที่แจกจ่ายโดย Docker และเครื่องมืออื่นๆ อธิบายอย่างชัดเจนว่าเอเจนต์เหล่านี้ทำงานบนระบบไฟล์จริงอย่างไร เริ่มเธรดอย่างไร และมอบหมายงานให้กับซับเอเจนต์เฉพาะทางอย่างไรกล่าวอีกนัยหนึ่ง พวกมันค่อนข้างคล้ายกับนักพัฒนาซอฟต์แวร์ระดับเริ่มต้นที่สามารถเข้าถึงเครื่องมือของคุณได้... เพียงแต่เป็นระบบอัตโนมัติและรวดเร็วมาก

ในบริบทนี้ คำถามด้านความปลอดภัยหลักเปลี่ยนจาก "มันตอบสนองต่อคำสั่งได้อย่างถูกต้องหรือไม่?" ไปเป็น"ขอบเขตการทำงานของมันคืออะไรเมื่อมันทำผิดพลาด ทำงานไม่ตรงแนว หรือถูกดัดแปลง?"ตัวอย่างเช่น หากโมเดลสามารถรัน pytest ติดตั้งแพ็กเกจ npm จัดการสาขา หรือตรวจสอบความล้มเหลวในการคอมไพล์ได้ มันก็อยู่ห่างจากการแก้ไขสคริปต์การปรับใช้ การแก้ไข Git hooks หรือการส่งข้อมูลลับไปยังบริการระยะไกลเพียงไม่กี่ขั้นตอนเท่านั้น

คำตอบที่ง่ายที่สุดมักจะเป็นการกำหนดให้มนุษย์อนุมัติทุกคำสั่ง ซึ่งช่วยได้ แต่ก็มีปัญหาที่เกิดขึ้นซ้ำๆ คือความเหนื่อยล้าจากการขออนุมัติในสภาพแวดล้อมที่วิศวกรเรียกใช้เอเจนต์หรือเวิร์กโฟลว์จำนวนมากพร้อมกัน ปริมาณคำขอที่มากมายมหาศาลหมายความว่าเกือบทุกอย่างจะได้รับการอนุมัติโดยไม่ได้อ่านอย่างละเอียด เมื่อคำขออนุญาตมากกว่า 90% ได้รับการอนุมัติโดยอัตโนมัติ กลไกนั้นจะหยุดเป็นการควบคุมความปลอดภัยที่แท้จริงและกลายเป็นเพียงพิธีกรรมเท่านั้น

วิธีการแยกสภาพแวดล้อมการทำงานและการพักผ่อนออกจากกัน
บทความที่เกี่ยวข้อง:
วิธีการแยกสภาพแวดล้อมการทำงานและการพักผ่อนออกจากกัน

นั่นเป็นเหตุผลว่าทำไมแซนด์บ็อกซ์ถึงมีความสำคัญมาก: มันไม่ได้ทำให้โมเดลไร้ข้อผิดพลาดหรือแก้ไขปัญหาการแทรกคำสั่งแต่จะช่วยลด "รัศมีของการแพร่กระจาย" ของข้อผิดพลาด หาก AI ทำงานผิดพลาดหรือมีคนสามารถแฮ็กคำสั่งได้ ความเสียหายจะถูกจำกัดอยู่ภายในสภาพแวดล้อมที่แยกออกมา แทนที่จะแพร่กระจายไปยังระบบการผลิตหรือแล็ปท็อปของคุณโดยตรง

ข้อจำกัดหลักของแซนด์บ็อกซ์เอเจนต์โค้ด

ระบบแซนด์บ็อกซ์ที่จริงจังสำหรับเอเจนต์การเขียนโค้ดนั้น อาศัยขอบเขตหลายประเภท ไม่ใช่แค่ "ไดเร็กทอรีอื่น" หรือ "คอนเทนเนอร์อื่น" เท่านั้น แต่ละประเภทครอบคลุมแง่มุมของความเสี่ยงที่แตกต่างกัน และการทำความเข้าใจขอบเขตเหล่านี้เป็นสิ่งสำคัญสำหรับการสร้างแซนด์บ็อกซ์ด้วยตนเองอย่างมีประสิทธิภาพโดยใช้ทรัพยากรที่มีอยู่ของคุณ

ขอบเขตของระบบไฟล์

ขั้นตอนแรกคือการตัดสินใจว่าเอเจนต์สามารถมองเห็นและแก้ไขโครงสร้างไดเร็กทอรีใดได้บ้างในแซนด์บ็อกซ์ที่ตั้งค่าอย่างถูกต้อง เอเจนต์ควรจะสามารถอ่านและเขียนได้เฉพาะพื้นที่ทำงานหรือวอลุ่มที่คุณเชื่อมต่อไว้ให้โดยเฉพาะเท่านั้น ส่วนที่เหลือของระบบ (ไดเร็กทอรีโฮมของผู้ใช้ เส้นทางระบบ โครงการอื่นๆ) ควรอยู่นอกเหนือการเข้าถึงของเอเจนต์

เฟรมเวิร์กเอเจนต์และแพลตฟอร์มแซนด์บ็อกซ์ทำให้เรื่องนี้ชัดเจนมาก: แซนด์บ็อกซ์เป็นกำแพงที่ป้องกันการเข้าถึงไฟล์ของโฮสต์นอกเหนือจากสิ่งที่แชร์ไว้ในโมเดลที่ใช้ไมโคร VM กฎจะเข้มงวดกว่านั้นอีก: เฉพาะไดเร็กทอรีที่คุณเมานต์ (มักมีสิทธิ์อ่านเขียน) เท่านั้นที่จะข้ามขอบเขตระหว่างเครื่องเสมือนและโฮสต์ ทุกอย่างอื่นจะไม่สามารถเข้าถึงได้เว้นแต่คุณจะเปิดมัน

ขอบเขตกระบวนการและแกนหลัก

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

ระบบแซนด์บ็อกซ์ที่มีประสิทธิภาพจำนวนมากอาศัยไมโครวีเอ็ม (microVM) หรือเครื่องเสมือนขนาดเล็กที่มีเคอร์เนล Linux ของตัวเอง เสริมด้วยเทคนิค seccomp, cgroups, namespaces และ jail บางระบบใช้เลเยอร์อย่าง gVisor หรือ Kata Containers เพื่อแทรกเลเยอร์การจำลองเสมือนหรือการจำลองระหว่างกระบวนการที่แยกออกมากับเคอร์เนลของโหนด แนวคิดพื้นฐานคือ หากมีคนเจาะระบบภายใน การโจมตีไปยังโฮสต์จะทำได้ยากกว่าในคอนเทนเนอร์ที่มีเคอร์เนลร่วมกันแบบธรรมดามาก

ขอบเขตเครือข่าย

ตัวแทนโค้ดมัก "ต้องการการเชื่อมต่อเครือข่าย" มาก พวกมันต้องการติดตั้งส่วนประกอบที่จำเป็น ดูเอกสาร เรียกใช้ API ของ LLM เข้าถึงที่เก็บข้อมูลระยะไกล หรือแม้กระทั่งท่องเว็บ หากไม่มีนโยบายที่ชัดเจน สภาพแวดล้อมที่ "แยกตัว" อาจกลายเป็นช่องทางขโมยข้อมูลชั้นดีได้

ดังนั้น แพลตฟอร์มต่างๆ จึงเริ่มนำนโยบายการปฏิเสธเริ่มต้นสำหรับทราฟฟิกขาออกมาใช้ มากขึ้นเรื่อยๆ กล่าวคือ HTTP/HTTPS จะถูกบล็อก ยกเว้นในบางกรณี TCP/UDP/ICMP จะถูกจำกัด และที่สำคัญมากคือ การเข้าถึงช่วง IP ส่วนตัวและ IP ภายในเครื่องจะถูกห้าม การสื่อสารจะได้รับอนุญาตเฉพาะกับโฮสต์หรือโดเมนที่ระบุไว้อย่างชัดเจนในรายการอนุญาต และมักจะผ่านพร็อกซีที่ควบคุมโดยโฮสต์นั้นๆ

ขีดจำกัดข้อมูลประจำตัว

การล็อกเอเจนต์ไว้ก็แทบไม่มีประโยชน์อะไร หากภายในนั้นมันยังสามารถอ่านคีย์ API โทเค็นการปรับใช้ หรือข้อมูลลับในฐานข้อมูลของคุณได้ การออกแบบแซนด์บ็อกซ์สมัยใหม่จำนวนมากจึงไม่ใส่ข้อมูลลับดิบๆ เข้าไปในสภาพแวดล้อมที่แยกออกมาแต่จะใช้พร็อกซีบนโฮสต์เพิ่มข้อมูลประจำตัวลงในส่วนหัวของคำขอ HTTP ที่แซนด์บ็อกซ์ต้องการส่งแทน

ด้วยวิธีการนี้ กระบวนการภายในแซนด์บ็อกซ์จะใช้ข้อมูลประจำตัว แต่จะไม่เห็นข้อมูลเหล่านั้นเลย ซึ่งช่วยลดผลกระทบจากการโจรกรรมข้อมูลโดยเอเจนต์ได้อย่างมาก อย่างไรก็ตาม ทันทีที่คุณจัดเก็บคีย์ไว้ในไฟล์หรือตัวแปรสภาพแวดล้อมภายในแซนด์บ็อกซ์ ข้อดีนั้นก็จะหายไป: โมเดลจะสามารถอ่านข้อมูลนั้นได้โดยตรง และการแทรกคำสั่งใดๆ ก็สามารถสั่งให้มันกรองข้อมูลนั้นได้

ขอบเขตและสถานะของวงจรชีวิต

สุดท้ายนี้ ยังมีข้อจำกัดด้านเวลา: อะไรบ้างที่จะถูกเก็บรักษาไว้ และอะไรบ้างที่จะถูกทำลายเมื่อสภาพแวดล้อมหยุดทำงานเอเจนต์ไม่ใช่กระบวนการที่ทำงาน ณ จุดเวลาใดจุดเวลาหนึ่ง: พวกมันอ่าน รวบรวม แก้ไขข้อบกพร่อง เปิดสมมติฐานหลายอย่าง ละทิ้งบางอย่าง และดำเนินการต่อในบางอย่าง... ซึ่งต้องใช้รันไทม์ที่จัดการสถานะอย่างชาญฉลาด: การเริ่มต้นอย่างรวดเร็ว การระงับ การบันทึกภาพ การแยกสาขา และการลบอย่างปลอดภัย

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

การใช้งาน Sandboxing บน macOS, Linux และ Windows

คู่มือแซนด์บ็อกซ์

นอกเหนือจากผลิตภัณฑ์เชิงพาณิชย์แล้ว หลายทีมเลือกที่จะใช้ประโยชน์จากกลไกการแยกส่วนที่มีอยู่แล้วในระบบปฏิบัติการเพื่อสร้างแซนด์บ็อกซ์เอเจนต์โค้ดของตนเอง โดยไม่จำเป็นต้องเพิ่มเลเยอร์ที่ซับซ้อนกว่าเดิม สิ่งสำคัญคือการทำความเข้าใจว่าแต่ละแพลตฟอร์มมีอะไรบ้าง

การจำกัดการเข้าถึงข้อมูลบน macOS: เข็มขัดนิรภัยและโปรไฟล์แบบไดนามิก

บน macOS มีการประเมินโมเดลหลายแบบ ได้แก่ App Sandbox, คอนเทนเนอร์, เครื่องเสมือน และ Seatbelt ตัวเลือกแรกมีข้อเสียที่สำคัญสำหรับสภาพแวดล้อมการพัฒนา: App Sandbox จำเป็นต้องลงนามในทุกไบนารีที่เอเจนต์สามารถเรียกใช้งานได้และสืบทอดความน่าเชื่อถือของลายเซ็น ซึ่งเปิดช่องโหว่ให้เกิดการละเมิดหากเอเจนต์เองสร้างหรือแก้ไขไบนารี; คอนเทนเนอร์จำกัดอยู่เฉพาะระบบนิเวศของ Linux; เครื่องเสมือนแบบดั้งเดิมทำให้เวลาในการบูตเพิ่มขึ้นอย่างมากและใช้หน่วยความจำมากขึ้น

ทางเลือกที่ใช้งานได้จริงคือการใช้Seatbelt ซึ่งเข้าถึงได้ผ่านทาง sandbox-execแม้ว่า Apple จะประกาศว่ามันล้าสมัยมาหลายปีแล้ว แต่ก็ยังคงถูกใช้งานโดยแอปพลิเคชันที่สำคัญ เช่นChromeมันช่วยให้สามารถเรียกใช้คำสั่งภายใต้โปรไฟล์แซนด์บ็อกซ์ซึ่งจำกัดพฤติกรรมของกระบวนการย่อยทั้งหมด

โปรไฟล์นี้กำหนดสิทธิ์การเข้าถึงได้อย่างละเอียด: สามารถกรองการเรียกใช้ระบบเฉพาะ และการอ่านหรือเขียนข้อมูลในไฟล์และไดเร็กทอรีเฉพาะโดยใช้ภาษาการกำหนดนโยบายที่ไม่ซ้ำกัน การใช้งานบางอย่างสร้างนโยบายนี้แบบไดนามิกในระหว่างการทำงาน โดยรวมการกำหนดค่าพื้นที่ทำงาน นโยบายของผู้ดูแลระบบ และไฟล์ที่ผู้ใช้ละเว้น เพื่อให้เอเจนต์มีพื้นที่ในการทำงานโดยไม่ต้องเข้าถึงพื้นที่ที่อาจเป็นอันตราย

การสร้างแซนด์บ็อกซ์บนลินุกซ์: Landlock และ seccomp

ลินุกซ์มอบทั้งความยืดหยุ่นที่มากขึ้นและงานที่มากขึ้น: เคอร์เนลเปิดเผยฟังก์ชันพื้นฐานอย่างLandlock และ seccompแต่เป็นความรับผิดชอบของผู้ใช้ที่จะรวมฟังก์ชันเหล่านั้นเข้าด้วยกันเป็นแซนด์บ็อกซ์ที่สอดคล้องกันและจัดการได้

แทนที่จะพึ่งพาโปรเจกต์ภายนอกเพียงอย่างเดียว บางทีมเลือกที่จะใช้ seccomp โดยตรงเพื่อบล็อกการเรียกใช้ระบบที่ถือว่าอันตรายและใช้ Landlock เพื่อจำกัดการเข้าถึงระบบไฟล์ วิธีการทั่วไปคือการติดตั้งพื้นที่ทำงานของผู้ใช้บนโอเวอร์เลย์ระบบไฟล์ และแทนที่ไฟล์ที่ทำเครื่องหมายว่าไม่สนใจด้วยสำเนาพิเศษที่ได้รับการปกป้องโดย Landlockเพื่อให้กระบวนการที่แยกออกมาไม่สามารถอ่านหรือแก้ไขสิ่งที่คุณต้องการซ่อนได้

ส่วนที่ช้าที่สุดของวิธีการนี้มักจะเป็นการค้นหาและติดตั้งไฟล์เหล่านั้นใหม่ทั้งหมด เนื่องจากLinux ไม่มีวิธีที่ง่ายในการค้นหาเส้นทางแบบเต็มของไฟล์ภายในตัวกรอง seccomp-bpfถึงกระนั้น ผลลัพธ์ที่ได้ก็คือแซนด์บ็อกซ์ที่มีความละเอียดค่อนข้างดี: เอเจนต์สามารถทำงานกับโครงสร้างโปรเจ็กต์ของตนได้ ในขณะที่เส้นทางที่ต้องห้ามนั้นถูกตัดออกจากสภาพแวดล้อมโดยปริยาย

การสร้างแซนด์บ็อกซ์บน Windows: การใช้ WSL2

บนระบบ Windows เรื่องราวจะแตกต่างออกไป การสร้างแซนด์บ็อกซ์แบบเนทีฟที่ใช้งานได้ทั่วไปนั้นซับซ้อนกว่ามาก เพราะกลไกการแยกส่วนที่มีอยู่หลายอย่างได้รับการออกแบบมาสำหรับเบราว์เซอร์หรือซอฟต์แวร์เฉพาะทางอื่นๆและไม่เข้ากันได้ดีกับเครื่องมือพัฒนาซอฟต์แวร์ที่ใช้งานได้หลากหลาย

วิธีแก้ปัญหาที่ได้ผลคือการรันแซนด์บ็อกซ์ Linux ภายใน WSL2ด้วยวิธีนี้ คุณจะนำเครื่องมือการแยกส่วนของ Linux (Landlock, seccomp, namespaces ฯลฯ) มาใช้ซ้ำบนฐานเสมือนที่แยกเซสชันการพัฒนาออกจากโฮสต์ Windows ในขณะเดียวกัน ก็มีการทำงานร่วมกับ Microsoft อย่างต่อเนื่องเพื่อเปิดเผยฟังก์ชันพื้นฐานใหม่ๆ ที่จะช่วยให้สามารถสร้างแซนด์บ็อกซ์แบบเนทีฟสำหรับเครื่องมือพัฒนาได้มากขึ้นในอนาคต

Windows Sandbox: พื้นที่แยกต่างหากที่ผสานรวมเข้ากับระบบ

สำหรับผู้ที่ใช้ Windows 10 หรือ 11 รุ่น Pro, Enterprise หรือ Education มีเครื่องมือที่น่าสนใจเป็นพิเศษอย่างหนึ่งคือWindows Sandboxมันคือเครื่องเสมือนขนาดเล็กที่รวมอยู่ในระบบ ซึ่งช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันที่ไม่น่าเชื่อถือหรือไฟล์ที่น่าสงสัยในสภาพแวดล้อมที่สามารถใช้งานแล้วทิ้งได้

แนวคิดนั้นง่ายมาก: การเปิด Windows Sandbox จะเริ่มต้นเดสก์ท็อป Windows ที่สะอาดหมดจดชั่วคราว เหมือนกับการติดตั้งใหม่ทุกสิ่งที่คุณคัดลอกหรือติดตั้งภายในนั้น ไม่ว่าจะเป็นโปรแกรม เอกสาร หรือสคริปต์ จะมีอยู่เฉพาะในตอนนั้นเท่านั้น หากคุณปิดหน้าต่าง สภาพแวดล้อมจะถูกทำลาย: ซอฟต์แวร์ ไฟล์ และสถานะของระบบจะถูกลบทิ้ง และครั้งต่อไปที่คุณเปิด Windows คุณจะเริ่มต้นใหม่ทั้งหมด

คุณสมบัติหลักของ Windows Sandbox

ฟีเจอร์นี้มาพร้อมกับคุณสมบัติที่มีประโยชน์หลายประการสำหรับการสร้างแซนด์บ็อกซ์ด้วยตนเองโดยไม่ต้องพึ่งพาเครื่องมือของบุคคลที่สาม:

  • ส่วนหนึ่งของ Windowsทุกสิ่งที่คุณต้องการรวมอยู่ในเวอร์ชันที่เข้ากันได้แล้ว (Pro, Enterprise, Education) คุณไม่จำเป็นต้องดาวน์โหลดอิมเมจหรือดูแลเครื่องเสมือนภายนอกเพิ่มเติม
  • ใช้แล้วทิ้งและสะอาดหมดจดทุกครั้งที่ใช้งาน จะเหมือนกับการติดตั้ง Windows ใหม่เอี่ยม ไม่มีสิ่งใดที่คุณทำภายในโปรแกรมจะถูกบันทึกไว้ในอุปกรณ์ของคุณเมื่อคุณปิดโปรแกรมแล้ว
  • ปลอดภัยตั้งแต่การออกแบบระบบนี้อาศัยการจำลองเสมือนที่รองรับโดยฮาร์ดแวร์ (Hyper-V) เพื่อแยกเคอร์เนลของระบบเสมือนออกจากเคอร์เนลของระบบหลัก โดยใช้ไฮเปอร์ไวเซอร์ของ Microsoft เพื่อแยกโลกทั้งสองออกจากกัน
  • มีประสิทธิภาพ: การเริ่มต้นระบบรวดเร็วภายในไม่กี่วินาที ด้วยการจัดการหน่วยความจำอัจฉริยะและการรองรับ GPU เสมือน ทำให้ใช้ทรัพยากรน้อยกว่า VM แบบดั้งเดิม

ในทางเทคนิคแล้ว มันทำงานเหมือนเครื่องเสมือน Windows ขนาดเล็กที่ใช้แล้วทิ้งได้เหมาะสำหรับการทดสอบโปรแกรมติดตั้ง เยี่ยมชมเว็บไซต์ที่น่าสงสัย หรือเปิดไฟล์แนบในอีเมลที่คุณไม่มั่นใจว่าจะทำงานบนระบบจริงของคุณได้

ตัวอย่างการใช้งาน Windows Sandbox ในทางปฏิบัติ

มีสถานการณ์ทั่วไปหลายอย่างที่ Windows Sandbox โดดเด่นในฐานะโซลูชันการสร้างแซนด์บ็อกซ์ด้วยตนเองที่ใช้งานง่าย:

  • ลองซอฟต์แวร์ที่ไม่รู้จักเมื่อคุณดาวน์โหลดแอปพลิเคชันหรือไฟล์ปฏิบัติการจากอินเทอร์เน็ต และไม่แน่ใจเกี่ยวกับแหล่งที่มา คุณสามารถติดตั้งลงใน Windows Sandbox ก่อน แล้วดูว่ามันทำงานอย่างไรโดยไม่มีความเสี่ยงต่อคอมพิวเตอร์ของคุณ
  • การท่องเว็บอย่างปลอดภัยยิ่งขึ้น: สำหรับ การเข้าชมเว็บไซต์ที่อาจเป็นอันตราย มีมัลแวร์ หรือเว็บไซต์หลอกลวงคุณสามารถเปิดเบราว์เซอร์ของคุณภายในแซนด์บ็อกซ์ได้ หากเกิดข้อผิดพลาดใดๆ การปิดหน้าต่างก็จะลบร่องรอยทั้งหมดออกไป
  • การเปิดไฟล์แนบและไฟล์ที่ไม่น่าเชื่อถือหากคุณได้รับไฟล์แนบที่น่าสงสัยหรือไฟล์ ZIP ที่ดูไม่น่าเชื่อถือ ให้คัดลอกไฟล์นั้นไปยังสภาพแวดล้อมจำลอง (sandbox) เปิดไฟล์นั้นที่นั่น และเมื่อตรวจสอบแล้ว ให้ตัดสินใจว่าคุ้มค่าที่จะแตกไฟล์ไปยังระบบจริงของคุณหรือไม่
  • การสาธิตและการทดสอบเครื่องมือเฉพาะเหมาะอย่างยิ่งสำหรับการสร้างซอฟต์แวร์สาธิต ทดสอบเวอร์ชันพรีวิว ส่วนขยาย หรือส่วนเสริม โดยไม่ทำให้การติดตั้งหลักของคุณรก
  • รักษาสภาพแวดล้อมการพัฒนาที่แยกจากกันหลายแห่งคุณสามารถสร้างพื้นที่แยกต่างหากสำหรับแต่ละชุดภาษาหรือเวอร์ชันได้ ตัวอย่างเช่น พื้นที่ทดสอบสำหรับ Python แต่ละเวอร์ชันและส่วนประกอบที่เกี่ยวข้องเพื่อไม่ให้การทดลองไปรบกวนสภาพแวดล้อมที่เสถียรของคุณ

ข้อกำหนดและใบอนุญาตสำหรับการใช้งาน Windows Sandbox

ไม่ใช่ทุกคนที่จะสามารถใช้ Windows Sandbox ได้ แต่ฟีเจอร์นี้มีให้ใช้งานแล้วในสภาพแวดล้อมการทำงานระดับมืออาชีพหลายแห่ง ในการเปิดใช้งานบนคอมพิวเตอร์ของคุณ คุณต้องมี:

  • รุ่น Windows ที่เข้ากันได้ระบบปฏิบัติการ Windows 10/11 Pro, Enterprise, Pro Education/SE หรือ Education รุ่น Home ไม่ได้รับการสนับสนุน
  • การสนับสนุนเวอร์ชวลไลเซชันการมีสิ่งนี้เป็นสิ่งจำเป็นอย่างยิ่ง ฟังก์ชันเวอร์ชวลไลเซชันใน BIOS/UEFI (Intel VT-x, AMD-V หรือเทียบเท่า).
  • ทรัพยากรขั้นต่ำ: แรมอย่างน้อย 4 GB (แนะนำ 8 GB), พื้นที่ว่างในฮาร์ดดิสก์อย่างน้อย 1 GB —ควรเป็น SSD— และซีพียูอย่างน้อย 2 คอร์ (ถ้ามี 4 คอร์จะดีที่สุด พร้อมเทคโนโลยี Hyperthreading)
  • ปรับปรุงระบบปฏิบัติการเริ่มตั้งแต่เวอร์ชันบางรุ่น (เช่น Windows 10 เวอร์ชัน 18305 ขึ้นไป และ Windows 11 รุ่นใหม่ ๆ) สำหรับสถาปัตยกรรม ARM64 ความเข้ากันได้จะเกิดขึ้นในเวอร์ชันที่ใหม่กว่า

ในส่วนของการอนุญาตใช้งานนั้น รุ่น Pro, Enterprise และ Education จะรวมสิทธิ์การใช้งาน Windows Sandbox ไว้แล้วโดยไม่ต้องเสียค่าใช้จ่ายเพิ่มเติมสำหรับใบอนุญาตซอฟต์แวร์เวอร์ชวลไลเซชัน เพียงแค่เปิดใช้งานก็สามารถใช้งานได้ทันที

เมื่อใดที่การปรับแต่งประสิทธิภาพทำให้ประสบการณ์การใช้งานคอมพิวเตอร์ของคุณแย่ลง และวิธีหลีกเลี่ยงปัญหานั้น
บทความที่เกี่ยวข้อง:
วิธีทดสอบซอฟต์แวร์โดยไม่ทิ้งร่องรอยใดๆ บนระบบ

วิธีเปิดใช้งาน Windows Sandbox โดยไม่ต้องใช้เครื่องมือเพิ่มเติม

ในการเริ่มต้นใช้งาน คุณไม่จำเป็นต้องใช้อุปกรณ์ใดๆ นอกเหนือจากตัวระบบเอง:

  1. เปิดเมนู Start แล้วมองหาตัวเลือกนั้น "เปิดหรือปิดคุณลักษณะของ Windows".
  2. ในรายการคุณสมบัติ ให้ทำเครื่องหมาย แซนด์บ็อกซ์ของ Windows และยืนยัน
  3. โปรดรีสตาร์ทคอมพิวเตอร์เมื่อได้รับแจ้ง
  4. หลังจากรีสตาร์ทเครื่องแล้ว ให้ค้นหา "Windows Sandbox" ในเมนู Start แล้วเรียกใช้งาน

หากคุณต้องการใช้วิธีทางเทคนิคมากขึ้น คุณสามารถเปิดใช้งานได้โดยใช้ PowerShell ด้วยคำสั่ง`Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online`โดยต้องมีสิทธิ์ผู้ดูแลระบบ เมื่อเปิดใช้งานแล้ว แซนด์บ็อกซ์จะพร้อมใช้งานเสมอเมื่อใดก็ตามที่คุณต้องการ "เครื่องสำรอง" ที่ปลอดภัยนั้น

ไฟล์การกำหนดค่าและการปรับแต่ง

Windows Sandbox รองรับไฟล์การกำหนดค่าแบบง่ายๆ ที่ช่วยให้คุณปรับแต่งพารามิเตอร์สภาพแวดล้อมบางอย่างได้เช่น การติดตั้งโฟลเดอร์โฮสต์เป็นแบบอ่านอย่างเดียวหรืออ่านเขียน การปิดใช้งานเครือข่าย การเรียกใช้สคริปต์เมื่อเริ่มต้นระบบ เป็นต้น ไฟล์เหล่านี้มีให้ใช้งานตั้งแต่ Windows 10 และ 11 บางเวอร์ชันเป็นต้นไป

ในทางปฏิบัติ ความสามารถนี้ช่วยให้คุณสร้าง "รูปแบบ" ของแซนด์บ็อกซ์ได้ เช่นการกำหนดค่าหนึ่งที่ปิดใช้งานเครือข่ายเพื่อเปิดมัลแวร์อีกการกำหนดค่าหนึ่งที่ติดตั้งโฟลเดอร์โปรเจ็กต์ในโหมดอ่านอย่างเดียวเพื่อตรวจสอบไฟล์ หรือการกำหนดค่าที่มุ่งเน้นการทดสอบซอฟต์แวร์โดยมีเครื่องมือบางอย่างติดตั้งไว้ล่วงหน้าในอิมเมจพื้นฐาน

วิธีการสอนเอเจนต์ AI ให้ใช้งานแซนด์บ็อกซ์อย่างถูกต้อง

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

เพื่อให้บรรลุเป้าหมายนี้ แพลตฟอร์มหลายแห่งจึงต้องปรับปรุงโครงสร้างพื้นฐานที่อธิบายเครื่องมือต่างๆ ให้กับโมเดลอย่างละเอียดถี่ถ้วน ตัวอย่างเช่น การอัปเดตคำอธิบายเครื่องมือเชลล์เพื่อให้สามารถอธิบายได้อย่างชัดเจน:

  • ระบบแซนด์บ็อกซ์มีข้อจำกัดอะไรบ้าง? (การเข้าถึงระบบไฟล์, Git, เครือข่าย)
  • ตัวแทนจะทำได้อย่างไร ขออัปเกรดใบอนุญาต เมื่อบางสิ่งล้มเหลวเนื่องจากขาดสิทธิ์
  • คำสั่งประเภทใดมีแนวโน้มที่จะถูกบล็อกมากที่สุด?

การเปลี่ยนแปลงเหล่านี้ไม่ได้ผลลัพธ์ที่สมบูรณ์แบบในครั้งแรกเสมอไป โดยปกติแล้วจะต้องมีการทดสอบด้วยตนเองอย่างละเอียดในขั้นตอนการใช้งานจริงวิเคราะห์ว่าความคาดหวังของโมเดลผิดพลาดตรงไหน และปรับข้อความแจ้งเตือนและคำแนะนำต่างๆ โดยการวัดพฤติกรรมทั้งแบบมีและไม่มีแซนด์บ็อกซ์ในการทดสอบภายใน จะสามารถระบุรูปแบบความล้มเหลวได้ เช่น เอเจนต์ที่เรียกใช้คำสั่งเดิมซ้ำๆ ซึ่งแซนด์บ็อกซ์ได้บล็อกไว้แทนที่จะเข้าใจว่าจำเป็นต้องขออนุญาตเพิ่มเติมหรือปรับเปลี่ยนกลยุทธ์ของตน

การปรับปรุงที่เห็นผลได้จริงคือการแสดง เหตุผลเฉพาะที่ทำให้เกิดการบล็อกเนื่องจากแซนด์บ็อกซ์ในผลลัพธ์ของเครื่องมือและอาจแนะนำอย่างชัดเจนให้เอเจนต์ขอสิทธิ์ระดับสูงเมื่อเหมาะสม คำแนะนำเล็กๆ น้อยๆ นี้จะช่วยลดการลองใหม่โดยไม่รู้สาเหตุ และปรับปรุงการกู้คืนจากข้อผิดพลาดที่เกี่ยวข้องกับแซนด์บ็อกซ์ ทั้งในการทดสอบแบบออฟไลน์และการใช้งานจริง

เพื่อให้แน่ใจว่าการใช้แซนด์บ็อกซ์จะไม่ทำให้ประสบการณ์การใช้งานของผู้ใช้แย่ลง บริษัทหลายแห่งจึงเลือกที่จะทยอยเปิดใช้งาน โดยรวบรวมความคิดเห็นทั้งภายในและภายนอกองค์กรก่อนที่จะเปิดใช้งานเป็นค่าเริ่มต้น ข้อมูลมักจะชัดเจน: คำขอจำนวนมาก (เช่น ประมาณหนึ่งในสาม) จะได้รับการดำเนินการภายในแซนด์บ็อกซ์บนแพลตฟอร์มที่เข้ากันได้ โดยมีการลดเวลาที่ใช้ในการขออนุมัติและการตรวจสอบด้วยตนเองอย่างเห็นได้ชัด

แบบจำลองการแยกส่วนและบทเรียนด้านความปลอดภัยในโลกแห่งความเป็นจริง

ในทางปฏิบัติ ไม่มี "แซนด์บ็อกซ์" ที่สมบูรณ์แบบเพียงหนึ่งเดียว มีความแตกต่างที่สำคัญระหว่างคอนเทนเนอร์เคอร์เนลที่ใช้ร่วมกัน แซนด์บ็อกซ์แบบ gVisor ไมโคร VM และ VM แบบเต็มรูปแบบความแตกต่างนี้มีความสำคัญเมื่อเราพูดถึงการอนุญาตให้เอเจนต์เรียกใช้ Docker ติดตั้งแพ็กเกจตามอำเภอใจ หรือแม้แต่เรียกใช้เบราว์เซอร์และเธรดที่ซับซ้อน

เหตุการณ์ด้านความปลอดภัยในอดีตเน้นย้ำถึงความสำคัญของการเลือกอย่างรอบคอบ: ช่องโหว่ต่างๆ เช่นCVE-2019-5736 หรือ CVE-2024-21626ซึ่งอนุญาตให้กระโดดจากคอนเทนเนอร์ไปยังโฮสต์หรือแก้ไขไบนารีของระบบ แสดงให้เห็นว่าเมื่อขีดจำกัดความน่าเชื่อถือของคุณอยู่ที่รันไทม์ของคอนเทนเนอร์บนเคอร์เนลของโฮสต์ ข้อบกพร่องร้ายแรงอาจทำให้ระบบป้องกันทั้งหมดพังทลายลงได้

ปัญหานี้จะยิ่งซับซ้อนมากขึ้นเมื่อใช้กับเอเจนต์การเขียนโค้ด เพราะเอเจนต์เหล่านี้มักจะรันโค้ดการคอมไพล์ที่ไม่น่าเชื่อถือ สร้างอิมเมจ ติดตั้งส่วนประกอบที่ไม่ได้รับการตรวจสอบและโดยทั่วไปแล้วจะจัดการกับข้อมูลเข้าที่หลากหลายมาก นอกจากนี้ แรงกดดันที่จะ "มอบอำนาจให้พวกมันมากขึ้น" ก็มีสูงเช่นกัน หากพวกมันไม่สามารถใช้งานเครื่องมือบางอย่างได้ พวกมันมักจะทำงานไม่สำเร็จ

ดังนั้น การออกแบบแซนด์บ็อกซ์เอเจนต์สมัยใหม่จำนวนมากจึงมักเสริมความแข็งแกร่งของขอบเขตโดยใช้ไมโคร VM หรือ VM ขนาดเล็กแม้ว่าจะต้องแลกมาด้วยความซับซ้อนที่เพิ่มขึ้นเล็กน้อยก็ตาม วิธีนี้ช่วยลดการพึ่งพาเคอร์เนลของโฮสต์โดยตรง และเพิ่มชั้นการแยกตัวเพื่อป้องกันการหลุดออกจากคอนเทนเนอร์ ในสภาพแวดล้อมแบบหลายผู้เช่าหรือการเรียกใช้โค้ดที่ไม่น่าเชื่อถือในขนาดใหญ่ gVisor หรือ Kata Container จะเข้ามาอยู่ตรงกลาง โดยแลกเปลี่ยนความเข้ากันได้กับการแยกตัวที่มากขึ้น

การอนุมัติจากมนุษย์ การอนุมัติทางการเมือง และพื้นที่ทดลอง: จะผสานทุกอย่างเข้าด้วยกันได้อย่างไร

รูปแบบที่เกิดขึ้นซ้ำๆ อย่างหนึ่งคือการขออนุญาตอย่างต่อเนื่องนั้นไม่สามารถขยายขนาดได้อย่างมีประสิทธิภาพในโหมดสาธิต การที่เอเจนต์ขออนุญาตก่อนเข้าถึงไฟล์นั้นไม่มีปัญหา แต่ในสภาพแวดล้อมการใช้งานจริง ที่มีเวิร์กโฟลว์กึ่งอัตโนมัติและการกระทำเล็กๆ น้อยๆ จำนวนมาก รูปแบบ "คลิกตกลงสำหรับทุกอย่าง" กลับกลายเป็นสิ่งที่ใช้การไม่ได้

แนวทางที่รอบคอบกว่านั้นเป็นการผสมผสานหลายชั้นเข้าด้วยกัน:

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

นอกจากนี้ สิ่งสำคัญคือต้องพิจารณาถึงส่วนควบคุมที่คุณมอบให้กับเอเจนต์ผ่านไฟล์การกำหนดค่า ปลั๊กอิน และทักษะของคุณเอง คู่มือจากผู้ให้บริการอย่าง OpenAI เตือนไว้อย่างชัดเจนว่า การเปิดเผยแคตตาล็อกความสามารถแบบเปิด หรืออนุญาตให้ใครก็ตามกำหนดคำสั่งที่มีประสิทธิภาพภายในที่เก็บข้อมูล อาจนำไปสู่การรั่วไหลของข้อมูลหรือการกระทำที่เป็นอันตราย หากผู้โจมตีสามารถแทรกคำสั่งที่เป็นอันตรายลงในไฟล์ README ปัญหา เอกสาร หรือไฟล์ตัวอย่างได้

ในการออกแบบระบบรักษาความปลอดภัยที่ดีนั้น แซนด์บ็อกซ์ไม่ได้ถูกมองว่าเป็นกลเม็ดที่จะแก้ไขปัญหาด้านความปลอดภัยได้ในชั่วข้ามคืน แต่เป็นเพียงขอบเขตอีกชั้นหนึ่งภายในสถาปัตยกรรมที่ประกอบด้วยนโยบาย การตรวจสอบอิสระ การจัดการความลับอย่างรอบคอบ และการตรวจสอบการกำหนดค่าดังนั้น แม้จะสมมติว่าวันหนึ่งเอเจนต์อ่านและปฏิบัติตามคำสั่งที่เป็นอันตราย ระบบก็ได้รับการออกแบบมาเพื่อจำกัดผลกระทบ: ไม่สามารถเข้าถึงคีย์โดยตรง ไม่เปิดเครือข่าย และไม่มีความสามารถในการแก้ไขสคริปต์อย่างลับๆ แล้วนำไปรันบนเครื่องจริงของคุณ

คู่มือแซนด์บ็อกซ์
บทความที่เกี่ยวข้อง:
วิธีใช้สคริปต์ .wsb เพื่อกำหนดค่า Windows Sandbox

โดยสรุปแล้ว การตั้งค่าแซนด์บ็อกซ์แบบแมนนวลที่ดีโดยไม่ต้องพึ่งซอฟต์แวร์เพิ่มเติมนั้น ขึ้นอยู่กับการใช้ประโยชน์จากความสามารถของ macOS, Linux และ Windows ให้ได้มาก ที่สุด ไม่ว่าจะเป็นโปรไฟล์ Seatbelt, Landlock และ seccomp, Windows Sandbox และ WSL2 ควบคู่ไปกับกฎเครือข่ายที่ชัดเจน ข้อมูลรับรอง และการจัดการวงจรชีวิตของสภาพแวดล้อม นอกจากนี้ การมีเจ้าหน้าที่ที่ได้รับการฝึกอบรมซึ่งเข้าใจข้อจำกัดเหล่านี้ นโยบายที่เหมาะสม และระเบียบวินัยเกี่ยวกับการเข้าถึงข้อมูลในพื้นที่ทำงานของคุณ จะช่วยให้คุณทดสอบโค้ด เครื่องมือ และไฟล์ที่มีความเสี่ยงได้อย่างสบายใจมากขึ้น โดยรู้ว่าหากเกิดปัญหาขึ้น ปัญหาจะอยู่ภายในแซนด์บ็อกซ์และจะไม่ส่งผลกระทบต่อระบบหรือข้อมูลสำคัญของคุณ โปรดแบ่งปันข้อมูลนี้เพื่อให้ผู้ใช้รายอื่นได้เรียนรู้เพิ่มเติม


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google