运行软件是我们大多数人在不经意间做的事情。我们在“本地”——我们自己的机器上运行,或者我们在云端——在别人的机器上运行。我们并不总是考虑这些差异意味着什么,或者我们对正在处理的数据的安全,甚至是对正在进行处理的软件的安全做出了哪些假设。具体来说,当您在系统(“主机”)上运行软件(“工作负载”)时,无论是在云端还是在您自己的本地,都有很多层。您通常看不到这些层,但它们确实存在。
这是一个您可能在标准云虚拟化架构中看到的层示例。不同的颜色代表“拥有”不同层或层组的不同实体。

这是一个类似的图表,描绘了标准云容器架构。和以前一样,每种不同的颜色代表一个层或层组的不同“所有者”。

这些所有者可能是非常不同的类型,从硬件供应商到 OEM 厂商,再到云服务提供商 (CSP),再到中间件供应商,再到操作系统供应商,再到应用程序供应商,再到您,工作负载所有者。对于您在每个主机上运行的每个工作负载,层的确切列表可能都不同。即使它们相同,层的实例版本也可能不同,无论是不同的 BIOS 版本、不同的引导加载程序、不同的内核版本还是其他任何东西。
现在,在许多情况下,您可能不会担心这一点,您的 CSP 会尽力将这些层及其版本详细信息从您那里抽象出来。但这是一篇安全文章,是为安全人员准备的,这意味着任何阅读本文的人可能都会关心。
我们关心的原因不仅仅是不同的版本和不同的层,还有我们需要信任的不同事物——和不同实体——的数量,如果我们想在这些类型的堆栈上愉快地运行任何类型的敏感工作负载的话。我需要信任每一层,以及每一层的所有者,不仅要相信他们会做他们所说的事情,还要相信他们不会被攻破。当涉及到运行我的敏感工作负载时,这是一个很大的延伸。
什么是 Enarx?
Enarx 是一个新项目,旨在解决必须信任所有这些层的问题。我们在 Red Hat 的一些人已经为此工作了几个月。我的同事 Nathaniel McCallum 在波士顿的 Red Hat Summit 2019 上演示了它的早期版本,我们已准备好向世界宣布它。我们有代码,我们有一个演示,我们有一个 GitHub 存储库,我们有一个徽标:一个项目还能想要什么?嗯,人——但我们稍后会谈到。

使用 Enarx,我们做出了决定,我们希望允许运行工作负载的人能够将他们需要信任的层和所有者的数量减少到绝对最小值。我们计划使用可信执行环境(“TEE”——参见“哦,我多么喜欢我的 TEE(或者我真的喜欢吗?)”)来提供一个看起来更像这样的架构

在这样的世界中,您必须信任 CPU 和固件,并且您需要信任一些中间件(Enarx 是其中的一部分),但您不需要信任所有其他层,因为我们将利用 TEE 的功能来确保应用程序的完整性和机密性。Enarx 项目将提供 TEE 的证明,以便您知道您正在真正的、受信任的 TEE 上运行,并将提供开源的、可审计的代码来帮助您信任直接位于您的应用程序下方的层。
初始代码已经发布——目前正在 AMD 的 SEV TEE 上工作——并且现在已经有足够的部分可以工作,我们准备告诉您它了。
确保您的应用程序满足您自己的安全要求取决于您自己。 :-)
如何了解更多?
了解更多信息的最简单方法是访问 Enarx GitHub。
我们将在那里添加更多信息——目前只有代码——但请耐心等待:目前我们项目中只有少数人。博客是我们想要拥有的事物列表中的一项,但我们想让事情开始。
我们很乐意让社区中的人参与到项目中来。它目前相当底层,需要相当多的知识才能运行,但我们会努力改进这一点。当然,您需要一些特定的硬件才能使其工作。哦,如果您是早期启动或底层 KVM 黑客,我们特别有兴趣听取您的意见。
我当然会回复对本文的评论。
本文最初发表在 Alice, Eve, and Bob 上,并经作者许可转载。
2 条评论