当 Kubernetes 遇到机密计算,阿里巴巴如何保护容器内数据的安全?

时间:2020-09-09 19:00:37   收藏:0   阅读:47
技术图片

作者 | 贾之光(甲卓) 阿里巴巴高级开发工程师,专注于 Kubernetes 安全沙箱和机密计算领域,主要参与 Incalvare Containers 社区开发。

8 月 26 日,我们发起了第 6 期 SIG Cloud-Provider-Alibaba 网研会直播。本次直播主要介绍了机密计算的概况, InclavareContainers 开源项目架构、已支持的功能和迭代计划,以及阿里云 ACK-TEE 的发展现状和规划。

本文汇集了此次直播完整视频回顾及资料下载,并整理了直播过程中收集的问题和解答,希望能够对大家有所帮助~阿里巴巴云原生公众号后台回复“826”即可下载相关 PPT。

直播视频回顾链接:https://v.qq.com/x/page/z3143a6agsg.html

机密计算简介

1. 应用容器安全现状

技术图片

Portworx and Aqua Security 发布的《2019 容器接受度调研》报告显示,安全性成为了用户使用容器技术和业务上云面临的最大挑战,其中数据安全问题最为突出;根据 Risk Based Security 发布的数据泄露报告显示,2019 年数据泄露事件发生的数量和泄露的数据量与 2018 年相比均增加了 50%+。

2. 机密计算时代到来

技术图片

数据在整个生命周期有三种状态:At-Rest(静态)、In-Transit(传输中)和 In-Use(使用中)。

机密计算联盟给机密计算的定义是:机密计算是在一个基于硬件的可信执行环境(TEE)中保护数据执行计算。

机密计算的核心功能有:

在 2019 年 Gartner 的《计算基础设施成熟度曲线》中把机密计算也列入其中,虽然还处在早起阶段,这也说明机密计算开始逐步进入大家的视野并得到重视。

在 2020 年 Gartner的《云厂商本地安全解决方案比较》中,阿里云在 Trusted execution enviorments 中拿到一个 H,是因为 2020 年年初阿里云容器服务发布了机密计算产品 ACK-TEE,更多参考链接

3. 机密计算业务场景

技术图片

机密计算旨在保护敏感的代码和数据。业务场景有:区块链、秘钥管理、金融、AI、多方计算、数据租赁、边缘计算等。

以多方计算为例,不同用户或厂商之间相互共享数据以便计算挖掘出更大的数据经济价值,但不想把自己的数据泄露给对方。机密计算可以保护共享数据运行在受硬件保护的可信执行环境中,数据在内存中是加密的,从而保证数据不会被泄露。

4. 安全容器与机密计算的区别

技术图片

除了机密计算外,还有一个与安全相关的概念-安全容器。阿里云在安全容器和机密计算领域都有布局,虽然二者都与安全相关,但它们的定位和应用场景是不同的。

安全容器的定位是隔离,把恶意应用隔离起来,防止它出去对其他应用搞破坏。主要的应用场景有三类:

机密计算的定位是保护,保护应用不会被其他恶意应用进来窃取数据和搞破坏。应用场景是保护敏感代码和数据。

5. TEE 硬件平台

技术图片

支持 TEE 的硬件平台主要有 3 个:Intel SGX、ARM TrustZone 和 AMD SEV,它们有不同的应用场景和实现方式:

阿里云 ACK-TEE 和开源项目 Inclavare Containers 都是基于 Intel SGX 实现的机密计算。

6. Intel SGX 有更小的 TCB(Trusted Computing Base)

技术图片

按照普通方式部署敏感应用,应用会依赖操作系统、VMM、硬件甚至是云厂商,TCB 非常大,面临的***面也非常大。只要 TCB 中只要有一处遭到***,应用都有数据泄露和破坏的风险。

而把敏感应用部署在 Intel SGX 的 TEE 中,TCB 只有 CPU 和 TEE 本身。一方面***面变得很小,另一方面 TEE 的安全机制也会使应用更安全。

