ความปลอดภัย

ภาพรวม

Neotask ออกแบบมาด้วยสถาปัตยกรรมที่ให้ความสำคัญกับความปลอดภัยเป็นอันดับแรก Gateway bind กับ localhost โดยค่าเริ่มต้น ข้อมูลที่ละเอียดอ่อนทั้งหมดถูกเข้ารหัสในขณะพัก และการรันคำสั่งของเอเจนต์สามารถแซนด์บ็อกซ์ใน container แบบแยกตัว

ความปลอดภัยเครือข่าย

Loopback โดยค่าเริ่มต้น

Gateway รับฟังเฉพาะบน 127.0.0.1 (localhost) เว้นแต่คุณจะเปลี่ยนโหมด binding อย่างชัดแจ้ง ไม่มีการเปิดเผยเครือข่ายภายนอกโดยค่าเริ่มต้น

การตรวจสอบสิทธิ์

การเชื่อมต่อ WebSocket ทั้งหมดต้องการการตรวจสอบสิทธิ์:

ความปลอดภัยการเข้าถึงระยะไกล

สำหรับการเข้าถึงระยะไกล แนวทางที่แนะนำคือ Tailscale VPN หรือ SSH tunneling, ไม่ควรเปิดเผย Gateway โดยตรงต่ออินเทอร์เน็ต

การจับคู่อุปกรณ์

วิธีการจับคู่ทำงาน

client ทุกตัวที่เชื่อมต่อกับ Gateway ต้องถูกจับคู่:

  1. อุปกรณ์แสดง identity (fingerprint + public key)
  2. Gateway ออก pairing challenge (nonce)
  3. อุปกรณ์ลงนาม nonce ด้วย private key
  4. คุณอนุมัติอุปกรณ์ผ่าน UI
  5. Gateway ออก device token สำหรับการเชื่อมต่อในอนาคต

โมเดลความเชื่อถือ

การเข้ารหัส

ข้อมูลในขณะพัก

ข้อมูลในขณะส่ง

Sandboxing

การแยกตัวบน Docker

การรันคำสั่งเอเจนต์สามารถ sandbox ใน Docker container:

ขอบเขต Sandbox

| ขอบเขต | คำอธิบาย | |, ----|, --, --, |
| Per-session | Container ใหม่สำหรับแต่ละเซสชัน | | Per-agent | Container ถาวรต่อเอเจนต์ | | Shared | Container ที่ใช้ร่วมกันข้ามเอเจนต์ |

การเข้าถึง Workspace

เอเจนต์ที่ sandbox สามารถเข้าถึงไดเรกทอรี workspace ของตน (mount เข้า container) แต่ไม่สามารถเข้าถึง host filesystem นอก workspace ของตน

การอนุมัติ Exec

ควบคุมคำสั่งที่เอเจนต์สามารถรันบน node และ Gateway host:

โหมด

| โหมด | คำอธิบาย | |, ---|, --, --, |
| Allowlist | เฉพาะคำสั่งที่อนุมัติล่วงหน้าเท่านั้นที่รัน | | Ask | คำสั่งที่ไม่รู้จักจะแจ้งให้ผู้ใช้อนุมัติ | | Full | ไม่มีข้อจำกัด (ใช้ด้วยความระมัดระวัง) |

การกำหนดค่าต่อ Node

แต่ละ node (macOS, headless host) มีการกำหนดค่าการอนุมัติ exec ของตัวเอง จัดเก็บในเครื่อง คุณสามารถอนุญาต binary เฉพาะ (เช่น /usr/bin/docker, /usr/local/bin/terraform) ในขณะที่บล็อกทุกอย่างอื่น

โหมดยกระดับ

บางการดำเนินการต้องการการรันบน Gateway host โดยตรง (ไม่ใช่ใน sandbox) โหมดยกระดับคือ:

Security Audit

Security audit ในตัวตรวจสอบ:

Audit สามารถแก้ไขปัญหาหลาย ๆ อย่างโดยอัตโนมัติเมื่อได้รับอนุญาต

แนวทางปฏิบัติที่ดีที่สุด

  1. รักษา Gateway บน loopback, ใช้ Tailscale หรือ SSH สำหรับการเข้าถึงระยะไกล
  2. เปิดใช้งาน sandboxing, รันคำสั่งเอเจนต์ใน Docker container
  3. ใช้ exec allowlist, จำกัดคำสั่งที่เอเจนต์สามารถรันบน node
  4. ตั้งค่า auth token, กำหนดค่า token auth เสมอ แม้สำหรับ loopback
  5. ตรวจสอบสิทธิ์เอเจนต์, ใช้ tool profile ขั้นต่ำที่เป็นไปได้
  6. อัปเดต Neotask, การอัปเดตรวมถึง security patch
  7. ตรวจสอบเป็นประจำ, รัน security audit เพื่อค้นหาการกำหนดค่าที่ผิดพลาด
  8. จำกัดการโหลด plugin, ติดตั้งเฉพาะ plugin จากแหล่งที่เชื่อถือได้