Vault — Basics
HashiCorp Vault — Basics
Section titled “HashiCorp Vault — Basics”What it is
Section titled “What it is”Secret management + identity-based access. Stores secrets, generates dynamic credentials, manages encryption keys. Open-source core + paid Enterprise features.
Core concepts
Section titled “Core concepts”- Secret engine — pluggable backend (KV, database, AWS, PKI, transit, ssh, etc.).
- Auth method — how clients authenticate (token, AppRole, K8s, AWS IAM, JWT/OIDC, LDAP, GitHub).
- Policy — HCL document granting/denying paths.
- Token — capability bearer (root, periodic, renewable).
- Path — every Vault op is on a path (
secret/data/db,database/creds/readonly). - Lease — TTL on dynamic secrets; auto-revoked.
- Seal/unseal — Vault must be unsealed (with Shamir keys or auto-unseal via cloud KMS) to operate.
- Audit device — logs all requests/responses for compliance.
Secret engines
Section titled “Secret engines”KV v2 (versioned static secrets)
Section titled “KV v2 (versioned static secrets)”vault kv put secret/api/db password=foovault kv get secret/api/dbvault kv get -version=2 secret/api/dbDatabase (dynamic creds)
Section titled “Database (dynamic creds)”- Vault generates per-request DB user with TTL. Revoked when lease expires.
- Supports Postgres, MySQL, MongoDB, Snowflake, etc.
- Generate temporary IAM creds dynamically.
- Useful for Lambda, batch jobs needing assumed role + STS rotation.
- Vault as a CA. Issues short-lived certs for mTLS.
Transit (encryption-as-a-service)
Section titled “Transit (encryption-as-a-service)”- App sends plaintext → Vault encrypts → app stores ciphertext.
- Key never leaves Vault.
- Used for envelope encryption.
- Signed SSH certs; ephemeral access without long-lived keys.
Auth methods
Section titled “Auth methods”- Token: simple, limited use cases.
- AppRole: machines auth with role_id + secret_id (best fit for CI).
- Kubernetes: pods authenticate via SA JWT.
- AWS IAM: instance profile / IAM role auth.
- JWT/OIDC: integrate with GitHub Actions (OIDC), GCP, Azure, etc.
- LDAP / OIDC for humans.
- TLS certificates.
Policy example
Section titled “Policy example”path "secret/data/api/*" { capabilities = ["read"]}path "database/creds/api-readonly" { capabilities = ["read"]}path "transit/encrypt/api" { capabilities = ["update"]}CLI essentials
Section titled “CLI essentials”vault statusvault login -method=oidcvault token create -policy=api -period=24hvault kv put secret/db password=pvault kv get secret/dbvault read database/creds/readonlyvault write transit/encrypt/api plaintext=$(echo -n "data" | base64)vault list secret/metadata/vault policy listvault policy read apivault policy write api ./api.hclvault audit enable file file_path=/var/log/vault.logArchitecture
Section titled “Architecture”- HA via consensus (Raft built-in, or Consul as backend).
- Multi-region (Enterprise: Replication, Performance Standby).
- Auto-unseal via cloud KMS recommended (AWS KMS, GCP KMS, Azure KV).
Common interview Qs
Section titled “Common interview Qs”- Static vs dynamic secrets? Static = stored, retrieved (KV). Dynamic = generated on demand with lease (DB, AWS).
- Why dynamic creds? Short-lived; revoke compromised; per-request audit; no rotation drama.
- AppRole flow? App has role_id (in code/env) + secret_id (delivered via trusted broker). Login → token. Limit scope via policies.
- Vault unseal? Shamir N-of-M key shares; auto-unseal via cloud KMS for prod.
- K8s auth? Pod’s service-account JWT presented to Vault; Vault validates with K8s API; binds to role with policies.
- What is transit engine for? Encrypt/decrypt without storing keys in app. Sign/verify too.
- Secret zero problem? How does the first secret (Vault token) get to the app? Bootstrap via cloud IAM (AWS IAM auth, K8s SA), short-lived OIDC, etc.
Anti-patterns
Section titled “Anti-patterns”- Long-lived root tokens.
- Apps using same token across services.
- No audit logging.
- Storing static secrets when dynamic engines exist.
- Vault as just a KV store — missing the dynamic secret value.
- No backup / restore plan for Raft state.
- Single Vault node in prod.