
Mọi người đều thích một câu chuyện về các bot trợ lý bị lỗi, và thường kèm theo cảm giác schadenfreude đối với những người bạn ảo của chúng ta. Tuy nhiên, trong một số trường hợp, lỗi này xuất phát từ việc giám sát không đúng, như câu chuyện của Alexey Grigorev, người đã dám chia sẻ cách mà Claude Code đã xóa mất hàng năm dữ liệu trên một website, bao gồm cả các snapshot phục hồi.
Câu chuyện bắt đầu
Grigorev muốn di chuyển website AI Shipping Labs sang AWS và chia sẻ cùng hạ tầng với DataTalks.Club. Claude đã khuyên không nên làm như vậy, nhưng Grigorev cho rằng không đáng để chịu phiền phức và chi phí duy trì hai môi trường riêng biệt.
Grigorev sử dụng Terraform, một công cụ quản lý hạ tầng có thể tạo (hoặc phá hủy) toàn bộ môi trường, bao gồm mạng, cân bằng tải, cơ sở dữ liệu và máy chủ. Anh đã yêu cầu Claude chạy một plan Terraform để thiết lập website mới, nhưng quên tải lên một tệp state quan trọng, tệp này mô tả chi tiết trạng thái hiện tại của môi trường.
Claude thực hiện lệnh
Claude đã tạo môi trường cho trang Shipping Labs theo yêu cầu, tuy nhiên quá trình bị dừng lại giữa chừng. Do thiếu tệp state, hệ thống đã tạo ra các tài nguyên trùng lặp. Grigorev đã nhờ Claude xác định và khắc phục những tài nguyên trùng lặp, sau đó tải lên tệp state, tin rằng vấn đề đã được giải quyết.
Sai lầm nghiêm trọng
Thay vì dừng việc xóa tài nguyên, Grigorev cho rằng bot sẽ tiếp tục dọn dẹp các tài nguyên trùng lặp và chỉ sau đó mới kiểm tra tệp state. Khi đã có tệp state, Claude đưa ra lệnh destroy để chuẩn bị thiết lập lại môi trường đúng cách.
Vì mô tả hạ tầng bao gồm cả website DataTalks.Club, lệnh này đã xóa toàn bộ môi trường của cả hai trang, bao gồm một cơ sở dữ liệu chứa 2,5 năm hồ sơ và các snapshot được Grigorev tin tưởng làm bản sao lưu. Grigorev đã phải liên hệ với Amazon Business Support, và dữ liệu được khôi phục trong khoảng một ngày.
Biện pháp khắc phục
Trong báo cáo hậu kiểm, Grigorev liệt kê một số biện pháp sẽ thực hiện để tránh lặp lại sự cố, bao gồm:
- Thực hiện kiểm tra định kỳ việc khôi phục cơ sở dữ liệu.
- Áp dụng bảo vệ xóa cho Terraform và các quyền trên AWS.
- Di chuyển tệp state của Terraform sang lưu trữ S3 thay vì lưu trên máy cục bộ.
Anh cũng thừa nhận đã "quá phụ thuộc vào AI agent để chạy các lệnh Terraform", và sẽ ngừng cho bot thực hiện các hành động phá hủy, đồng thời tự mình kiểm tra mọi plan mà Claude đề xuất.
Bài học rút ra
Mặc dù dễ dàng gán vụ việc này là "bot ngớ ngẩn gây ra lỗi", thực tế hầu hết các sysadmin sẽ nhận ra các vấn đề nền tảng trong cách tiếp cận của Grigorev, như việc cấp quyền rộng rãi cho một thực thể phụ thuộc và không giới hạn quyền trong môi trường sản xuất.
Điều quan trọng nhất có lẽ là không nên cho rằng Claude (hoặc bất kỳ AI nào) sẽ tự hiểu ngữ cảnh sâu rộng, giống như một sysadmin cấp dưới chưa có đủ kinh nghiệm.
Ghi chú của tác giả
Bruno Ferreira là một cây viết đóng góp cho Tom's Hardware, với nhiều thập kỷ kinh nghiệm trong lĩnh vực phần cứng PC và phát triển phần mềm. Anh đam mê chi tiết và thường chia sẻ những suy nghĩ sâu rộng về những chủ đề mình yêu thích.
Bình luận
Ah yes. Went through this myself. Wound up creating a "hard stops" file that is simply every (well, relevant) destructive commands that are never to be run by Claude. It gets loaded initially then again after each compact. It's only 25 lines so I'll eat the context if it saves me another heart attack
0 comments Blogger 0 Facebook
Đăng nhận xét