HashiCorp Vault 是什么
集中式密钥管理:动态凭据、租约回收、审计日志与加密即服务。应用不再散布静态密钥,而是按身份短时获取,泄漏面与轮换成本同时下降。代价是部署与运维复杂度较高:自身高可用、解封流程与故障影响面都要提前设计,职责边界先划清。
基本信息
| 核心概念 | secrets engine、auth method、policy、lease(TTL) |
|---|---|
| 常见用法 | KV 存静态密钥;数据库引擎发动态口令;Transit 做加解密 |
| 接入 | AppRole、Kubernetes auth、OIDC 等方式获取令牌 |
| 租约 | 动态凭据带 TTL,到期自动失效,续租受策略约束 |
| 审计 | 开启审计设备记录每次访问,含调用方与路径 |
典型使用场景
- 动态数据库口令:按服务发放短时账号,用完即回收
- 集中静态密钥:KV 引擎替代配置文件里的明文
- 加解密服务:Transit 让应用不接触密钥材料
- 合规审计:访问日志满足密钥操作的追溯要求
- CI 接入:流水线经 OIDC 或 AppRole 换取短时凭据
实践要点
- 最小策略:路径与动作逐条开,避免通配写
- 认证收紧:绑定具体身份(服务账号、命名空间、分支)
- 解封演练:分片与自动解封方案定期验证
- 故障预案:Vault 不可用时的降级与恢复路径写进手册
- 版本化:KV v2 保留历史版本,误覆盖可回读
- 层级划分:按环境与团队划分命名空间,减少互相影响
常用命令
常用命令
vault kv put secret/prod/db password='...'
vault kv get secret/prod/db
vault policy write app-ro - <<'EOF'
path "secret/data/prod/db" { capabilities = ["read"] }
EOF核心组件
| 组件 | 作用 | 注意 |
|---|---|---|
| secrets engine | 存取各类秘密 | 按用途选择引擎 |
| auth method | 认证身份 | 绑定具体主体 |
| policy | 授权路径与动作 | 最小化到具体路径 |
| lease | 租约与 TTL | 到期回收需应用处理 |
Vault 自身的高可用与解封(unseal)流程要演练:核心密钥服务故障会连锁影响发布。
动态凭据优先:能自动过期的就别存静态值,静态值越多轮换越贵。
先小范围试点:选一条非核心链路接入运行数周,把解封与故障预案跑顺再扩大。