动态密钥是什么
动态密钥指密钥管理系统(如 HashiCorp Vault)按需为每个应用实例生成短期凭据:数据库账号、云临时凭据、消息队列账号等,用完即回收。泄露窗口从「永久、直到人工轮换」压缩到「TTL 之内」,每份凭据背后有租约记录可审计到具体实例。代价是应用要适配「凭据会过期」:处理续租或重建连接。
基本信息
| 适用平台 | HashiCorp Vault 及同类方案;云侧 STS 临时凭据是同一思路 |
|---|---|
| 机制 | 数据库等引擎创建账号并绑定租约,TTL 到期自动删除 |
| 收益 | 免人工轮换、凭据与实例一一对应、可审计 |
| 配套 | 应用需处理凭据到期续租或重建连接 |
典型使用场景
- 数据库访问:每个服务实例拿专属账号,权限按角色模板收窄
- 云资源访问:工作负载换取短期 STS 凭据,替代长期密钥
- 审计与合规:租约记录回答「谁在何时拿到了什么权限」
- 降低轮换负担:不再人工轮换共享口令,生命周期自动化
- 应急收口:泄露响应时吊销租约即可,无需全网改密
数据库引擎示意
数据库引擎示意
vault secrets enable database # 启用数据库密钥引擎
vault write database/config/mydb \
plugin_name=postgresql-database-plugin \
connection_url="postgresql://{{username}}:{{password}}@db:5432/app" \
allowed_roles=app-role # 角色白名单
vault read database/creds/app-role # 按需取一份短期账号
# 返回含用户名、密码与租约号,TTL 到期自动删除短 TTL 会让连接池失效更频繁:TTL 与应用连接管理策略要联合调参,先在测试环境验证续租路径。
换取凭据的入口本身也要鉴权:应用通过 K8s、AppRole 等认证方式换 token,别让 Vault token 变成另一种长期秘密。
引擎与凭据对照
| 引擎 | 生成内容 | 典型 TTL |
|---|---|---|
| database | 数据库账号与密码 | 小时级 |
| aws | 云临时凭据 | 分钟到小时级 |
| pki | 短期证书 | 天级 |
| 消息队列 | 专用账号 | 按租约配置 |
到期与吊销是两条路径:租约到期自动清理用于常态,人工吊销用于泄露响应,两条都要演练过再上生产。