Nâng CaoBảo Mật iconBảo Mật

Secrets management: cách quản lý secrets an toàn trong production?

Không bao giờ commit secrets vào git — dùng env vars cho level 1, Vault/AWS Secrets Manager cho production với dynamic secrets có TTL; Kubernetes secrets là base64 không phải encrypted (dùng Sealed Secrets hoặc External Secrets Operator).

Secrets (API keys, DB passwords, JWT secrets) không bao giờ được nằm trong code hay version control. Layers of secrets management: Environment variables (level 1): inject qua CI/CD, Docker, K8s secrets — không commit .env production lên git; .env.example làm template không có values thật. Secret scanning: GitHub Secret Scanning tự detect leaked secrets trong commits; GitGuardian cho CI; git-secrets pre-commit hook ngăn commit secrets. Vault solutions (level 2): HashiCorp Vault (centralized, dynamic secrets — tạo DB credentials tạm thời cho mỗi deployment, auto-rotate), AWS Secrets Manager (managed, tích hợp với EC2/Lambda/ECS, auto-rotation cho RDS), Azure Key Vault, GCP Secret Manager. Dynamic secrets: Vault tạo DB user+password unique cho mỗi app instance với TTL — compromised secret vô dụng sau khi expire, không cần rotate manually. SOPS (Secrets OPerationS): encrypt secrets files trong git với age/GPG — cho phép secrets-as-code nhưng encrypted. Kubernetes secrets: base64-encoded không phải encrypted — dùng Sealed Secrets (kubeseal) hoặc External Secrets Operator để sync từ Vault/AWS. Rotation policy: rotate secrets sau offboarding team member, sau breach, và proactively mỗi 90 ngày. Pitfall: log statements in startup console.log('Connecting to', process.env.DATABASE_URL) — log URL thường chứa credentials.

Xem toàn bộ Bảo Mật cùng filter theo level & chủ đề con.

Mở danh sách Bảo Mật