应用服务常常需要存取各种各样的机密信息,比如,数据库的访问凭证,依赖的外部服务的Token
和Key
,服务之间的通信凭证等等。在每个这样的应用中都重复实现机密信息的存取、更新与吊销等管理操作相当繁重,而且容易出问题。HashiCorp公司的开源项目Vault就将这部分工作以独立服务方式来实现,需要机密信息操作的应用可以与Vault服务交互完成相应的操作。
Vault的应用场景非常广泛,如:
- 机密信息存取
- 凭证的动态生成,比如数据库凭证、PKI证书、公有云服务的凭证等等
- 加密即服务
Vault架构非常清晰,如下图所示,主要分为三部分:

- HTTP/S API: Vault服务对外提供HTTP API接口
- Storage Backend: 负责加密数据的持久化存储, Vault支持多种存储机制。
- Barrier: 负责各种机密信息相关的处理逻辑,最核心的组件是
Secrets Engine
和Auth Method
。Secrets Engine
负责实际机密信息处理功能的实现,各种不同的Secrets Engine
有着不同的功能服务,Auth Method
提供各种不同的身份校验方法。这两个组件都依赖Plugin机制实现,如果官方提供的功能不满足需求,还可以自己写相应Plugin实现特有功能或身份校验方法。