Vault: The Secret Store Your Infrastructure Actually Needs
원본github.com/hashicorp/vault↗How HashiCorp's open-source secrets engine became the quiet backbone of production security.
A fintech startup gets acquired. During due diligence, the buyer's security team finds 47 hardcoded API keys scattered across three private repos and two CI/CD pipelines. The deal closes anyway — but at a $2M discount, and with a six-month remediation clause. That story is more common than anyone wants to admit.
Setting
HashiCorp built Vault to answer a problem that every growing engineering organization hits eventually: secrets — database passwords, API tokens, TLS certificates, SSH keys — tend to escape. They leak into version control, get copy-pasted into Slack, sit in plaintext environment variables, or outlive the engineers who created them. The project, written in Go and now sitting at over 35,000 GitHub stars, describes itself as "a tool for secrets management, encryption as a service, and privileged access management." That is a deliberately broad mandate, and Vault earns it.
The project is maintained by HashiCorp (now part of IBM) with an active contributor base. It is available both as open-source (MPL 2.0) and as a commercial enterprise product. The core engine, however, is open and auditable — important for a security tool you are trusting with your most sensitive material.
The Story
Vault's architecture revolves around a few core concepts worth understanding before you deploy anything.
Secrets Engines are mountable plugins that handle different secret types. The KV (key-value) engine stores static secrets. The database engine generates dynamic, short-lived credentials on demand. The PKI engine acts as an internal certificate authority (CA — a trusted system that issues and signs cryptographic certificates). You mount the engine you need and Vault handles the rest.
Here is a concrete scenario. Your application needs to connect to a PostgreSQL database. The traditional approach: generate a password, store it in an environment variable, rotate it manually every 90 days (if you remember). The Vault approach: your app authenticates to Vault using its Kubernetes service account (a machine identity attached to a running pod), requests a database credential, and receives a username and password that expire automatically in 1 hour. No human ever sees that password. The database user is deleted when the lease expires. If your app is compromised, the blast radius — the window in which stolen credentials remain valid — is measured in minutes, not months.
This is Vault's dynamic secrets pattern, and it is the feature that separates it from a glorified password manager.
For encryption, Vault's Transit engine exposes encryption as an API. Instead of your application managing its own encryption keys (a common source of implementation errors), it sends plaintext to Vault and gets ciphertext back. The keys never leave Vault. Key rotation is a single API call — Vault re-wraps existing ciphertext with the new key version on demand, without requiring a full data migration.
Access control is handled through policies written in HCL (HashiCorp Configuration Language — a human-readable config format similar to JSON). A policy might say: "the payments service can read secrets under secret/prod/payments/* but cannot list or delete." Policies are attached to authentication methods — Vault supports AWS IAM, Kubernetes, LDAP, GitHub, OIDC, and more — so you can slot it into whatever identity system you already use.
Audit logging is first-class. Every request and response (with sensitive values hashed) is written to a structured log. For teams under SOC 2, PCI-DSS, or HIPAA compliance requirements, this audit trail is not a nice-to-have — it is the evidence your auditors will ask for.
The Insight
The security insight Vault encodes is deceptively simple: secrets should have identity, scope, and a lifespan. A secret with no expiry and no audit trail is not a secret — it is a liability waiting to be discovered. Vault operationalizes that principle at infrastructure scale. The key rotation, the dynamic credential lifecycle, the policy engine — they are all expressions of the same idea: credentials should be treated like sessions, not like passwords written on a sticky note.
Who should use this? If you are a startup past product-market fit and starting to think about your first SOC 2 audit, Vault is the right tool to adopt before you have a secret sprawl problem rather than after. Enterprise teams that already have a secrets management story should evaluate whether their current solution handles dynamic credentials and encryption-as-a-service, or just static storage. Individual engineers running homelab infrastructure or personal projects will find the learning curve steep relative to simpler tools — but the conceptual model Vault teaches is worth the investment regardless of whether you deploy it.
Vault is not a magic shield. A misconfigured policy, an overly permissive auth method, or a poorly sealed deployment will introduce its own attack surface. The documentation is extensive, and you should read it before you go to production.
The goal, ultimately, is to make your secrets boring — predictable, short-lived, and auditable. That $2M discount in the acquisition story was paid for secrets that were none of those things. Vault is one serious tool for closing that gap. More security-focused tooling worth your Saturday reading time is at teum.io/stories.
한국어 요약
Vault는 API 키, DB 패스워드, TLS 인증서 같은 시크릿을 중앙에서 관리하고, 수명이 짧은 동적 자격증명을 자동으로 발급·만료시키는 오픈소스 도구입니다. 암호화 서비스(Transit 엔진)와 세밀한 접근 정책, 완전한 감사 로그를 기본 제공해 SOC 2, PCI-DSS 같은 컴플라이언스 요건 충족에도 직접 연결됩니다. 시크릿이 Git에 박히거나 Slack에 떠돌기 전에 도입하는 게 훨씬 낫습니다.
Secrets should have identity, scope, and a lifespan — Vault operationalizes that principle at infrastructure scale.
#security#secrets-management#devops#hashicorp#vault#kind:security
답글 (0)
No replies yet. Be the first!