洞见RSA2022 | 使用Marblerun在Kubernetes上进行可扩展的机密计算

2022年RSA大会已经结束,其主题“Transform(转型)”的提出,进一步引导企业思考其生产力、业务发展方向应如何顺应当前所追求的数字经济和环保节能,特别是传统IT模式逐步往云环境切换已经是大势所趋。那云环境应如何实现安全可控呢?机密计算是很好的探索。

如何基于Kubernetes云的环境下实现机密计算?在当前云环境越来越多的情况下,其机密性越来越重要,相信在不久的将来也许会成为云安全建设的一个重要部分。下面我们主要分析下基于marblerun的机密计算。

一、背景

数据安全的三大支柱分别是保护静态数据、传输中数据和使用中数据。其中,静态加密和传输中的数据加密,大家都很熟悉。但是随着企业业务上云,我们面临的最大挑战之一就是如何保护使用中的数据,即在保持敏感数据的同时,还能保持数据的私有状态。之所以保护使用中的数据特别困难,原因在于应用程序需要明文数据(未经加密或其他方式保护的数据)才能进行计算,这意味着恶意软件可以转存内存中的内容以窃取信息。如果数据在内存中被泄露,服务器硬盘上的数据加密就变得不再重要。

正因如此,机密计算(Confidential Computing)的概念诞生了。2019年,机密计算首次被Gartner列入《2019年云安全技术成熟度曲线报告》。2020年,机密计算仍是Gartner云安全成熟度曲线上的33种技术之一。

2017年,微软宣布推出名为“机密计算”的Azure云平台的新功能。该功能允许在Azure上运行的应用程序中,在静态、传输中和内存计算时都能保持数据加密。在实现方式上,微软的机密计算有两种模式:一种是基于虚拟机,另一种则使用英特尔推出的Skylake-SP Xeon处理器中的SGX(软件防护扩展)功能。

谷歌云(Google Cloud)也推出了一款基于机密计算的安全产品——“可保密虚拟机”(Confidential VMs)。这种新型的虚拟机可以利用谷歌的加密计算,实现对静止状态和内存内数据的保密。根据谷歌云的介绍,机密虚拟机建立在第二代AMD芯片EPYC处理器上,通过较低的计算能力为客户加密数据以完成机密计算,客户能够以加密的方式在谷歌云上运行其工作负载。

