安全容器在边缘计算场景下的实践

导读:随着云计算边界不断向边缘侧延展,传统 RunC 容器已无法满足用户对不可信、异构工作负载的运行安全诉求,边缘 Serverless、边缘服务网格等更是对容器安全隔离提出了严苛的要求。本文将介绍边缘计算场景如何构建安全运行时技术基座,以及安全容器在架构、网络、监控、日志、存储、以及 K8s API 兼容等方面的遇到的困难挑战和最佳实践。 

正文:

本文主要分为四个部分,首先前两个部分会分别介绍一下ACK安全沙箱容器和边缘容器(Edge Kubernetes),这两个方向内容目前大部分人接触并不是很多。第三部着重分享安全沙箱容器在边缘这边的解决方案与实践经验,最后会介绍一下我们在安全容器方向新的探索和实践-可信/机密计算。

安全容器运行时

据 Gartner 预测,2019 年一半以上的企业会在其开发和生产环境中使用容器部署应用,容器技术日趋成熟稳定,然而在未容器化的企业或用户中,42% 以上的受访者表示容器安全成为其容器化的最大障碍之一,主要包括容器运行时安全、镜像安全和数据安全加密等。

端到端的云原生安全架构

在讲安全沙箱容器之前简单介绍下端到端云原生安全架构,主要分为三部分:

1.基础架构安全

基础架构安全依赖于云厂商或者是专有云一些基础设施安全能力,也包括 RAM认证,细粒度RAM授权,支持审计能力等等。

2.安全软件供应链

这部分包括镜像签名,镜像扫描,安全合规等等,甚至包括有一些静态加密BYOK,DevSecOps,安全分发等。

3.容器运行时的安全

这部分包括安全沙箱隔离,还包括了容器运行时其它方面一些安全机制,如KMS(秘钥管理服务)集成、多租户的管理和隔离等等。

安全容器运行时对比

接下来分享下业界在安全容器运行时的一些方案对比,业界安全容器运行时分为四大类:

  • OS容器+安全机制

主要原理是在传统 OS 容器之上增加一些辅助安全辅助手段来增加安全性,如SELinux、AppArmor、Seccomp等,还有docker 19.03+可以让Docker运行在 Rootless 的模式之下,其实这些都是通过辅助的工具手段来增强OS容器的安全性,但依然没有解决容器与Host共享内核利用内核漏洞逃逸带来的安全隐患问题;而且这些安全访问控制工具对管理员认知和技能要求比较高,安全性也相对最差。

  • 用户态内核   

此类典型代表是 Google 的 gVisor,通过实现独立的用户态内核去补获和代理应用的所有系统调用,隔离非安全的系统调用,间接性达到安全目的,它是一种进程虚拟化增强。但系统调用的代理和过滤的这种机制,导致它的应用兼容性以及系统调用方面性能相对传统OS容器较差。由于并不支持 virt-io 等虚拟框架,扩展性较差,不支持设备热插拔。

  • Library OS

基于 LibOS 技术的这种安全容器运行时,比较有代表 UniKernel、Nabla-Containers,LibOS技术本质是针对应用对内核的一个深度裁剪和定制,需要把 LibOS 与应用编译打包在一起。因为需要打包拼在一起,本身兼容性比较差,应用和 LibOS 的捆绑编译和部署为传统的 DevOPS 带来挑战。

  • MicroVM

我们知道业界虚拟化(机)本身已经非常的成熟,MicroVM轻量虚拟化技术是对传统虚拟化的裁剪和,比较有代表性的就是 Kata-Containers、Firecracker,扩展能力非常优秀。VM GuestOS 包括内核均可自由定制,由于具备完整的OS和内核它的应用兼容性及其优秀;独立内核的好处是即便出现安全漏洞问题也会把安全影响范围限制到一个 VM 里面,当然它也有自己的缺点,Overhead 可能会略大一点,启动速度相对较慢一点。

完全杜绝安全问题的发生-不可能!

Linus Torvalds 曾在 2015年的 LinuxCon 上说过 "The only real solution to security is to admit that bugs happen, and then mitigate them by having multiple layers.” ,我们无法杜绝安全问题,软件总会有 Bug、Kernel 总会有漏洞,我们需要去面对这些现实问题,既然无法杜绝那我们需要就给它(应用)加上隔离层(沙箱)。

安全容器运行时选择

用户选择安全容器运行时需要考虑三方面:安全隔离、通用性以及资源效率。

  • 安全隔离

主要包括安全隔离和性能隔离。安全隔离主要是安全问题影响的范围,性能隔离主要是降低容器间的相互干扰和影响。

  • 通用性

通用性,首先是应用兼容性,应用是否可以在不修改或者小量修改的前提下运行在上面;其次是标准性兼容,包括 OCI 兼容、K8sAPI 兼容等;最后“生态”保证它可持续性和健壮性。

  • 资源效率

资源效率讲究更低 Overhead,更快的启动速度,更好的应用性能。

总结

其实目前没有任何一种容器运行时技术可以同时满足以上三点,而我们需要做的就是根据具体的场景和业务需求合理选择适合自己的容器运行时

在「资源效率」和「通用性」做的比较好的是传统的OS容器、runC等,但安全性最差;在「资源效率」和「安全隔离」做的比较好的是 UniKernel、gVisor 等,但应用兼容和通用性较差;在「安全隔离」和「通用性」方面做的比较的是 Kata-containers、Firecracker等,但 overhead 开销稍大启动速度稍慢,应用性能也相对传统OS容器较差。

ACK安全沙箱容器

我们阿里云容器服务 ACK 产品基于 Alibaba Cloud Sandbox 技术在 2019 年 09 月份推出了安全沙箱容器运行时的支持,它是在原有Docker容器之外提供的一种全新的容器运行时选项,它可以让应用运行在一个轻量虚拟机沙箱环境中,拥有独立的内核,具备更好的安全隔离能力,特别适合于多租户间负载隔离、对不可信应用隔离等场景。它在提升安全性的同时,对性能影响非常小,并且具备与Docker容器一样的用户体验,如日志、监控、弹性等。

对于我们场景来说,「安全性」和「通用性」是无疑最重要的,当然性能和效率我们也做了大量的优化:

    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值