VPS

Permissions: cho agent quyền tới đâu là vừa

Thanh Nguyễn Đăng 9 phút đọc 3 khối lệnh

Permissions: cho agent quyền tới đâu là vừa
Mục lục bài viết
  1. Ba trạng thái của một thao tác
  2. Ba mức quyền cho ba hoàn cảnh
  3. Những thứ không bao giờ nên mở
  4. Cách mở quyền dần cho đúng
  5. Khi agent chạy trên máy chủ
  6. Bảng mức quyền theo loại dự án
  7. Hai quyền không bao giờ nên cấp
  8. Bắt đầu chặt rồi nới dần theo từng việc
  9. Khi chạy trên máy chủ
  10. Câu hỏi thường gặp
  11. Bài viết liên quan

Trả lời nhanh: Cấp quyền cho agent là bài toán đánh đổi giữa bị hỏi liên tục và để nó tự làm những việc không nên. Cách giải thực dụng: liệt kê cụ thể nhóm lệnh bạn dùng hằng ngày vào danh sách cho phép, chặn thẳng những lệnh phá hoại trong danh sách cấm, và để mọi thứ còn lại rơi vào chế độ hỏi. Đừng bao giờ mở toang cho tiện, vì như vậy bạn mất lớp bảo vệ mà chỉ đổi lấy vài lần bấm.

Ai dùng agent trong dự án thật cũng đi qua hai giai đoạn: đầu tiên là bực vì bị hỏi từng lệnh, sau đó là hoảng vì nó vừa làm một việc mình không ngờ tới. Bài này nói cách tìm điểm cân bằng, và chỉ ra ba mức quyền dùng cho ba hoàn cảnh khác nhau.

Ba trạng thái của một thao tác

Mỗi loại thao tác rơi vào một trong ba trạng thái:

  • Cho phép: agent làm ngay, không hỏi. Dành cho việc an toàn và lặp lại nhiều, ví dụ chạy kiểm thử hay xem trạng thái Git.
  • Hỏi trước: mặc định cho mọi thứ chưa được liệt kê. Bạn xem rồi quyết từng lần.
  • Cấm: agent không làm được kể cả khi bạn lỡ tay đồng ý.

Nguyên tắc thiết kế: danh sách cho phép nên cụ thể, danh sách cấm nên nhắm đúng thứ hủy hoại, và phần lớn thao tác cứ để rơi vào chế độ hỏi. Chế độ hỏi không phải kẻ thù, nó chỉ khó chịu khi bạn để những việc hằng ngày rơi vào đó.

Ba mức quyền cho ba hoàn cảnh

Mức học việc. Bạn mới dùng, hoặc mới nhận một repo lạ. Cho phép rất ít, gần như mọi thứ đều hỏi. Chậm nhưng bạn học được agent hay định làm gì, và đó là kiến thức đáng có ở tuần đầu.

TerminalBa mức quyền cho ba hoàn cảnhbash
"allow": ["Bash(git status)", "Bash(git diff:*)", "Bash(ls:*)"]

Mức làm hằng ngày. Cho phép trọn bộ lệnh của vòng lặp phát triển: chạy kiểm thử, kiểm tra định dạng, cài gói, xem log. Cấm những lệnh động tới lịch sử Git và tới hệ thống.

TerminalBa mức quyền cho ba hoàn cảnhbash
"allow": ["Bash(npm run:*)", "Bash(npm ci)", "Bash(git add:*)", "Bash(git commit:*)"],"deny":  ["Bash(git push:*)", "Bash(rm -rf:*)", "Bash(sudo:*)"]

Mức chạy tự động. Khi agent chạy trên máy chủ mà không có bạn ngồi cạnh, danh sách cho phép phải đủ rộng để nó đi hết luồng việc, nhưng danh sách cấm phải chặt hơn hẳn. Kèm theo là hook ghi nhật ký để sáng hôm sau bạn xem lại được nó đã làm gì.

Những thứ không bao giờ nên mở

Danh sách này ngắn nhưng nên coi là cứng:

  • Lệnh xóa đệ quy ở bất kỳ dạng nào.
  • Đẩy code lên nhánh chính, đặc biệt là đẩy ghi đè lịch sử.
  • Lệnh chạy với quyền quản trị hệ thống. Nếu việc cần quyền đó, bạn nên tự chạy.
  • Thao tác trực tiếp lên database đang phục vụ khách. Cho agent quyền chỉ đọc trên bản sao là đủ cho gần hết nhu cầu phân tích.
  • Gửi dữ liệu ra ngoài, ví dụ gọi API bên thứ ba chưa được duyệt.

Với những thứ tuyệt đối không được xảy ra, hãy chặn ở cả hai tầng: liệt kê trong danh sách cấm và thêm một hook kiểm tra nội dung lệnh, theo bài về hooks. Danh sách cấm bắt theo mẫu, còn hook bắt theo nội dung thật, hai lớp bổ sung nhau.

Cách mở quyền dần cho đúng

Đừng ngồi soạn danh sách hoàn hảo ngay từ đầu. Cách thực dụng hơn:

  1. Bắt đầu chặt. Chỉ cho phép vài lệnh đọc.
  2. Mỗi lần bị hỏi một lệnh quen thuộc, thêm nó vào danh sách. Sau một tuần bạn sẽ có đúng bộ lệnh mình thật sự dùng.
  3. Rà lại hằng quý, xóa những lệnh không còn dùng.

