Skip to content

Latest commit

 

History

History
20 lines (12 loc) · 2.27 KB

design.md

File metadata and controls

20 lines (12 loc) · 2.27 KB

RustyVault Design

根据:RustyVault需求文档中的整体需求点,进行功能细化。本文档对RustyVault的整体架构进行描述。

结构图

说明如下:

  1. 虚线框中为RustyVault,其整体上分为三大部分:RustyVault Core, RustyVault Modules和RustyVault Surface.
  • RustVault Core,此组件是RustyVault的核心组件,由多个Manager组成,不同的Manager分管不同功能。例如Module Manager负责对RustyVault的各个功能模块进行管理,提供模块的热插拔等机制;Crypto Manager则对接底层密码库(铜锁),通过rust-tongsuo的Rust binding来调用铜锁的C API实现各种密码学功能等;
  • RustVault Modules,此部分由多个Module组成,是RustyVault的实际执行各种功能的环节,即RustyVault的实际功能代码都位于此。例如,PKI Module提供了完整的PKI能力,如扮演CA进行X.509证书的签发、吊销等管理工作;Crypto Module则依赖于RustyVault Core中的Crypto Manager对底层密码学原语进行调用,以实现对外提供诸如加密解密、签名验签等功能;
  • RustyVault Surface,此组件是直接和最终用户打交道的部分,对外提供HTTPS接入能力,并对API请求进行解析后,转发给某个实际功能的Module上,由该Module进行处理后,返回处理结果给用户。此外,此组件还负责整体的配置解析等工作。
  1. RustyVault需要依赖于底层的密码学算法库(也可称之为软件密码模块),由底层密码库提供全部的密码学相关功能。RustyVault默认的底层密码库是铜锁。

  2. 密码硬件,如加密机、加密卡等,的使用对RustyVault是透明的,该过程由铜锁屏蔽,因此RustyVault对于硬件的差异和对接是无感的。

  3. RustyVault中的敏感安全参数(如各种密钥、随机数、认证信息等)中存在持久化存储需求的,可以在本地加密存储,或者连接外部存储(如etcd)。连接外部存储对于创建RustyVault集群是必须的。存储方面的管理由RustyVault Core中的Storage Manager负责,RustyVault的其他组件也无需感知不同存储方式之间的使用差异。