解决安全规模问题:MinIO 企业对象存储密钥管理服务器

在强大可靠的存储解决方案领域,MinIO 作为持久层脱颖而出,为组织提供安全、持久和可扩展的存储选项。MinIO 通常负责处理关键任务数据,在确保高可用性方面发挥着至关重要的作用,有时甚至在全球范围内。存储数据的性质,从财务和医疗保健记录到复杂的产品细节和尖端的 AI/ML 模型,不仅需要弹性,还需要严格的安全措施来防止未经授权的访问和披露。

MinIO 通过其细粒度身份和访问管理、对象锁定和端到端数据加密(静态和在线)等核心功能解决了这些安全问题。为了保护静态数据,MinIO 与各种密钥管理系统 (KMS) 无缝集成,包括 HashiCorp Vault、Thales CipherTrust Manager、AWS KMS 和 SecretsManager 等知名选项。这些 KMS 解决方案充当加密密钥的守护者,将它们安全地存储在远离它们保护的数据的地方。

虽然 MinIO 支持的 KMS 解决方案已经证明了它们的实力并被广泛使用,但也出现了一些挑战,尤其是在处理 PB 甚至 EB 数据的大规模存储基础设施的背景下。多年来观察到的局限性,部分通过我们的 KES 项目得到缓解,揭示了集成和维护单独的 KMS 解决方案的复杂性。

管理通用 KMS 会带来复杂性,因为这些 KMS 通常是错综复杂的分布式系统。兼顾安全性、合规性和性能需求成为一项艰巨的任务。另一方面,高性能存储基础架构的稳健性可能需要满足通用 KMS 解决方案难以满足的要求,尤其是在可用性、响应时间和整体性能方面。即使他们这样做了,它们也可能变得不可靠、过度资源消耗或成本上升。

因此,认识到大型、高可用性和高性能数据基础设施带来的独特挑战,我们致力于开发针对 MinIO 的 KMS,以满足这些特定需求。MinIO 的 KMS 功能专为我们的 Enterprise Lite 和 Enterprise Plus 客户提供。

MinIO 企业对象存储 KMS 是一种高度可用的 KMS 实现,针对大型存储基础设施进行了优化,特别是针对 MinIO 进行了优化。它的设计具有以下主要目标:

  • 可预测的行为:MinIO 的企业 KMS 旨在易于管理,使操作员能够直观地理解其状态。由于其更简单的设计,MinIO 的企业 KMS 比依赖更复杂的共识算法(如 Raft 或 Paxos)的类似解决方案更容易操作。

  • 高可用性和容错性:在大规模系统的动态环境中,网络或节点中断是不可避免的。关闭集群进行维护很少可行。MinIO 的企业 KMS 确保了不间断的可用性,即使面临此类中断,也可减轻可能破坏整个存储基础架构的级联效应。对于常见工作负载,KMS 提供尽可能高的可用性。具体而言,您可能会丢失集群中除一个节点之外的所有节点,但仍会处理任何加密、解密或数据密钥生成请求。

  • 可扩展性:虽然数据量通常只会增加,但大规模存储系统的负载可能会不时发生显著变化。MinIO 的企业 KMS 支持动态集群大小调整,可以随时添加或删除节点,无需停机。

  • 一致性和高性能:在大规模存储基础架构上,数据是不断写入和读取的。企业级 KMS 的响应能力直接影响存储系统的整体效率和速度。KMS 节点在处理来自存储系统的此类请求时不必进行协调。因此,KMS 集群的性能随节点数量的增加呈线性增长。此外,MinIO 的企业 KMS 支持请求流水线,以处理每节点和每秒数十万次加密操作。

  • 多租户:大规模存储基础架构通常由整个组织中的许多应用程序和团队使用。将团队和组隔离到自己的命名空间中是一项核心要求。MinIO 的 Enterprise KMS 支持以围圈的形式命名空间。可以为每个租户分配自己的 enclave,该 enclave 完全独立,并与 KMS 集群上的所有其他 enclave 隔离。

KMS 可以在 Enterprise Console 或命令行中配置。

现在,让我们深入探讨 KMS 的运行方式,首先检查其基本安全模型,然后深入了解集群架构和管理,最后将其无缝集成到 MinIO 中。

安全模型

KMS 在(硬件)安全模块 (HSM) 上建立其基础信任,该模块在密封和解封 KMS 根加密密钥方面发挥着关键作用。HSM 的职责扩展到通过允许解封其加密的磁盘状态并促进 KMS 集群内节点之间的通信来保护 KMS 的完整性。

