Vừa qua, tài khoản AWS 10 năm tuổi của một kỹ sư bị xóa. Không có cảnh báo, không thời gian gia hạn, không cơ hội khôi phục. Chỉ còn lại khoảng trống dữ liệu tuyệt đối.
Đây là câu chuyện về một lỗi nội bộ thảm họa tại AWS MENA, cùng 20 ngày hỗ trợ bế tắc với một câu hỏi duy nhất không được trả lời thẳng: Dữ liệu còn tồn tại không, và bài học về niềm tin khi giao phó dữ liệu cho đám mây.
Kiến trúc dự phòng đáng lẽ phải bảo vệ kỹ sư này
Hệ thống được thiết kế để tránh “bỏ trứng vào một giỏ”:
- Multi-region replication sang AWS Europe, tách biệt hạ tầng với US regions
- Dead man’s switch cho tình huống khẩn cấp
- Backup strategy bám theo AWS Well-Architected best practices
- KMS key tách rời, không lưu cùng data
Kịch bản duy nhất không được tính đến: single point of failure nằm ở chính provider..
Trong suốt 10 năm là khách hàng AWS, kỹ sư này dùng đây làm testbed phục vụ công việc mã nguồn mở, thử triển khai cho các gem Ruby như capistrano-puma
và capistrano-sidekiq
. Không phải hệ thống production, nhưng là nền tảng để tạo ra giá trị cho cộng đồng.
Vào đúng sinh nhật, AWS đưa ra một minh chứng rằng mọi lớp dự phòng đều vô nghĩa nếu chính provider xóa dữ liệu.
20 ngày hỗ trợ đầy bế tắc
- 10 Jul: AWS yêu cầu xác minh. Hạn 5 ngày, tính cả cuối tuần.
- 14 Jul: Form hết hạn. Liên hệ hỗ trợ để hỏi họ cần gì.
- 16–20 Jul: Im lặng 4 ngày, sau đó nói sẽ chuyển cấp có thẩm quyền.
- 20 Jul: Form mới được gửi lại.
- 21 Jul: Nộp CMND và hóa đơn dịch vụ ở dạng PDF rõ nét. Phản hồi sau 10 giờ.
- 22 Jul: AWS báo tài liệu không đọc được. Cùng file mà ngân hàng chấp nhận.
- 23 Jul: Tài khoản bị chấm dứt. Ngày sinh nhật.
- 24 Jul: Hỏi câu duy nhất quan trọng: Dữ liệu còn không.
- Trả lời: “Trường hợp đang được bộ phận dịch vụ xem xét”.
- Đề nghị cấp quyền chỉ đọc tạm thời để tự sao lưu. Bị từ chối.
- 28–29 Jul: Sau nhiều trả lời mẫu, hỏi thẳng Yes hoặc No.
- AWS thừa nhận: Do xác minh không hoàn tất trước hạn, tài nguyên đã bị chấm dứt.
- 30 Jul: Email chốt kèm lời mời chấm điểm hỗ trợ 5 sao.
Chính sách công khai và thực tế nhận được
Theo tài liệu công khai của AWS về đóng tài khoản:
- Có 90 ngày hậu đóng tài khoản để mở lại và dữ liệu được giữ
- Sau 90 ngày, dữ liệu mới bị xóa vĩnh viễn
Nhưng trong trường hợp này, tài khoản không do chủ động đóng mà bị treo vì không xác minh. Vùng xám chính sách này không được công bố rõ ràng, và kết quả là không áp dụng giữ dữ liệu 90 ngày.
Biến số người thanh toán
AWS đổ nguyên nhân cho vấn đề bên thứ ba thanh toán. Một consultant từng chi trả khoảng 200 USD/tháng bị ảnh hưởng bởi cú sập FTX rồi biến mất. Tuy nhiên, tài khoản vẫn có thẻ riêng đang hoạt động, từng dùng trước đó và được giữ như phương án dự phòng. Đề nghị chuyển billing về thẻ này bị từ chối.
Nếu chỉ là vấn đề thanh toán, AWS có thể:
- Chuyển billing sang thẻ cá nhân
- Tạm ngưng dịch vụ thay vì xóa dữ liệu
- Áp dụng giai đoạn 90 ngày như tài liệu
Thay vào đó, tất cả diễn ra như một thử nghiệm nội bộ lỗi.
Hệ sinh thái bị phá hủy
AWS không chỉ lưu backup. Đây là phòng sạch để phát triển mã nguồn mở, quy trình phát hành gem Ruby:
- BreakerMachines: circuit breaker cho Ruby
- ChronoMachines: state machine theo thời gian
- RailsLens: theo dõi hiệu năng Rails
- Và nhiều gem khác đang chạy trong hệ thống sản xuất toàn cầu
Cùng với đó, mất thêm: một cuốn sách lập trình hoàn chỉnh, tutorial phần cứng kèm phần mềm, Go for Rubyists, nhiều tài liệu chưa công bố, các bảng so sánh kỹ thuật quan trọng.
Giả thuyết kỹ thuật
Nguồn nội bộ AWS cho rằng nhiều tài khoản bị ảnh hưởng bởi một thử nghiệm. Công cụ Java nội bộ dựa vào tham số -dry
nhưng kỹ sư vận hành lại dùng --dry
. Tham số dài bị bỏ qua, lệnh chạy thật trong môi trường sản xuất.
Sự thật đắng lòng
Bạn trao cho AWS | AWS trao lại cho bạn |
---|---|
Một thập kỷ trung thành | Chấm dứt ngay trong ngày |
Lịch sử thanh toán đúng hạn | 20 ngày trả lời vòng vo |
Tài liệu xác minh rõ ràng | Từ chối vì không đọc được |
Đóng góp mã nguồn mở | Không cân nhắc gì |
Sao lưu, khóa tách biệt | Xóa sạch dữ liệu |
Niềm tin | Phản bội |
Bài học rút ra
- Không tin tuyệt đối một nhà cung cấp. Multi-region trong cùng provider không giúp gì nếu sự cố xuất phát từ chính họ.
- Kế hoạch thoát phải chạy trong giờ, không phải ngày. Script hóa di trú, chuẩn bị lộ trình DNS, đối sánh dịch vụ.
- Offsite backup: on-prem hoặc cloud khác, vật lý bất biến theo chu kỳ.
- Tách danh tính thanh toán và vận hành, có hạn mức, cảnh báo và tự chuyển billing khi lỗi.
- Lưu vết giao tiếp: ảnh chụp, email, timestamp.
- Kiểm thử khôi phục định kỳ từ bản sao lưu lạnh mỗi quý.
- Thu nhỏ blast radius: cách ly tài khoản, khóa, dữ liệu.
- Đánh giá rủi ro địa lý & pháp lý, nhất là với KYC và thay đổi điều khoản.
Checklist nhanh cho đội kỹ thuật
- Thiết lập sao lưu bất biến ngoài provider chính, kiểm thử restore ngay trong tuần
- Viết playbook di trú sang cloud phụ, chuẩn hóa Terraform/Pulumi cho cả hai
- Bật cảnh báo billing bất thường, cài chuyển mạch thanh toán dự phòng
- Tách dữ liệu lâu dài khỏi tài khoản vận hành hàng ngày
- Lập lịch DR drill hàng quý và postmortem bắt buộc sau diễn tập
Lời kết
Public cloud không phải partner nó là business. Khi lợi ích kinh doanh xung đột với dữ liệu của bạn, phần thua thường thuộc về bạn. kỹ sư kia đặt mục tiêu build tool để exit AWS dễ dàng, và nhiều khách hàng đã chuyển workload sang OCI, Azure, Google Cloud.
Bài viết gốc: https://www.seuros.com/blog/aws-deleted-my-10-year-account-without-warning