บทช่วยสอน 29: เจาะลึกความปลอดภัย
Tutorial 29: Security Deep Dive — easy-to-understand guide based on official docs
บทช่วยสอน 29: เจาะลึกความปลอดภัย
ยินดีต้อนรับกลับมา ผู้จัดการเอเจนต์ทั้งหลาย! วันนี้เราจะสวมหมวกนิรภัยและดำดิ่งลงไปในโมเดลความปลอดภัยของ Hermes Agent อย่างจริงจัง หากคุณเคยสงสัยว่าเบื้องหลังมีอะไรเกิดขึ้นเพื่อรักษาความปลอดภัยให้กับเซสชันของคุณ บทช่วยสอนนี้เหมาะสำหรับคุณ
ภาพรวมใหญ่: การป้องกันแปดชั้น
Hermes ไม่ได้พึ่งพากุญแจล็อกเพียงอันเดียวที่ประตู แต่ใช้แนวทาง การป้องกันแบบหลายชั้น (defense-in-depth) ด้วยชั้นความปลอดภัยที่แตกต่างกันแปดชั้น ลองนึกภาพเหมือนปราสาท: ต่อให้ใครบางคนผ่านคูน้ำไปได้ พวกเขายังต้องเผชิญกับกำแพง ประตู และทหารยามที่อยู่ด้านใน
นี่คือรายการทั้งหมด:
- การอนุญาตผู้ใช้ — ใครบ้างที่สามารถพูดคุยกับเอเจนต์ได้
- การอนุมัติคำสั่งอันตราย — มนุษย์ตรวจสอบการกระทำที่ทำลายล้าง
- ความปลอดภัยในการเขียนไฟล์ — รายการบล็อกและแซนด์บ็อกซ์สำหรับการดำเนินการกับไฟล์
- การแยกคอนเทนเนอร์ — แซนด์บ็อกซ์ Docker/Singularity/Modal
- การกรองข้อมูลรับรอง MCP — เก็บความลับให้ห่างจากซับโพรเซส
- การสแกนไฟล์บริบท — ตรวจจับการฉีดพรอมป์ต์ในไฟล์โปรเจกต์
- การแยกข้ามเซสชัน — เซสชันไม่สามารถมองเห็นข้อมูลของกันและกันได้
- การทำความสะอาดอินพุต — ปิดกั้นการฉีดเชลล์ผ่านพารามิเตอร์ไดเรกทอรีทำงาน
แต่ละชั้นมีความสำคัญ แต่วันนี้เราจะโฟกัสที่ชั้นที่คุณจะโต้ตอบด้วยมากที่สุด: การอนุมัติคำสั่งอันตราย
การอนุมัติคำสั่งอันตรายทำงานอย่างไร
ก่อนที่ Hermes จะรันคำสั่งใดๆ มันจะตรวจสอบกับรายการรูปแบบอันตรายที่คัดสรรมา หากมีการตรงกัน คุณจะเป็นคนตัดสินใจว่าจะเกิดอะไรขึ้นต่อไป
คุณควบคุมพฤติกรรมนี้ผ่านส่วน approvals ใน ~/.hermes/config.yaml:
approvals:
mode: smart # smart | manual | off
timeout: 300 # seconds to wait for user response
cron_mode: deny # deny | approve
single_query_mode: deny # deny | approve
mcp_reload_confirm: true # confirm before reloading MCP tools
destructive_slash_confirm: true # confirm before /clear, /new, etc.
โหมดการอนุมัติสามแบบ
คีย์ mode ให้ตัวเลือกสามแบบแก่คุณ:
| โหมด | พฤติกรรม |
|---|---|
| smart (ค่าเริ่มต้น) | ใช้ LLM เสริมในการประเมินความเสี่ยง คำสั่งความเสี่ยงต่ำ (เช่น python -c "print('hello')") จะได้รับการอนุมัติอัตโนมัติ คำสั่งที่อันตรายจริงๆ จะถูกปฏิเสธอัตโนมัติ กรณีที่ไม่แน่ใจจะถูกส่งต่อไปยังพรอมป์ต์แบบแมนนวล |
| manual | จะถามคุณเสมอสำหรับการอนุมัติคำสั่งอันตราย ไม่มีข้อยกเว้น |
| off | ปิดการตรวจสอบการอนุมัติทั้งหมด เทียบเท่ากับการรันด้วย --yolo |
⚠️ คำเตือน: การตั้งค่า
approvals.mode: offจะปิดพรอมป์ต์ความปลอดภัยทั้งหมด ควรทำในสภาพแวดล้อมที่เชื่อถือได้เท่านั้น เช่น ไพพ์ไลน์ CI/CD หรือคอนเทนเนอร์แบบใช้แล้วทิ้ง
โหมด YOLO: ปุ่มแดงใหญ่
โหมด YOLO ข้าม ทั้งหมด พรอมป์ต์การอนุมัติคำสั่งอันตรายสำหรับเซสชันปัจจุบัน คุณสามารถเปิดใช้งานได้สามวิธี:
- แฟล็ก CLI:
hermes --yoloหรือhermes chat --yolo - คำสั่งสแลช: พิมพ์
/yoloระหว่างเซสชัน - ตัวแปรสภาพแวดล้อม: ตั้งค่า
HERMES_YOLO_MODE=1
คำสั่ง /yolo เป็น สวิตช์สลับ — แต่ละครั้งที่ใช้จะเปิดหรือปิด:
> /yolo
⚡ โหมด YOLO เปิด — คำสั่งทั้งหมดได้รับการอนุมัติอัตโนมัติ ใช้ด้วยความระมัดระวัง
> /yolo
⚠ โหมด YOLO ปิด — คำสั่งอันตรายจะต้องได้รับการอนุมัติ
เมื่อ YOLO ทำงาน Hermes จะทำให้แน่ใจว่าคุณไม่ลืมมัน คุณจะเห็นแบนเนอร์สีแดงเมื่อเริ่มเซสชันและส่วน ⚠ YOLO ในแถบสถานะ ซึ่งอัปเดตแบบเรียลไทม์เมื่อคุณสลับ
⚠️ อันตราย: โหมด YOLO ปิดการตรวจสอบความปลอดภัยคำสั่งอันตราย ทั้งหมด — ยกเว้น รายการบล็อกแบบฮาร์ดไลน์ ใช้เฉพาะเมื่อคุณไว้วางใจคำสั่งที่ถูกสร้างขึ้นอย่างเต็มที่ (เช่น สคริปต์อัตโนมัติที่ทดสอบอย่างดีในสภาพแวดล้อมแบบใช้แล้วทิ้ง)
ใหม่ในเวอร์ชันนี้: คีย์คอนฟิกที่ชาญฉลาดขึ้น
คีย์คอนฟิกใหม่สองตัวสมควรได้รับความสนใจเป็นพิเศษ:
mcp_reload_confirm (ค่าเริ่มต้น: true) — เมื่อเป็น true คำสั่ง /reload-mcp จะถามก่อนสร้างชุดเครื่องมือ MCP ใหม่ ทำไม? เพราะการสร้างใหม่จะทำให้แคชพรอมป์ต์ของผู้ให้บริการไม่ถูกต้อง หมายความว่าข้อความถัดไปจะส่งโทเค็นอินพุตเต็มรูปแบบอีกครั้ง นั่นคือค่าใช้จ่ายที่คุณอาจต้องการอนุมัติก่อน
destructive_slash_confirm (ค่าเริ่มต้น: true) — เมื่อเป็น true คำสั่งเซสชันที่ทำลายล้าง (/clear, /new, /reset, /undo) จะถามก่อนทิ้งสถานะการสนทนา คุณจะได้รับไดอะล็อกสามตัวเลือก: อนุมัติครั้งเดียว / อนุมัติเสมอ / ยกเลิก บน Telegram, Discord และ Slack จะใช้ปุ่มใช่/ไม่ใช่แบบเนทีฟ ในที่อื่นจะใช้ข้อความแทน
TUI ยังให้เกียรติการตั้งค่านี้สำหรับโมดอล /clear, /new และ /reset และหากคุณกำลังทำระบบอัตโนมัติ HERMES_TUI_NO_CONFIRM=1 จะข้ามโมดอลนั้นทั้งหมด
เซสชันแบบไม่มีหัว: Cron และ Single-Query
จะเกิดอะไรขึ้นเมื่องาน cron หรือเซสชัน hermes chat -q แบบครั้งเดียวเจอคำสั่งอันตราย? ไม่มีมนุษย์คอยตอบพรอมป์ต์
นั่นคือจุดที่ cron_mode และ single_query_mode เข้ามามีบทบาท:
deny(ค่าเริ่มต้น) — บล็อกคำสั่ง เอเจนต์ต้องหาทางอื่นapprove— อนุมัติอัตโนมัติทุกอย่างในบริบทนั้น
ทั้งคู่มีค่าเริ่มต้นเป็น deny ด้วยเหตุผลที่ดี: ปลอดภัยไว้ก่อนดีกว่าเสียใจเมื่อไม่มีใครเฝ้าดู
สรุป
โมเดลความปลอดภัยของ Hermes Agent คือการให้คุณควบคุมโดยไม่ขวางทางคุณ โหมดการอนุมัติอัจฉริยะจัดการเรื่องน่าเบื่อโดยอัตโนมัติ ในขณะที่โหมดแมนนวลให้คุณควบคุมได้เต็มที่เมื่อต้องการ และหากคุณอยู่ในสภาพแวดล้อมที่เชื่อถือได้ โหมด YOLO ช่วยให้คุณทำงานได้อย่างรวดเร็ว
เพียงจำไว้ว่า: พลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบอันยิ่งใหญ่ ใช้ YOLO อย่างชาญฉลาด!
ครั้งหน้า เราจะสำรวจวิธีปรับแต่งระบบการอนุมัติให้เข้ากับเวิร์กโฟลว์เฉพาะของคุณ จนกว่าจะถึงตอนนั้น รักษาความปลอดภัยไว้เสมอ!
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/security