7. 基于 Intel SGX 的可信应用开发和使用流程

技术图片

Intel SGX 把应用分成了可信区和不可信区。用户可通过在 EDL(Enclave Definition Language)中定义可信区和不可信区以及用到的函数。这些函数用户可信区和不可信区之间的通信,分为 ECALL 和 OCALL。ECALL 用于不可信区访问可信区的数据,OCALL 用于可信区访问不可信区的数据。

基于 Intel SGX 的可信应用开发和使用流程如下:

Inclavare Containers 保护敏感应用和数据

1. Inclavare Containers 的目标和价值

技术图片

Inclavare,是 Enclave 一词的拉丁语词源,读音是 [?inklɑve?]。Enclave 指的是一种受保护的执行环境,能为其中的敏感和机密数据提供基于密钥学算法的强安全隔离,阻止不可信的实体访问用户的数字资产。

Inclavare Containers 是由阿里云操作系统安全团队和阿里云云原生容器服务团队主导,并联合了阿里经济体内多个研发团队(蚂蚁安全计算团队、云安全团队、语言 runtime 团队等)共同研发的面向机密计算场景的开源容器运行时技术栈。

当前机密计算在云原生场景中提供的技术,有很多缺陷和不足:

由于以上原因,非常不利用机密计算技术的普及和应用。而 Inclavare Containers 目的就是为业界提供一款面向机密计算领域的开源容器运行时引擎和安全架构,其价值在于:

2. Inclavare Containers 架构

技术图片

在介绍 Inclavare Containers 架构之前,先介绍一下架构中各个组件的作用:

Inclavare Containers 的工作流程如下:

  1. kubelet 向 Containerd 发起 CRI(Container Runtime Interface) 请求,比如请求创建一个 Pod
  2. Containerd 中有一个 cri-containerd 的插件实现了 CRI 接口,Containerd 接收到请求后,把请求转给 shim-rune
  3. shim-rune 既可以创建 runc 容器也可以创建 rune 容器。在创建 runc 和 rune 容器的处理流程也有差异:
    1. 创建 runc 容器:与创建普通 runc 容器过程完全一样,比如 Pod 的 pause 容器就是 runc 容器。
    2. 创建 rune 容器:利用 LibOS 把普通镜像转换成 TEE 镜像,rune 会在容器内创建 Enclave 并把应用运行在 Enclave 中。
  4. rune 加载 liberpal.so,用于 rune 与 LibOS 的通信。
  5. rune 把 Intel SGX 驱动载入容器内,并在容器内创建 1 号进程 init-runelet,再由 init-runelet 创建 Encalve。Enclave 是一个受 Intel SGX 保护的可信执行环境,Enclave 内包含:LibOS、语言 Runtime 和 应用本身。至此一个可信应用就运行起来了。

总结下来,Inclavare Containers 的特点有:

3. shim-rune 工作流程

技术图片

shim-rune 包含两部分 Core 和 Carrier,它们的作用分别是:

shim-rune 的工作流程为:

  1. 以容器镜像为输入,利用 LibOS 生成未签名的 Enclave 动态库;
  2. 从 Enclave 动态库中导出签名材料;
  3. 以签名材料为输入,请求签名服务进行签名,返回的内容有摘要文件和公钥;
  4. 生成签名的动态库;
  5. rune 加载签名的动态库,创建并启动 Enclave。

4. 客户端签名与服务端签名

技术图片

Inclavare Containers 支持客户端签名和服务端签名两种工作方式,两种工作方式的差异如下:

技术图片

相比客户端签名,服务端签名优点如下:

注意:每种 LibOS 对普通镜像也有一定要求,比如 Occlum 只支持 musl libc 而不支持 glibc,所以 glibc 应用需要改造为 musl libc 应用之后才能在 Inclavare Containers 中运行起来。