但是,HSM 是一个概念,不一定是实际的硬件设备。例如,可以使用云 HSM(如 AWS CloudHSM)或软件 HSM 来代替物理设备。KMS 实施自己的软件 HSM,优先考虑用户友好的实施和操作简单性。

在每个 MinIO KMS 服务器上设置单个环境变量就足以开始使用。例如:

export MINIO_KMS_HSM_KEY=hsm:aes256:vZ0DeGvwlb/KHwIfi8+c7/8ZHjweHKVL0WNrRc3+FxQ=

在单个 KMS 服务器上,所有数据都驻留在内存中或加密在磁盘上。但是,在运行分布式 KMS 集群时,节点必须交换消息。为了确保节点间通信的安全,KMS 使用双向 TLS,使用直接派生自 HSM 的密钥。因此,只有有权访问相同 HSM 的节点(例如共享相同的软件 HSM 密钥)才能通过节点间 API 建立通信。通过这种方式,HSM 具有双重目的,不仅作为整个系统的信任守护者,而且作为在节点间通信中建立信任的基石。

集群管理

KMS 集群是一种分布式系统,它使用单领导者同步复制将状态更改传播到所有集群节点,并根据投票选出领导者。它在概念上与 Raft 共识协议非常相似,但并不完全相同。它仍然严格一致,并为所有事件提供线性化。

但是,通过查看几个示例,可能更容易理解 KMS 的工作原理。运行 KMS 集群不需要加密或分布式系统方面的专业知识。

因此,让我们多动手一点,感受一下 KMS 集群的行为方式。在最简单的情况下,KMS 集群由单个节点组成。启动新的 KMS 服务器时,它会自动创建新的单节点集群。例如:

export MINIO_KMS_HSM_KEY=hsm:aes256:vZ0DeGvwlb/KHwIfi8+c7/8ZHjweHKVL0WNrRc3+FxQ

=

minkms server --addr :7373 /tmp/kms0

我们可以使用自动生成的 API 密钥以集群管理员身份向集群进行身份验证,并列出其所有节点。

export MINIO_KMS_API_KEY=k1:ThyYZWXUjlSOL-l5hldSgO49oQPWZezVZFU4aiejVoU

minkms ls

现在,我们已经启动并运行了第一个 KMS 集群,让我们为将来要使用的主密钥创建一个新的 enclave。如前所述,enclave 实现命名空间。一个 enclave 中的所有密钥都与驻留在其他 enclave 中的所有其他密钥完全隔离。

minkms add-enclave enclave-1

在 enclave 中,我们可以创建第一个主密钥并检查其状态

minkms add-key --enclave enclave-1 key-1

minkms stat-key --enclave enclave-1 key-1

到目前为止,我们只使用单个 KMS 服务器运行。现在,让我们将单节点集群从一个节点扩展到三个节点。因此,为了简单起见,我们将在同一台计算机上启动另外两个 KMS 服务器。

首先,第二台服务器:

export MINIO_KMS_HSM_KEY=hsm:aes256:vZ0DeGvwlb/KHwIfi8+c7/8ZHjweHKVL0WNrRc3+FxQ=minkms server --addr :7374 /tmp/kms1

然后是第 3 个:

export MINIO_KMS_HSM_KEY=hsm:aes256:vZ0DeGvwlb/KHwIfi8+c7/8ZHjweHKVL0WNrRc3+FxQ=minkms server --addr :7375 /tmp/kms2

现在,我们可以返回到初始的 KMS 单节点集群,并通过向其添加其他两个服务器来扩展它。因此,我们使用服务器的 IP 地址和端口号(或 DNS 名称和端口)。这里是 192.168.188.79,但这在您的机器上可能有所不同。使用服务器在启动时在控制台上打印的 IP 和端口。

minkms add 192.168.188.79:7374

minkms add 192.168.188.79:7375

当我们再次查询 KMS 集群的状态时,它会告诉我们它由三个节点组成 - 初始服务器和我们刚刚添加的两个节点。

minkms ls

现在我们已经将多个节点加入到一个集群中,所有节点是否都具有相同的状态?例如,节点 1 是否也能够为我们提供有关我们之前创建的 enclave enclave-1 中的密钥key-1的状态信息?我们可以通过直接询问节点来找出答案。此步骤同样取决于本地网络中使用的 IP 地址。进行相应调整。

MINIO_KMS_SERVER=192.168.188.79:7374 minkms stat-key --enclave enclave-1 key-1

