二、vault

来源:互联网 发布:铁路四等站 知乎 编辑:程序博客网 时间:2024/05/21 15:49

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

vault架构:
术语:

- - Storage Backend 存储后端 负责存储加密后的数据 Barrier 屏障,vault的安全区域的保障 Secret Backend 密码后端,如mysql每次生成mysql新用户 Audit Backend 审计后端,如日管理 Credential Backend 凭证后端,用于验证连接到vault的用户或应用程序 Client Token 客户端令牌 Secret 密文,秘密信息 Server vault服务 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使用回滚管理器基于日志记录处理某些失败的用例。这个操作是透明的和用户不可见的。

原创粉丝点击