Secrets Management
Level: RequiredOWASP: ASVS 2.133.3.2CWE: CWE-798Updated: 2025-08-20
Keep secrets out of source control. Use a centralized vaultscoped accessrotationand strong auditing.
Secrets include API keys, database credentials, tokens, and private keys. Exposure leads to immediate compromise.
Requirements
- Never commit secrets to source control. Enforce pre-commit scanners.
- Store secrets in a dedicated vault (e.g., AWS Secrets Manager, HashiCorp Vault, GCP Secret Manager).
- Scope secrets to the minimum privilege required; separate environments by tenant.
- Rotate secrets regularly and on demand (incident response, personnel changes).
- Access via short-lived credentials; prefer IAM roles over long-lived keys.
- Audit access and usage; alert on anomalies.
Examples
Node.js: read secret from environment injected by the platform
// The platform injects DB_URL at runtime from the vault (not in .env)
const url = process.env.DB_URL;
if (!url) throw new Error("DB_URL not configured");
Terraform: reference provider-managed secret
data "aws_secretsmanager_secret_version" "db" {
secret_id = var.db_secret_id
}
output "db_url" {
value = jsondecode(data.aws_secretsmanager_secret_version.db.secret_string)["url"]
sensitive = true
}
Detection
- Enable secret scanning in CI (e.g., gitleaks, trufflehog).
- Block pushes that introduce high-confidence findings.
Incident Response
- Revoke exposed credentials immediately.
- Rotate dependent secrets and tokens.
- Review logs to scope impact; invalidate active sessions as needed.
Tags
[Secrets, Vault, Rotation, Least Privilege]