AnyBackup
性能爆表
AnyShare
如何购买
我已是Anyshare 客户
AnyRobot
如何购买
购买 AnyRobot 订阅服务
我已是 AnyRobot 客户
一对一在线咨询
我是 AnyRobot 新客户
一对一在线咨询
AnyDATA

爱数博客

全部 AnyBackup AnyShare AnyRobot AnyDATA

Proton KMS 私密数据加密介绍

2021-12-03 2155 0

一. 什么是Proton KMS

Proton Key Management Service (KMS) 使用开源组件hashicorp vaul作为核心组件,提供可靠安全高可用的

  • 私密数据存储/读取
  • 加密/解密

使用vault的加密/解密功能,proton KMS系统提供KMS服务插件支持K8S存储在etcd内数据进行加密

为什么需要KMS

在了解KMS之前,让我们试着了解它试图解决的问题:机密信息管理。

大多数应用程序需要访问机密数据才能正常工作。例如,电子商务应用程序可以在某处配置用户名/密码以便连接到其数据库。它还可能需要API密钥才能与其他服务提供商集成,例如支付网关,物流和其他业务合作伙伴。

数据库凭证和API密钥就是我们需要以安全的方式存储和提供给我们的应用程序的机密信息。

一个简单的解决方案是将这些信息存储在配置文件中,并在启动时读取它们。但是这种方法的问题显而易见:有权访问此文件的人共享我们的应用程序具有的数据库权限 - 通常可以完全访问所有存储的数据。

我们可以尝试通过加密这些文件来使事情变得更加困难。但是,这种方法在整体安全性方面不会增加太多。主要是因为我们的应用程序必须能够访问主密钥。当以这种方式使用时,加密仅是一种“错误”的安全感。

现代应用程序和云环境往往会增加一些额外的复杂性:分布式服务,多个数据库,消息传递系统等等,所有敏感信息都在各处传播,从而增加了安全漏洞的风险。

KMS提供密钥管理功能的同时,解决根密钥如果管理的问题。Proton KMS部署的hashicorp vault集群使用shamir密钥共享算法(Shamir Secret Sharing),解决根密钥的安全管理问题,将根密钥划分为5份,满足3份密钥共享后可以计算出根密钥,而小于3份则不能;5份密钥材料按照2/2/1的份额数量分配到3个不同的keyshareholder节点保存

vault各层密钥关联如下图所示

 

安全性

数据安全

vault存储中只存放经过加密的数据/密钥, 因而每次重启的时候vault需要“管理员”提供足够份额的密钥材料来生成根密钥(unseal)

数据加密方面,我们没有扩展hashicorp vault和k8s的加密功能,默认安装的社区版vault/k8s,使用golang的crypto和x/crypto库中的加密算法对数据进行加密,对于存储在vault内部的数据使用的加密算法: 256-bit Advanced Encryption Standard (AES) cipher in the Galois Counter Mode (GCM) with 96-bit nonces;  对于存储在etcd内部的数据,k8s使用AES CBC with PKCS#7 padding对数据进行加密

 

Token安全

k8s的KMS plugin使用的访问vault的token可以更换和撤销,并且限制了使用token的IP来源地址,每个token都跟单独的一个IP地址绑定

数据传输安全

所有跨节点的数据传输的安全性都是通过用https/TLS实现

 

安全模型

只有当以下几个条件同时满足的时候,etcd内存储的数据安全才会出现问题:

  1.  超过1个keyshareholder的磁盘数据被第三方获取
  2.  任意vault节点的数据被第三方获取
  3.  任意etcd节点的数据被第三方获取

 

Proton KMS组成

vault 集群

3节点HA vault集群,存储使用本地磁盘,raft协议同步数据,最多允许1个节点不可用

keyshareholder

3节点,每个holder管理vault根密钥总份额的一个子集,一个keyshareholder节点掌握的份额总数不足以计算出vault的根密钥,但是任意2个keyshareholder都可以计算出根密钥,最多允许1个节点数据泄露

K8S KMS plugin

在每一个k8s apiserver节点上运行的plugin模块, 通过unix socket与apiserver通讯,为apiserver提供加密/解密功能的代理

 

K8S/etcd数据加密解密结构图

 

 

二. 产品优势

KMS是数据安全中非常重要的组件, proton kms组件提供的私密数据管理功能,可以为应用的数据安全问题提供全面的解决方案。

1.0.0版本提供的k8s kms plugin组件可以跟k8s直接集成,支持对rest数据(用户的secret等)的加密存储,k8s用户可以在无感知变化的情况下实现对secret类型的数据对象进行加密

三. 应用场景

1.0.0主要用于k8s系统中对secret类型的数据在存储到etcd之前进行加密,应用层并无感知;对于有加密存储需求的应用,需要用secret类型的资源来存储数据

请就本文对您的益处进行评级:

标签

产品技术

相关文章

热门标签

版本发布 在线教学

拨打400

免费销售咨询热线

400 8216055

7*24 小时免费售后服务热线

400 880 1569

购买咨询

购买咨询

售后服务

售后服务

返回顶部

为了给您提供更优质的服务,请您先完善以下信息:
确认提交

扫码关注

爱数技术支持中心公众号