5. 多团队共建合作

技术图片

Inclavare Containers 项目是由多个团队共建合作而成的,各组件作用和团队分工如下:

6. Inclavare Containers 开源项目

技术图片

Inclavare Containers 是业界首个面向云原生的机密计算场景下的开源容器运行时技术栈,被阿里巴巴开源委员会评为重点开源项目。并且已经加入到官方机密计算 OCIRuntime 参考实现列表。

目前支持的功能有:

该项目每个月月底进行一次发布,面向社区提供 CentOS 和 Ubuntu 的 binary release,并对内提供 AliyunLinux 发行版本。

7. Inclavare Containers 里程碑

技术图片

技术图片

8. 2020 年机密计算技术业产业

技术图片

ACK-TEE

1. 简介

技术图片

ACK-TEE 于 2019 年 9 月立项

功能:

合作团队:阿里云容器服务团队、操作系统内核团队、云安全团队、蚂蚁安全团队和运行时语言团队

定位:云原生机密计算容器平台

使命:让天下没有难用的机密计算

产品原则:可信安全、易开发交付、标准开放、云原生

2. ACK-TEE 1.0

技术图片

ACK-TEE 1.0 于 2020 年 1 月份上线

目标用户群体:原生 SGX 用户

全新 K8s 托管集群形态:机密计算专用集群,支持 Intel SGX1。

复用 Managed K8s 已有能力,包括各种云产品集成,K8s 集群运维能力,降低 K8s 集群的运维复杂度;

支持 EPC 加密内存的管理和调度,降低用户使用 SGX 设备的复杂度。

3. ACK-TEE 2.0

技术图片

ACK-TEE2.0 计划在 2020 下半年上线

功能:支持原生应用在 TEE 中运行起来

目标用户:没有掌握机密计算技术但有数据安全需求的用户

方案

Q & A

Q1:这个依赖于 Intel 的芯片?为啥还需要单独找 Intel 申请密钥?
A1:Intel 芯片能保证应用执行在基于硬件的 Enclave (一种可信执行环境)中,保证应用的安全,但不能保证创建者一定是合法的。而在构建 Enclave 时我们会用 Intel 的秘钥对其签名,保证使用者是合法的。

Q2:Inclavare Containers 本质上是一个容器运行时实现吗?它能完全替代 Docker 容器运行时的场景吗?
A2:Inclavare Containers 是一个软件栈,它包含了 rune、shim-rune、runelet 等多个工具。其中 rune 是一个容器运行时,它是在 runc 代码基础上开发的。既可以运行普通 runc 容器,也可以跑有 Enclave 的容器。功能上说,可以替代 Docker 容器运行(runc)时,但最大的意义在于运行 Enclave 容器,保证代码和数据的安全。

Q3:应用的性能有多少影响,有做过类似的测试吗?
A3:Inclavare Containers 的重点是解决数据安全问题的。底层是基于 Intel SGX 的技术,目前 Intel SGX1 的 ECP 只有 128 MB 内存,相比原生容器应用的性能肯定会差很多。

Q4:所以理解下来,只把它用在最核心的需要 in-use 加密的地方,对吗?
A4:是的,保护 In-Use 代码和数据的安全是机密计算的最大价值。

Q5:ACK 现在有这个使用方法和 sample 吗?
A5:ACK?里有托管版“加密计算”,即分享里讲到的 ACK-TEE 1.0。但面向客户是?SGX 原生客户,需要客户自己基于 SGX 做应用改造和构造镜像。ACK-TEE?2.0 还在规划中,计划年底上线,会把 Inclavare Containers 的能力移植过来。我理解你是想要 ACK-TEE 2.0 的 sample 是吗?如果有兴趣,你可以按照 Inclavare Containers 0.3.0 的文档,搭建一个支持机密计算的 Kubernetes 集群。

关注阿里巴巴云原生公众号,后台回复?“826”?即可下载 PPT!

阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!