Trả lời nhanh: Cách ly agent nghĩa là giới hạn nó trong một vùng riêng để dù có làm gì sai cũng không chạm tới phần còn lại của máy. Ba mức từ nhẹ tới chặt: giới hạn bằng quyền và hook, chạy trong container, và chạy trên một máy riêng. Mức nào là đủ phụ thuộc vào việc bạn giao: sửa code trong một dự án thì mức một là đủ, còn để agent chạy tự động qua đêm thì nên mức ba.
Nỗi lo lớn nhất khi giao quyền cho agent không phải nó viết code dở, mà là nó chạy một lệnh chạm tới thứ ngoài phạm vi. Cách ly là câu trả lời có tính cấu trúc cho nỗi lo đó: thay vì tin rằng nó sẽ không làm, bạn đảm bảo rằng nó không làm được.
Mức một: quyền và hàng rào
Mức nhẹ nhất và cũng đủ cho phần lớn công việc hằng ngày. Bạn không cách ly về mặt hệ thống, mà giới hạn những gì agent làm được:
- Danh sách quyền chỉ cho phép nhóm lệnh cần thiết, theo bài về quyền.
- Hook chặn những lệnh nguy hiểm dựa trên nội dung thật, theo bài về hooks.
- Làm việc trên nhánh Git riêng, để mọi thay đổi đều xem lại và quay lui được.
Ưu điểm là không mất gì về tiện lợi. Nhược điểm là nó dựa vào việc bạn nghĩ ra trước những gì cần chặn. Với việc bạn ngồi cạnh và duyệt từng bước thì mức này hợp lý.
Mức hai: chạy trong container
Điểm cân bằng hợp lý cho phần lớn trường hợp. Agent chạy trong một container chỉ thấy đúng thư mục dự án, không thấy phần còn lại của máy.
services: agent: image: node:22 working_dir: /du-an volumes: - ./:/du-an # chi thu muc du an duoc gan vao environment: - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} mem_limit: 4g cpus: 2 network_mode: bridgeBốn thứ bạn được từ cấu hình này: agent không thấy file ngoài thư mục dự án; giới hạn bộ nhớ và CPU nên nó không làm treo máy; mạng tách riêng nên bạn kiểm soát được nó gọi ra đâu; và xóa container là sạch, không để lại gì.
Lưu ý thực dụng: đừng gắn cả thư mục nhà vào container. Nhiều người làm vậy cho tiện rồi mất luôn ý nghĩa của việc cách ly, vì khi đó agent thấy cả khóa SSH và mọi dự án khác. Cách dựng container nằm ở bài Docker Compose.
Mức ba: máy riêng
Dành cho agent chạy tự động, không có ai ngồi cạnh duyệt từng bước. Khi đó cách ly ở tầng máy là hợp lý nhất:
- Một VPS riêng, chỉ chứa những gì agent cần.
- Tài khoản hệ thống riêng với quyền tối thiểu, không phải tài khoản quản trị.
- Bản sao của repo, làm việc trên nhánh riêng và đẩy lên để bạn xem lại.
- Không có khóa truy cập tới hệ thống thật, chỉ có những gì cần cho công việc được giao.
Điểm cuối là quan trọng nhất và cũng hay bị bỏ: nếu máy đó có khóa SSH vào máy chủ sản xuất thì bạn chưa cách ly gì cả, chỉ đổi chỗ ngồi. Cách dựng nằm ở bài chạy Claude Code trên VPS.
Chọn mức nào cho việc nào
Bảng quyết định thực dụng:
- Sửa code trong một dự án, bạn ngồi cạnh: mức một là đủ.
- Chạy code lạ, ví dụ thử một thư viện mới hoặc chạy pull request của người ngoài: mức hai, vì bạn không biết code đó làm gì.
- Agent chạy dài qua đêm hoặc chạy trong hệ thống tự động: mức ba.
- Làm việc với dữ liệu nhạy cảm: mức ba, cộng thêm không cho máy đó chạm tới internet ngoài những địa chỉ cần thiết.
Nguyên tắc chọn: cách ly càng chặt thì càng bất tiện. Chạy trong container nghĩa là mỗi lần cài công cụ mới bạn phải sửa cấu hình. Đừng chọn mức ba cho việc mà mức một đã đủ, vì bất tiện sẽ khiến bạn tự tháo bỏ nó sau vài ngày.
Những gì cách ly không giải quyết
Nói cho rõ để không kỳ vọng sai:
Không thay được việc xem lại code. Agent trong container vẫn viết được code sai logic nghiệp vụ, và cách ly không giúp gì ở đó.
Không bảo vệ khóa mà bạn tự đưa vào. Nếu bạn truyền khóa API vào container thì agent dùng được khóa đó. Chỉ đưa vào những gì thật sự cần cho việc đang giao.
Không chống được việc gửi dữ liệu ra ngoài nếu bạn cho phép mạng. Với dữ liệu nhạy cảm, hãy giới hạn mạng ở tầng container hoặc tầng máy chủ.
Không thay được sao lưu. Cách ly bảo vệ những gì nằm ngoài vùng, còn thứ nằm trong vùng vẫn xóa được. Bản sao lưu định kỳ vẫn là lớp cuối cùng, theo bài về chu kỳ sao lưu.
Ba mức cách ly và chọn mức nào cho việc nào
| Mức | Cách ly được gì | Phù hợp |
|---|---|---|
| Quyền và hàng rào trong công cụ | Chặn các thao tác đã khai báo trước | Dự án cá nhân, mã không nhạy cảm |
| Chạy trong container | Cách ly hệ thống tệp và tiến trình | Dự án công ty, mặc định hợp lý |
| Máy riêng | Cách ly hoàn toàn | Dự án của khách hàng, hoặc chạy tự động không có người trực |
Khuyến nghị mặc định cho công việc: mức hai. Nó cách ly đủ để một lệnh sai không chạm tới phần còn lại của máy, mà không phiền phức như dựng máy riêng.
Cách ly không chặn được mã nguồn gửi ra ngoài
- Không chặn được việc mã nguồn bị gửi ra dịch vụ bên ngoài. Cách ly hệ thống tệp không liên quan tới việc dữ liệu đi ra qua mạng.
- Không chặn được sai sót logic. Mã sai vẫn là mã sai, và nó vẫn được ghép vào dự án nếu bạn không đọc.
- Không thay được việc rà soát trước khi ghép.
- Không bảo vệ được thứ bạn cố tình gắn vào: nếu bạn gắn thư mục chứa khóa vào container, cách ly mất tác dụng ở đúng chỗ đó.
Ba việc thiết lập cho mức hai
# 1. Chi gan thu muc du an vao container, khong gan thu muc goc# Va tuyet doi khong gan thu muc chua khoa dang nhap # 2. Gioi han tai nguyen, de mot lenh di hoang khong keo ca may xuong# Dat gioi han bo nho va so nhan cho container # 3. Khong chay bang nguoi dung goc trong container # Kiem xem container dang thay gidocker inspect TEN_CONTAINER | grep -A10 Mountsdocker inspect TEN_CONTAINER | grep -i "privileged\|User" # Kiem no co ra duoc mang noi bo khong,# neu khong can thi cat mang noi boBa lớp bảo vệ nên dùng cùng nhau: quyền của công cụ, điểm móc chặn lệnh, và cách ly hệ thống. Xem bài về phân quyền cho agent và bài về điểm móc chặn lệnh.
Câu hỏi thường gặp
Có cần cách ly khi chỉ dùng agent sửa code hằng ngày không?
Thường không cần tới container. Danh sách quyền hợp lý, một vài hook chặn lệnh nguy hiểm và làm việc trên nhánh Git riêng là đủ cho việc bạn ngồi cạnh và duyệt từng bước.
Chạy trong container có chậm hơn không?
Chậm hơn một chút ở thao tác file nếu bạn gắn thư mục từ máy vào, và mức chênh phụ thuộc hệ điều hành. Bù lại bạn được giới hạn tài nguyên và xóa sạch được sau khi dùng.
Nên gắn thư mục nào vào container?
Chỉ thư mục dự án đang làm. Đừng gắn cả thư mục nhà vì như vậy agent thấy khóa SSH, cấu hình và mọi dự án khác, tức là mất hết ý nghĩa của việc cách ly.
Máy riêng cho agent cần cấu hình bao nhiêu?
Tùy việc nó chạy. Sửa code và chạy kiểm thử nhẹ thì 2 vCPU và 4GB đủ. Nếu nó biên dịch hoặc chạy nhiều phiên song song thì nên từ 4 vCPU và 8GB, kèm ổ đĩa nhanh.