Cách này cho bạn danh sách vừa vặn với công việc thật thay vì một danh sách chép từ bài hướng dẫn nào đó. Nó cũng giúp bạn nhận ra mình đang cho phép những gì, thay vì mở toang rồi quên mất.

Với đội nhóm, đặt danh sách này trong repo để mọi người cùng một mức bảo vệ, theo cách phân tầng trong bài về cấu hình.

Khi agent chạy trên máy chủ

Đây là hoàn cảnh cần nghĩ kỹ nhất, vì không có ai bấm đồng ý và cũng không có ai phát hiện ngay khi có chuyện.

Bốn việc nên làm cùng lúc:

  • Cho agent chạy trong bản sao của repo trên nhánh riêng, không phải thư mục làm việc chính.
  • Tài khoản hệ thống riêng, quyền tối thiểu. Không dùng tài khoản quản trị.
  • Ghi nhật ký mọi thao tác thay đổi bằng hook, để sáng hôm sau xem lại.
  • Sao lưu định kỳ làm lớp cuối cùng, theo bài về chu kỳ sao lưu.

Cách dựng môi trường chạy tự động nằm ở bài chạy Claude Code trên VPS. Một câu tổng kết đáng nhớ: quyền bạn cấp nên vừa đủ cho việc bạn giao, không hơn, và điều đó đúng với agent y như với người mới vào công ty.

Bảng mức quyền theo loại dự án

Hoàn cảnhMức quyềnVì sao
Dự án cá nhân, mã nguồn không quan trọngRộng, ít hỏiTốc độ quan trọng hơn
Dự án của công ty, mã nguồn quan trọngHỏi trước khi chạy lệnh và trước khi sửa ngoài phạm viCân bằng hợp lý nhất
Máy chủ có dữ liệu thật, hoặc dự án của kháchChặt: chỉ đọc, mọi thao tác ghi đều hỏiRủi ro cao hơn giá trị tốc độ
Chạy tự động không có người trựcChỉ cho chạy đúng tập lệnh khai báo trướcKhông có ai bấm đồng ý

Hai quyền không bao giờ nên cấp

  • Chạy lệnh tùy ý với quyền quản trị. Không có lý do chính đáng nào cho việc này trên máy làm việc.
  • Kết nối và chạy lệnh trên máy chủ đang phục vụ khách. Thử nghiệm phải ở môi trường thử.
  • Ghi vào cơ sở dữ liệu thật. Cho đọc thì được, và nên dùng tài khoản chỉ đọc.
  • Tải tệp từ internet rồi chạy thẳng. Đây là đường vào của mã độc.
  • Đẩy thẳng lên nhánh chính hoặc ép ghi đè lịch sử. Mọi thay đổi phải qua nhánh riêng và có người đọc.

Bắt đầu chặt rồi nới dần theo từng việc

TerminalBắt đầu chặt rồi nới dần theo từng việcbash
# Bat dau chat, noi long dan theo tung viec cu the.# Dung bat dau rong roi siet lai, vi ban se khong siet. # Buoc 1: chi cho doc va tim kiem# Buoc 2: cho sua file trong thu muc du an# Buoc 3: cho chay cac lenh cu the hay dung, liet ke tung lenh mot#         vi du: lenh chay kiem thu, lenh dinh dang ma nguon# Buoc 4: van HOI voi moi lenh khong nam trong danh sach # Ghi nhat ky moi lenh da chay, giu it nhat 30 ngay# Doc lai nhat ky sau mot tuan: co lenh nao bat ngo khong

Khi chạy trên máy chủ

Lớp bảo vệ mạnh nhất không phải cấu hình quyền của công cụ, mà là phân quyền của hệ thống: chạy trợ lý bằng một tài khoản không có quyền quản trị, không có khóa vào máy chủ thật, và chỉ thấy được thư mục dự án. Khi đó ngay cả khi hai lớp trên hỏng, thiệt hại vẫn giới hạn. Xem bài về điểm móc chặn lệnh.

Câu hỏi thường gặp

Nên cho phép agent chạy lệnh hệ thống không?

Nên, nhưng liệt kê cụ thể nhóm lệnh chứ đừng mở toang. Cho phép chạy kiểm thử và cài gói là hợp lý; cho phép mọi lệnh nghĩa là bạn không còn lớp bảo vệ nào ngoài sự cẩn thận của mô hình.

Bị hỏi quá nhiều thì làm sao?

Ghi lại những lệnh bạn phải đồng ý lặp đi lặp lại rồi thêm chúng vào danh sách cho phép. Sau vài ngày làm vậy, số lần bị hỏi giảm hẳn mà bạn vẫn giữ được lớp kiểm soát cho những việc lạ.

Quyền và hook khác nhau thế nào?

Quyền quyết định loại thao tác nào được dùng, hook xem xét nội dung thật của từng thao tác rồi quyết cho qua hay chặn. Dùng cả hai thì chặt: quyền cắt bề mặt, hook lọc phần còn lại theo ngữ cảnh dự án.

Chạy agent trên máy chủ có cần quyền rộng hơn không?

Có, vì không ai bấm đồng ý. Bù lại phải chặt phần cấm, cho chạy dưới tài khoản riêng ít quyền, làm việc trên nhánh riêng và ghi nhật ký mọi thay đổi.

Chia sẻ:Facebook

Thanh Nguyễn

TND

Tư vấn bản quyền, VPS và máy chủ kèm hóa đơn VAT, hợp đồng đầy đủ cho doanh nghiệp.