Security - Neotask by Neotask Documentation | Neotask

ความปลอดภัย

ภาพรวม

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

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

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

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

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

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

  • Token auth — Bearer token (UUID หรือ string กำหนดเอง)
  • Password auth — รหัสผ่านที่ hash ด้วย bcrypt
  • Trusted proxy — Header ที่ตรวจสอบสิทธิ์ล่วงหน้าจาก reverse proxy
  • Local trust — การเชื่อมต่อ loopback ได้รับความเชื่อถือโดยปริยาย
  • ความปลอดภัยการเข้าถึงระยะไกล

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

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

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

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

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

  • อุปกรณ์ local (loopback) ได้รับการอนุมัติอัตโนมัติเพื่อความสะดวก
  • อุปกรณ์ที่ไม่ใช่ local ต้องการการอนุมัติอย่างชัดแจ้ง
  • Device token ถูกจัดเก็บในเครื่องและนำกลับมาใช้เมื่อเชื่อมต่อซ้ำ
  • อุปกรณ์สามารถถูกเพิกถอนได้ทุกเวลา
  • การเข้ารหัส

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

  • AES-256-GCM — Token ความลับ และ API key ทั้งหมดถูกเข้ารหัสในขณะพัก
  • คีย์ที่ได้จากเครื่อง — คีย์การเข้ารหัสได้จาก scrypt จาก device identity
  • ไม่มีการจัดเก็บข้อความธรรมดา — Token ไม่เคยถูกจัดเก็บในข้อความธรรมดา
  • ข้อมูลในขณะส่ง

  • TLS — HTTPS สำหรับการสื่อสาร API
  • WSS — WebSocket Secure สำหรับการเชื่อมต่อ Gateway (เมื่อใช้ Tailscale Serve หรือ reverse proxy)
  • การลงนาม HMAC — ความสมบูรณ์ของคำขอด้วย nonce และ timestamp
  • Sandboxing

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

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

  • Profile ต่อเอเจนต์ — เอเจนต์แต่ละตัวสามารถมีการกำหนดค่า sandbox ของตัวเอง
  • ขีดจำกัดทรัพยากร — ขีดจำกัด CPU หน่วยความจำ และ timeout ที่กำหนดค่าได้
  • การแยกตัวเครือข่าย — Container สามารถแยกตัวเครือข่าย
  • การจำกัด Filesystem — เอเจนต์เข้าถึงเฉพาะ workspace ของมัน
  • Image กำหนดเอง — ใช้ image สำเร็จรูปพร้อมเครื่องมือเฉพาะที่ติดตั้ง
  • ขอบเขต 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) โหมดยกระดับคือ:

  • จำกัดด้วยการอนุญาตอย่างชัดแจ้งใน agent config
  • มีเฉพาะบน Gateway host
  • ปิดใช้งานโดยค่าเริ่มต้น
  • ตรวจสอบได้ผ่านการบันทึก
  • Security Audit

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

  • สิทธิ์ไฟล์ configuration (ควรเป็น 600)
  • สิทธิ์ไฟล์เซสชัน
  • เวอร์ชัน Node.js (security patch)
  • การตรวจจับความลับข้อความธรรมดา
  • การตรวจสอบ plugin allowlist
  • การตรวจสอบ network interface ที่เปิดอยู่
  • ความสมบูรณ์ของการกำหนดค่า auth
  • Audit สามารถแก้ไขปัญหาหลาย ๆ อย่างโดยอัตโนมัติเมื่อได้รับอนุญาต

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

  • รักษา Gateway บน loopback — ใช้ Tailscale หรือ SSH สำหรับการเข้าถึงระยะไกล
  • เปิดใช้งาน sandboxing — รันคำสั่งเอเจนต์ใน Docker container
  • ใช้ exec allowlist — จำกัดคำสั่งที่เอเจนต์สามารถรันบน node
  • ตั้งค่า auth token — กำหนดค่า token auth เสมอ แม้สำหรับ loopback
  • ตรวจสอบสิทธิ์เอเจนต์ — ใช้ tool profile ขั้นต่ำที่เป็นไปได้
  • อัปเดต Open Claw — การอัปเดตรวมถึง security patch
  • ตรวจสอบเป็นประจำ — รัน security audit เพื่อค้นหาการกำหนดค่าที่ผิดพลาด
  • จำกัดการโหลด plugin — ติดตั้งเฉพาะ plugin จากแหล่งที่เชื่อถือได้
  • View full documentation