在国内,阿里云是亚太区第一个推出基于SGX((Software Guard Extensions )加密计算的云服务商。2017年,阿里云与英特尔联合发布了基于芯片级的SGX加密计算技术,保障云上客户数据安全。基于Intel SGX加密计算技术,阿里云为云上客户提供了系统运行时的可信能力。云上开发者可以利用SGX技术提供的可信执行环境,将内存中的关键代码和数据保护起来。

二、Marblerun介绍

机密计算通过在基于硬件的安全Enclave中执行计算来保护使用中的数据。迄今为止,最突出的飞跃可能是英特尔SGX。Enclave防止在使用过程中对应用程序和数据进行未经授权的访问或修改,从而提高了对管理敏感和受监管数据组织的安全保障。

1、MarbleRun相关概念

MarbleRun是一个用于创建分布式机密计算应用程序的框架。使用EGo或其他运行时构建企业的机密微服务,使用支持SGX集群上的Kubernetes分发它们,并让MarbleRun处理其余的事务。部署端到端安全且可验证的AI管道,或处理云中的敏感大数据,大规模保密计算从未如此简单。

MarbleRun保证分布式应用程序的拓扑符合简单JSON中指定的清单。MarbleRun验证服务的完整性并引导它们,在其中建立加密连接。如果节点失败,MarbleRun将根据清单中定义的规则进行无缝替换。简单起见,MarbleRun为企业的整个分布式应用程序发布一个简洁的远程认证声明,任何人都可以使用它来验证分布式应用程序的完整性。

主要特征:

(1)基于清单的微服务认证和完整性验证

(2)微服务的机密管理

(3)证书、配置和参数的设置

(4)整个集群的远程认证

2、MarbleRun思路

2.1基于Intel SGX的硬件保障

基于SGX(Intel software guard extensions),旨在以硬件安全为强制性保障,不依赖于固件和软件的安全状态,提供用户空间的可信执行环境,可以增强软件的安全性。通过一组新的指令集扩展与访问控制机制,实现不同程序间的隔离运行,保障用户关键代码和数据的机密性与完整性不受恶意软件的破坏。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的enclave也可以理解为一个可信执行环境TEE(Trusted Execution Environment)。SGX中一个CPU可以运行多个安全enclaves,并发执行亦可。借助Intel处理器的SGX技术,通过CPU的硬件模式切换,系统进行可信模式执行,只使用必需的硬件构成一个完全隔离的特权模式,加载一个极小的微内核操作系统支持任务调度,完成身份认证。

2.2利用Ego构建微服务

EGo是在Go中构建机密应用程序的框架。机密应用程序在称为enclaves的安全执行环境中运行。Enclave是高度隔离、运行时加密和可证明的。可以在具有SGX(软件保护扩展)功能的英特尔处理器上创建Enclave。本质上,EGo允许您在enclave内运行任何Go程序,而无需修改。从Enclave中受益的应用程序通常是处理加密密钥或支付数据等敏感数据的服务器应用程序。HashiCorp Vault就是此类应用程序的一个很好的例子。EGo的目标是弥合云计算与保密计算之间的鸿沟。EGo的哲学是尽可能多地避开enclave的细节。从根本上讲,使用EGo构建和运行enclave就像使用普通Go构建和运行应用程序一样简单。

2.3MarblerRun主要结构

从逻辑上讲,MarblerRun由两部分组成,控制平面称为Coordinator ,数据平面称为Marbles。Coordinator 需要在集群中部署一次,Marbler层需要与每个服务集成。MarblerRun配置了一个名为manifest的简单JSON文档。它指定分布式应用程序的拓扑、基础结构属性,并为每个服务提供配置参数。

Coordinator是MarbleRun的控制平面。它通过gRPC与大理石的数据平面通信,并在客户端提供HTTP REST接口。Marbles是MarblerRun的数据平面,再安全的enclaves中运行你的应用程序代码,而不是在其他常规Docker容器中。Marbles通过TLS或者gRPC与Coordinator通信。

2.4MarblerRun对服务网格的支持

服务网格是一个基础结构层,用于管理、观察和保护基于容器的集群中的通信。在Kubernetes世界中,Istio、HashiCorp Consult和Linkerd是最流行的通用服务网格。当我们开始研究机密微服务的概念时,我们意识到在机密计算的上下文中,服务网格还有其他挑战和要求。

大多数通用服务网格都是使用所谓的边车实现的。最流行的配角可能是特使。本质上,边车是注入到运行应用程序容器的吊舱中的网络代理。边车观察、控制并经常加密应用程序容器之间的网络通信。相对于所谓的控制平面,边车通常被称为数据平面。控制平面管理和配置边车以路由流量、实施策略和收集统计数据。

在安全方面,传统的服务网格侧重于保护应用程序容器之间传输的数据。相比之下,分布式机密应用程序需要更全面的方法和对安全影响的仔细考虑。

MarblerRun没有依赖于单独的边车,而是将数据平面逻辑直接注入到安全Enclave内运行的应用程序逻辑中。通过这种紧密耦合,安全连接始终在安全Enclave内终止。

在引导Marble之前,MarblerRun会使用Intel SGX远程认证原语验证其完整性。通过这种方式,MarbleRun能够保证分布式机密应用程序的拓扑符合集群的有效清单。这样的清单是在简单的JSON中定义的,只需设置一次。

MarbleRun充当所有基于Marble的服务的证书颁发机构,并为整个集群发布一条简明的远程认证语句。任何人都可以使用它来验证分布式机密应用程序的完整性。

三、总结

随着云的快速发展,数据机密性的要求也会越来越高,MarblerRun为云上数据机密计算提供了一个非常好的方案。同时,作为安全厂商,怎么在使用了机密计算的云环境中进行安全检测,也对我们是一个挑战。

版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。

Spread the word. Share this post!

Meet The Author