当节点加入集群时,它们会接收整个 KMS 状态,并且只有在它们同步后才会被视为集群的一部分。因此,集群中的所有节点都是彼此的副本,并保存相同的数据。后台没有部分状态,也没有静默同步。这就是为什么 KMS 集群非常可预测的原因之一。它们不能不同步。

例如,我们可以关闭三台 KMS 服务器中的两台。从技术上讲,我们可以删除任何两个节点,但我们停止节点一和节点二。因此,我们不必调整MINIO_KMS_SERVER来确保与剩余的一个节点进行通信。完成后,我们可以再次列出群集节点。

minkms ls

正如预期的那样,三分之二的节点不可用。但是,我们仍然可以在剩余节点上查询 key-1 的状态。

minkms stat-key --enclave enclave-1 key-1

对于服务器以预期的输出进行响应,您可能不会感到惊讶。然而,其他 KMS 实现,例如使用 Raft 作为底层共识算法的实现,将无法响应,至少在不容忍过时和放弃强一致性的情况下无法响应。如果两个节点处于关闭状态,则三节点 Raft 集群通常被视为不可用,无法处理任何请求。主要区别在于,KMS 可以保持对所有读取请求的可用性,而不会削弱其一致性保证。幸运的是,大规模存储系统使用的大多数 KMS 操作不需要在 KMS 集群上更改状态,因此可以将其视为“只读”。因此,KMS 容错模型符合大规模存储系统对高可用性和可靠 KMS 的期望。这并非巧合。

但是,KMS 不能也不会规避 CAP 定理。尝试更改剩余节点的状态(例如通过创建第二个密钥)将失败。服务器无法接受写入操作,因为它可能会不同步。因此,我们必须先带回剩下的两个节点,然后才能创建新的主密钥。

然而,重要的是要认识到 KMS 在 CAP 定理的范围内运行,并且不能绕过其固有原则。任何更改剩余节点状态的尝试(例如创建第二个密钥)都将失败。服务器本质上被限制接受写入操作,以防止潜在的分歧和状态不一致。实际上,这意味着在创建新的主密钥之前,必须重新启动剩余的两个节点才能在集群内建立写入仲裁。

总结

我们的 Enterprise 和 Enterprise Lite 客户可以使用这项新功能,同时缩小攻击面,同时解决与数十亿个加密密钥相关的性能挑战。MinIO 企业对象存储 KMS 可以提供可预测的行为,即使在每秒每个节点数十万次加密操作的规模下,也能提供高可用性和容错能力。此外,KMS 还支持多租户,使每个租户都能分配自己的 enclave,该 enclave 完全独立,与 KMS 集群上的所有其他 enclave 隔离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/729169.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

内核模块的各种概念及示例

基本概念 (1)模块本身不被编译入内核映像,从而控制了内核镜像的大小。模块一旦insmod,它就和内核中的其他部分完全一样 (2)内核中已加载模块的信息也存在于/sys/module目录下;内核中将包含/sys/module/test_mod目录 (3)modprobe在加载某模…

单图创造虚拟世界只需10秒!斯坦福MIT联合发布WonderWorld:高质量交互生成

文章链接:https://arxiv.org/pdf/2406.09394 项目地址: https://WonderWorld-2024.github.io/ 本文介绍了一种新颖的框架—— WonderWorld,它可以进行交互式三维场景外推,使用户能够基于单张输入图像和用户指定的文本探索和塑造虚拟环境。尽…

Vue3插件安装

