HashiCorp Vault — industry-standard secret manager. Stores: API keys, DB passwords, TLS certs, SSH keys. Features: dynamic secrets (creates credentials on-demand), leasing/revocation, audit log, K8s integration. Deploy: docker/K8s (3-node HA for prod), init, unseal (5 keys, 3 to unseal — Shamir's sharing). Production: enable auth (LDAP/OIDC/K8s), policies, audit.
Below: step-by-step, working examples, common pitfalls, FAQ.
docker run -d -p 8200:8200 -e VAULT_DEV_ROOT_TOKEN_ID=dev hashicorp/vaultexport VAULT_ADDR=http://localhost:8200 VAULT_TOKEN=devvault secrets enable -path=secret kv-v2vault kv put secret/myapp db_password=s3cr3tvault kv get secret/myapp| Scenario | Config |
|---|---|
| Write/read secret | vault kv put secret/myapp api_key=sk-abc123
vault kv get -field=api_key secret/myapp |
| K8s integration | # ServiceAccount in K8s
vault auth enable kubernetes
vault write auth/kubernetes/config \
kubernetes_host=https://kubernetes.default.svc
vault write auth/kubernetes/role/myapp \
bound_service_account_names=myapp \
bound_service_account_namespaces=default \
policies=myapp-policy |
| Dynamic DB credentials | vault secrets enable database
vault write database/config/postgres \
plugin_name=postgresql-database-plugin \
connection_url='postgresql://vault@pg:5432/{{name}}' \
allowed_roles=readonly
# Rotate: vault read database/creds/readonly → returns new user/pass, auto-expires |
| Policy file | # myapp-policy.hcl
path "secret/data/myapp/*" {
capabilities = ["read"]
}
path "database/creds/readonly" {
capabilities = ["read"]
} |
| Vault Agent injector (K8s sidecar) | # Pod annotations
vault.hashicorp.com/agent-inject: 'true'
vault.hashicorp.com/role: 'myapp'
vault.hashicorp.com/agent-inject-secret-db: 'secret/data/myapp' |
vault operator raft snapshot save backup.snapThe tool checks HTTP security headers, SSL/TLS configuration, server info leaks, and protection against common attacks (XSS, clickjacking, MIME sniffing). A grade fromA to F shows overall security level.
Checking Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and more.
TLS version, certificate expiry, chain of trust, HSTS support.
Finding exposed server versions, debug modes, open configs, and directories.
Detailed report explaining each issue with specific steps to fix it.
HTTP header audit
config verification
CSP & HSTS setup
compliance checks
Strict-Transport-Security.Server: Apache/2.4.52 helps attackers find exploits. Hide the version.DENY or SAMEORIGIN.nosniff, browsers may misinterpret file types (MIME sniffing).Content-Security-Policy-Report-Only, monitor violations, then enforce.Server, X-Powered-By, X-AspNet-Version from responses.Security check history and HTTP security header monitoring.
Sign up freeAWS SM: managed, tight AWS integration, $0.40/secret/month. Vault: multi-cloud, dynamic creds, advanced features (transit encryption), but self-host complexity.
Vault moved to BSL (Business Source License) in 2023, like Terraform. Open-source fork — OpenBao (Linux Foundation).
Dynamic secrets: auto-rotate on every request. Static: TTL + VersionedKV + manual rotation via API.
Vault Agent (sidecar renders secrets to file), Vault SDK (Python/Go/Java), Kubernetes Secret Injector.