Bảo mật
Aki MCP Server giữ quyền truy cập theo điều kiện của bạn
Vì server có thể đối mặt với Internet công khai, bảo mật được thiết kế sẵn từ gốc, không phải thêm vào sau. Đây là những gì bảo vệ bạn, và cả những đánh đổi bạn phải chịu trách nhiệm.
Whitelist nghiêm ngặt, không phải blocklist
Công cụ shell chỉ chạy lệnh bạn cho phép rõ ràng. Blocklist dễ lọt vì mặc định là cho phép; whitelist thì an toàn khi có sự cố.
- Fail-safe: lệnh lạ hoặc mới bị chặn tự động.
- Bề mặt tối thiểu: chỉ đúng các lệnh bạn duyệt mới chạy được.
- Chi tiết tới subcommand: git chỉ giới hạn ở
status/log/diff/show. - Hạn chế prompt injection: lệnh bị chèn không có câu lệnh ngoài danh sách để leo thang.
- Ưu tiên kiểm tra: các binary nhiều cờ có thể thoát khỏi chế độ chỉ-đọc bị cố tình loại ra, và các dạng ghi của git (
branch -D,tag -d,remote set-url,--output=) bị từ chối mặc định.
Triết lý thiết kế: tiện dụng trước, guardrail sau. Allowlist bảo vệ trước model yếu hoặc quá hăng. Nó không phải ổ khóa chống lại chính bạn, chủ máy.
Xác thực và phân quyền
- Mọi lệnh gọi
/mcpcần Bearer token OAuth 2.1 hợp lệ. Không có kiểu token-in-URL. - Claude dùng Client ID/Secret bí mật cấp sẵn; ChatGPT và Grok tự đăng ký qua DCR (RFC 7591) như public client.
- Chỉ redirect URI của các client đã biết được chấp nhận (
claude.ai,chatgpt.com,grok.comvà proxy OAuth redirect của Google), và client vẫn phải qua màn hình consent bằng passphrase và PKCE trước khi nhận token. - Một access token dùng chung (hiệu lực một năm) phục vụ mọi client, nên panel hiển thị và roll nó ở một chỗ.
Tự chặn dò mật khẩu và nhìn rõ
Gatekeeper giới hạn tần suất thử sai, và mục 7 của panel cho thấy ai đang giữ quyền truy cập và ai đã dùng.
- 5 lần sai, bị chặn 15 phút: 5 thông tin xác thực bị từ chối trong 60 giây (sai passphrase, sai client secret, Bearer không hợp lệ ở
/mcp) sẽ chặn người gọi 15 phút, trả429kèmRetry-After. - Chặn tràn đăng ký: 100 lần
POST /registertrong 10 phút cũng bị chặn, và danh sách client ngừng tăng ở mức 500. - Client thật an toàn: Bearer token hợp lệ không bao giờ bị tính hay từ chối, lỗi giao thức hoặc đường dẫn lạ cũng không bị tính.
- Bạn tự chỉnh: mọi ngưỡng đều chỉnh được ở mục 7 của panel, nơi liệt kê người gọi bị chặn kèm nút Release.
- Thấy tất cả: bảng Clients (lần đầu thấy, lần duyệt gần nhất, lần cấp token gần nhất, địa chỉ và agent), Active now, và 200 dòng mới nhất của
security.log. - Bí mật được che: passphrase và access token hiện dạng dấu chấm kèm nút con mắt, ảnh chụp màn hình không lộ gì.
Nếu lộ bí mật
Panel biến việc dọn dẹp thành vài cú bấm. Chọn dòng khớp với thứ bị lộ.
- Passphrase bị nhìn thấy:
Roll passphrase, rồiRoll & sign out all clients. - Access token bị nhìn thấy:
Roll & sign out all clients. - Có client lạ trong danh sách: cả hai lần roll, rồi kết nối lại các AI bạn tin.
- Connector không còn dùng:
Remove, rồiRoll token.
Mỗi tầng bảo vệ điều gì
Một gatekeeper, bearer cả trên loopback
Gatekeeper trên 127.0.0.1:9999 là lối vào duy nhất cho cả client local và (qua ingress tùy chọn) client từ xa; mọi tool chạy in-process phía sau, và Bearer token bắt buộc ngay cả trên loopback.
Panel chỉ ở local
Control panel bind vào 127.0.0.1:9998, cần token mỗi lần chạy, và không bao giờ được đẩy ra edge công khai.
Fetch chống SSRF
Bộ fetch LAN chặn cloud metadata, IP link-local, scheme không phải HTTP, kèm giới hạn dung lượng và thời gian.
Bí mật ở chế độ 0600
Passphrase, client secret và token nằm trong ~/.aki/mcpsv/ ở mode 0600, ngoài repo, không bao giờ vào git.
Mặc định AI làm được và không làm được gì
Mặc định được phép
Chạy bộ shell ưu tiên kiểm tra, đọc và tìm file trong thư mục được phép, và mọi hành động đều là tool call hiện rõ. Một số helper dev duyệt sẵn (npm run, open, sips, ffmpeg) có thể ghi.
Mặc định không thể
Chạy lệnh ngoài allowlist, chạy các dạng ghi của git, ghi vào thư mục script tin cậy qua công cụ file, chạm tới panel local, hay gọi mạng ra ngoài tùy ý.
Đánh đổi thật lòng bạn phải biết
- Gốc file mặc định là toàn bộ thư mục home (
$HOME) cộng~/.akivà~/.claude. Hãy thu hẹp trong panel trên máy nhạy cảm. ~/.claudeđược cấp ở mức thư mục, nên token phiên và lịch sử chat bên trong cũng nằm trong tầm với. Gỡ bằng cách sửa trực tiếp danh sách thư mục.- Bất kỳ lệnh ghi nào bạn thêm vào allowlist (ví dụ
git commit) là trách nhiệm của bạn và làm rộng bề mặt. - Với một token dùng chung, Remove đăng xuất client nhưng chưa phải thu hồi tức thì. Roll token để cắt quyền ngay.
- Bộ giới hạn tần suất nằm trong bộ nhớ, nên khởi động lại sẽ xóa danh sách bị chặn. Tên client do client tự khai, nên hãy tin cột địa chỉ và thời gian hơn nhãn tên.
- Gemini đang thử nghiệm: kết nối OAuth chạy được nhưng dùng tool chưa ổn định.
Thu hồi truy cập bất cứ lúc nào từ mục 7 của panel: Remove client, rồi Roll token. Nếu nghi lộ bí mật, dùng Roll & sign out all clients.