一、volar插件安装 volar:Vue文件的语法提示和高亮提醒。volar已经更名为Vue - Official,其安装步骤如下。 (1)打开vscode,点击扩展面板,在搜索窗口中输入volar,选择Vue - Official进行安装。 (2&#xff0…

ES 8.14 向量搜索优化

参考:https://blog.csdn.net/UbuntuTouch/article/details/139502650 检索器(standard、kNN 和 RRF) 检索器(retrievers)是搜索 API 中的一种新抽象概念,用于描述如何检索一组顶级文档。检索器被设计为可以…

安卓系统安装linux搭建随手服务器termux平替软件介绍

引言 旧手机丢可惜,可以用ZeroTermux(一款代替termux)的超级终端,来模拟Linux(甚至你可以模拟Win,只要性能够用) ps:此软件只是termux的增强版,相当于增加右边菜单&…

vue2 + Lodop 制作可视化设计页面 实现打印设计功能(一)

前言: 此功能的来源来自于当时需要制作一个便于客户操作的打印设计功能,然后就有了这个项目。这个帖子主要是用于分享与谈论,相互学习。 目标: 能在vue页面中拖拽组件支持批量操作拖动通过拖拽组件列表里的组件到page进行添加实…

物联网技术-第5章-物联网数据处理

目录 1.物联网数据特征 2.物联网数据处理 (1)数据清洗 (2)数据存储 (3)数据融合 (4)数据挖掘 3.大数据基本概念 4.云计算基本概念 (1)背景 &#xf…

leetcode 动态规划 (基础版) 下降路径最小和

题目: 题解: 这题和三角型路径和相似,但这题无法在像哪一题一样通过换一个方向逃避下标特判。所以这道题就写一个下标特判的方案。特殊的下标是每一行的第一个元素和最后一个元素,它们由头上的一个元素和左上和右上中的其中一个…

HTML(17)——圆角和盒子阴影

盒子模型——圆角 作用:设置元素的外边框为圆角 属性名:border-radius 属性值:数字px/百分比 也可以每个角设置不同的效果,从左上角顺时针开始赋值,没有取值的角与对角取值相同。 正圆 给正方形盒子设置圆角属性…

极验行为式验证码适配Harmony 鸿蒙SDK下载

现阶段,越来越多的开发者正在积极加入鸿蒙生态系统。随着更多开发者的参与,早在去年9月,极验就成为首批拥有鸿蒙NEXT内测版本和手机系统测试机会的验证码供应商。 为了提高各开发者及企业客户集成鸿蒙版本行为验4.0的效率,方便大家…

土壤墒情监测系统的工作原理

TH-TS600土壤墒情监测系统是一种能够实时、连续监测土壤湿度和水分状况的设备系统。以下是关于土壤墒情监测系统的详细介绍: 土壤墒情监测系统通常由以下几个部分组成:用于实时监测土壤湿度、温度等关键参数。传感器可以根据需要布置在不同的深度和位置…

OceanMind海睿思参与编写的《数据智能白皮书(2024年)》正式发布!

近日,由中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)牵头和组织,中新赛克海睿思作为TC601-WG16人工智能数据工作组合作伙伴参与编写的《数据智能白皮书(2024年)》正式发布。 中新赛克的卢云川、…

多波束测线问题

多波束测线问题 问题的背景是海洋测深技术,特别是涉及单波束测深和多波束测深系统。这些系统利用声波传播原理来测量水体深度。 单波束测深系统通过向海底发射声波信号并记录其返回时间来测量水深。该系统的特点是每次只有一个波束打到海底,因此数据分布…

秋招突击——6/17——复习{整理昨天的面试资料}——新作{删除链表倒数第n个节点}

文章目录 引言复习新作删除链表倒数第N个节点题目描述个人实现参考实现 总结 引言 主管面,面的很凄惨,不过无所谓了,我已经尽力了。上午都在整理的面经,没有复习算法,而且这两天要弄一下论文,二十号就要提…

小电流接地系统单向故障仿真分析

基于Matlab/simulink的小电流接地系统单向故障仿真分析,涵盖了中性点不接地系统仿真和中性点经消弧线圈接地系统仿真模型。 在电力系统中,接地方式的选择至关重要。小电流接地系统,也称为非有效接地系统,在发生单相接地故障时&am…

OSPF被动接口配置(华为)

#交换设备 OSPF被动接口配置 一、基本概念 OSPF被动接口,也称为抑制接口,即将路由器某一接口配置为被动接口后,该接口不会再接受和发送OSPF报文 二、使用场景 在路由器与终端相近或者直接相连的一侧配置被动接口 因为OSPF会定期发送报文…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后,终于通过聆讯,方舟云康控股有限公司(以下简称,方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是,亏损的难…

每日一题——Python代码实现PAT乙级1082 射击比赛(举一反三+思想解读+逐步优化)四千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码分析 代码步骤 时间复杂度分析 空间复杂度分析 总结 我要更强 时…

Redis精要

一、什么是缓存击穿、缓存穿透、缓存雪崩? 缓存穿透 【针对大量非法访问的请求,缓存中没有,直接访问DB】 缓存穿透指的查询缓存和数据库中都不存在的数据,这样每次请求直接打到数据库,就好像缓存不存在 一样。 对于系…

华测监测预警系统2.2 UserEdit.aspx SQL注入致RCE漏洞复现(CVE-2023-5827)

0x01 产品简介 华测监测预警系统2.2是一套针对地质灾害监测预警的科学、完善平台,实现了地质灾害防治管理的科学化、信息化、标准化和可视化。该系统由上海华测导航技术有限公司开发,主要服务于山体滑坡、地裂缝等地质灾害的自动化预警。 0x02 漏洞概述 华测监测预警系统2…
最新文章