Secret là dữ liệu nhạy cảm để truy cập tài nguyên: mật khẩu, API key, DB credential, token, khóa mã hóa, chứng chỉ. Secrets management là cách lưu, phân phối, xoay vòng và kiểm soát truy cập chúng an toàn.
Vì sao không hardcode vào code/repo:
- Commit vào Git là lộ vĩnh viễn trong lịch sử, kể cả khi xóa sau đó; repo bị leak là mất sạch.
- Không xoay vòng được, ai đọc code cũng thấy, vi phạm least privilege.
Thực hành đúng:
- Để secret ngoài code — biến môi trường hoặc secret store chuyên dụng (HashiCorp Vault, AWS Secrets Manager, GCP/Azure equivalent, K8s Secret + encryption at rest).
- Mã hóa khi lưu (at rest) và khi truyền (in transit).
- Least privilege + audit ai truy cập.
- Rotation định kỳ và thu hồi nhanh khi nghi lộ; ưu tiên credential ngắn hạn (IAM role) hơn key tĩnh.
- Quét secret trong CI (git-secrets, trufflehog) để chặn commit nhầm.