Họ đang đo gì
Bạn có nghĩ tới việc xoay vòng khoá và giới hạn quyền không, hay chỉ nghĩ tới chỗ cất.
Trả lời ngắn~30 giây
Trong một kho bí mật có kiểm soát truy cập và ghi lại lịch sử truy cập: AWS Secrets Manager, GCP Secret Manager, Vault, hoặc secret của nền tảng bạn đang dùng. Ứng dụng nhận chúng lúc chạy qua biến môi trường hoặc file được gắn vào. Điều quan trọng hơn chỗ cất là ba thứ: mỗi môi trường một bộ khoá riêng, quyền tối thiểu cho từng dịch vụ, và xoay vòng được mà không phải deploy lại.
Giải thích sâu
Về Kubernetes Secret, có một hiểu nhầm phổ biến: nó chỉ được mã hoá base64, tức là không được mã hoá gì cả — ai đọc được object đó là đọc được giá trị. Cần bật encryption at rest cho etcd, hoặc dùng một giải pháp bên ngoài như External Secrets Operator kéo từ kho thật vào. Nói được điều này thường tách người đã vận hành cụm thật với người đã đọc tài liệu.
Khi bí mật đã lọt vào git, xoá commit là chưa đủ — nó còn trong lịch sử, trong fork, và có thể đã bị bot quét thấy trong vài phút. Quy trình đúng là XOAY VÒNG khoá đó ngay trước tiên, rồi mới dọn lịch sử. Rất nhiều đội làm ngược lại và dành nửa ngày viết lại lịch sử trong khi khoá vẫn còn hiệu lực.
Hướng tốt nhất là bỏ hẳn bí mật tĩnh ở nơi có thể: dùng danh tính của workload (IAM role gắn với service account, workload identity federation) để dịch vụ tự lấy được token ngắn hạn. Không có khoá dài hạn nào để rò rỉ, và việc xoay vòng trở thành chuyện của hệ thống chứ không phải của bạn. Đây là câu trả lời ghi điểm cao nhất vì nó giải quyết nguyên nhân chứ không quản lý hậu quả.
Câu hỏi tiếp theo họ sẽ hỏi
?Bí mật trong CI thì sao?
Dùng kho bí mật của chính hệ CI, giới hạn theo môi trường, và không cho pull request từ fork truy cập — đó là con đường rò rỉ kinh điển, vì người ngoài gửi được PR chạy code tuỳ ý trong pipeline của bạn.
Trả lời thế này là mất điểm
.envđược commit “vì chỉ là môi trường dev”. Khoá dev thường trỏ tới dịch vụ thật, và bot quét git không phân biệt.- Dùng chung một khoá cho mọi môi trường. Lúc đó không có cách nào thu hồi quyền của staging mà không làm sập production.