二、vault - vault的架构

前面对vault的使用做了简单使用,有了具体化的认识,下面对vault进行详细的说明。

vault架构:
术语:

--
Storage Backend存储后端 负责存储加密后的数据
Barrier屏障,vault的安全区域的保障
Secret Backend密码后端,如mysql每次生成mysql新用户
Audit Backend审计后端,如日管理
Credential Backend凭证后端,用于验证连接到vault的用户或应用程序
Client Token客户端令牌
Secret密文,秘密信息
Servervault服务
Expiration Mgr租期管理器,过期管理
Rollback Mgr回滚管理器 ,用户不可见
Token Store令牌存储
core负责处理api请求请求,获取secret backend中密文返回,并加上lease ID ,用户可以调用api续租或销毁密文
policy store策略存储
System backend系统后端

高级概述:
vault的架构如下图:
这里写图片描述

安全屏障Barrier内的组件都是安全的,除了Storage Backend和HTTP API之外,所有其他组件都在安全屏障Barrier内。

vault启动后,处于封闭状态,操作vault必须先解封,解封vault需要使用初始化时生成的多个密钥,vault初始化后需要使用加密钥匙(encryption key)访问数据,加密钥匙(encryption key)由主密钥(master key)提供保护;默认情况下,vault使用“ Shamir’s secret sharing algorithm ”算法把主密钥(master key)分割成5股,称为(key shares),任何3股(key shares)可重建的主密钥(master key);
这里写图片描述
注:
Shamir’s secret sharing algorithm : Shamir’s 秘密共享算法
Key Shares : 分割秘钥 任意三个可以构建Master Key
Master Key : 主密钥
Encryption key : 加密秘钥,用于数据的读写

分割秘钥的数量和所需的最小阈值都可以指定。此功能可以被禁用,主密钥可直接访问未密封的vault服务,一旦库获取encryption key,就能够解密存储后端(storage backend)的数据,进入起封状态。启封后,vault加载所有的审计后端(Audit Backend )、凭证后端(Credential Backend )和密文后端(Secret Backend)

Vault中的各种后端的配置都存储在存储库(Storage Backend),因为这些都是敏感数据。只有具有正确权限的用户才能够修改,也就是说他们不会处于屏障之外。由于他们存储在存储库中,对他们的任何更改都被ACL(Access Control List)控制,并被审计记录日志。

客户端首次连接到vault,需要进行身份验证。vault提供了可配置的凭证后端(Credential Backend),拥有灵活的身份验证机制。如对人类友好的用户名/密码认证方式,或使用第三方运营商的认证,如GitHub认证;应用程序可以使用公钥/私钥或令牌验证(token)。身份验证请求流经核心(core)和凭证后端(Credential Backend),如果请求是有效,则返回其策略列表(Policies )。

策略由ACL方式定义。例如,“root”策略是内置的,允许访问所有资源。您可以创建任意数量的策略以及路径的细粒度的权限控制。vault操作使用白名单模式,也就是说,除非通过策略显式授予权限,否则任何访问操作都是不允许的。一个用户可能有多个策略,是否可以操作由这些策略决定。策略由内部的策略库(policy store)存储和管理。策略库(policy store)是通过系统后端(System backend)操作的,其始终是安装在sys /下。

身份验证后由凭证后端(credential backend)提供了一组适用的政策,由token store为客户端生成一个新的令牌,并存储和管理起来。此标记发送给客户端,并用于后续请求使用。类似登录网站时用的cookie。客户端标记可能有一个与之相关的租赁凭证,是否有租赁凭证取决于凭证后端(credential backend )配置。意味着客户端令牌可能需要定期更新,以免失效。

身份验证后,则使用令牌进行请求。令牌用于验证客户端和加载相关策略。策略用于对请求进行授权,然后将请求路由到指定的密文后端(Secret Backend),请求的处理由后端的类型决定。如果后端返回密文,核心寄存器(core)会管理并附加一个租赁id(lease ID)。租赁id用做更新或销毁密文。如果客户允许租赁id到期,租期管理器(
Expiration Mgr)自动销毁这个密文。

vault核心将请求和响应的日志委托给audit broker,将日志记录到审计后端。请求流程以外,核心保持在后台运行。租赁管理是比较重要的,因为它允许客户令牌到期或密文自动撤销。此外,vault使用回滚管理器基于日志记录处理某些失败的用例。这个操作是透明的和用户不可见的。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页