李雪峰:云计算安全体系中的沙箱机制和技术剖析

标签: 阿里云课堂 | 发表时间:2014-10-28 10:47 | 作者:阿里云技术团队
出处:http://blog.aliyun.com

10月25日,阿里云课堂第二期在上海开课,“云安全架构设计与实践”主题分享在众多朋友的期待下精彩上演,现场观众再次爆满。本次活动中,李雪峰(花名:虚舟)和杨孟哲(花名:孟哲)两位安全专家为大家献上了精彩演讲,并在OpenSpace环节与观众展开讨论,积极互动。应广大用户要求,我们将云课堂讲师现场分享内容全文整理出来,供大家参考。阿里云课堂会继续在全国各地陆续开课,欢迎大家继续支持!

 

以下为讲师李雪峰(虚舟)的分享内容:

 

一、背景介绍
这张图是飞天的体系结构介绍。整个的飞天系统,最基础的两大系统,盘古和伏羲。如果大家之前了解过这方面的资料,应该对这张图非常熟悉。飞天基础系统上承载着多个云产品,ECS/SLB、OSS、OTS、OSPS、包括ODPS的系统。安全机制在飞天及飞天承载的云产品中起着至关重要的作用。

 

1

 

 

主要的工作包括几个方面,一个是访问控制机制另一方面是安全沙箱.访问控制机制包括从盘古文件的访问、读取和认证机构,还有ODPS、OTS、OSS等系统基于飞天做,飞天会帮它们做所有上层的安全措施基础机制支撑工作。尤其是ODPS系统,其所有的访问控制机制和安全沙箱的系统,都是由飞天安全提供机制来支持的。

 
今天我们要讲的议题,首先会从攻击者的角度看一下云上的计算系统有哪些Attack Surfaces可以利用.然后看一下目前开源的产品,比较著名的产品从这个角度来看是如何解决安全问题的。以及linux系统提供了那些安全机制可供安全沙箱使用。最后,我们具体了解一下飞天安全沙箱的方案。

 

2

 

首先,我们看一下典型的云计算环境中,为支撑用户代码的运行,从上到下的结构。通常为了让用户代码能够执行高级语言,我们都会有一层高级语言的虚拟机,比如JVM,Cpython。我们以后有些系统会跑JS,这里对应的是V8。这些虚拟器通常是C语言来开发的,相对来说是一个独立的系统,再下一层是Libc的库,这个对应的是C语言的so。再往下一层是LinuxKernel。再往下其实还有,如果是说这个系统用的是虚机,往下还会有物理机,本次分享不讨论这个问题。对于这样的系统来说,如果User code的恶意代码,为了拿到Linux Kernel的root权限需要一步步的渗透。入侵者如果想要到达最终目标,首先要突破高级语言虚拟机的安全防护,比如Java的SecurityManager机制。不过根据最近几年的漏洞情况判断, JVM安全沙箱对入侵来说是并没有太大的难度,可以假定一定会被突破。通过JVM提供的Navtive调用,它可以直接调用到Libc。Libc对入侵者来说,主要目的是要拿到当前进程的权限。最后一层是Linux Kernel,我们在云计算平台上来说,跑用户代码的进程不会是root,大家想像一下也知道,root不会给最终用户区跑这个代码的。当入侵者真的通过前基层的安全防护机制,并成功攻破root权限,那么这台机器已经被他控制在手里了。我们可以想像一下,在云计算这样一个集群里面,我们通常来说会跑成千上万的实例,如果我们把这个实例数放到最大,这样的代码被执行完之后,是不是整个集群所有机器的权限都可以拿到了。这是非常可怕的事情。就算我们在某一方面可以控制用户提交数量,云计算平台上通常会使用相同一台机器同时处理多个用户,如果有一台机器被用户集权到root,上面的所有数据和密钥,对于入侵者来说都是可见的了。

 
接下来我们看一下,业内有一些做得比较好的安全产品,在安全方面沙箱方面如何解决的用户隔离问题。

3

 

 

首先我们看一下Docker目前使用哪些机制,这张图主要是使用了三个纬度,有两个纬度产生了LXC,使用了Namespaces,Namespaces它可以在多个方面实现一定的隔离能力。这个能力需要在2.6.x以后才能部分开始使用。Cgroups机制保证操作系统资源的合理管理。另外,Docker启用了AUSF的分层文件系统。传统文件系统,我们可以认为是纵向的文件系统,你写哪个文件,这个文件一直到硬件,而AUSF是可以进行叠加的。一层层的文件夹叠加,会映射成一个相同的文件夹。Docker里面,最下面的image用来做系统环境,中间会做APP,最上面是用户运行期的东西,这些东西会被Docker封装成一层层,实现了类似于集装箱式的部署能力。

 

4

 

 

对于Docker来说,对一个攻击者来说,眼中看到的Docker应用有哪些东西?从刚才的图上也是类似的,整个系统有一个Docker container,右边是DockerEngine。如果你在Docker上直接部署C进程,下面两层就是C的程序。对于恶意用户来说,如果想得到所在机器的root权限,要突破你在Iibc上做的措施,还需要突破kernel中seccomp-bpf,这是kernel提供的一个安全机制,允许你定义某一个进程所能进行的系统过滤。第二、第三层攻破,seccomp-bpf可以进行额外的安全判断。你如果把这个也突破了,其实这台机器也直接root掉了。

 

接下来我们看google chrome的沙箱。Chrome使用过SUID/Namespaces sandbox,这也是对linx container机制的利用。使用过seccomp-legacy。在没有seccomp-bpf之前google使用seccomp-legacy。seccomp-legacy使用限制非常大。也同样使用过seccomp-bpf。

 
我们刚才看了两个业内的安全产品,可以简单的总结一下,对于沙箱来说,我们有哪些安全机制可以使用?参考这张图,首先对于JVM来说,我们可以用Java security Manager 以及 Classloader机制。如果是Linux Kernel,那么我们还可以直接利用Kernel Namespaces,Cgroup ,Chroot、umount。这些东西在LXC已经封装好了可以用,而且通常它们在一起使用才可以产生比较好的效果。然后是aufs,2.6才开始支持。Seccomp-bpf是3.5,如果版本不够你就要使用其他方案来做内核层的一些过滤了。

 
另外一个角度,对云计算上的安全沙箱来说有哪些层次可以做防御?JVM内的防御是否有必要?Java的安全沙箱攻破的难度不是很大,它是不是不要了?刚才我们说了,安全沙箱没有绝对安全的设计,如何在安全上做到尽可能可靠的防护?多层防御可以有效提高安全防护能力。

 
第二是进层隔离,用于提供安全机制。

 
第三层要在kernel space里面要有安全过虑。

 

前面做完了,基于现有的安全机制来说,至少可以认为在目前,可以直接使用的防护措施就这些了。

 
刚才我们看到了一些安全机制,接下来看看飞天安全在沙箱方面使用哪些机制?其实前面我们说的这些,该用的都用到了。

 

5

 

 

飞天安全沙箱,是这样的一个系统。简单来看,这张图和我们之前的两张图有相似的地方。最终的方案,我们方案融合了前两个的优点。我们这一层的User code可以放到C语言下进行,Iibc可以有一些拦截。这个地方是基于IPC的,所以你在当前进程要做的破坏或者说做的事情,是无法影响到另一个进程的。最后是Linux container,我们有一层内核过滤机制来保证。

 
我们今天的分享还是比较聚焦的,就是讲沙箱和安全机制。我们看了一些业内主要的安全产品实现,以及它使用的安全机制。最后针对一个具体的案例-飞天安全沙箱,我们了解了该如何实现融合多种安全机制来实现与著名安全产品相同等级防护能力的安全沙箱。

相关 [李雪峰 云计算 安全] 推荐:

李雪峰:云计算安全体系中的沙箱机制和技术剖析

- - 阿里云产品博客
10月25日,阿里云课堂第二期在上海开课,“云安全架构设计与实践”主题分享在众多朋友的期待下精彩上演,现场观众再次爆满. 本次活动中,李雪峰(花名:虚舟)和杨孟哲(花名:孟哲)两位安全专家为大家献上了精彩演讲,并在OpenSpace环节与观众展开讨论,积极互动. 应广大用户要求,我们将云课堂讲师现场分享内容全文整理出来,供大家参考.

再看云计算是否安全

- - 博客 - 伯乐在线
Amazon的AWS云计算服务又宕机了,这是6月份的第二次. 和其它的宕机事件一样,又引发了大家对云计算安全性的质疑. 其它的云计算服务比如windows azure 或google的gmail服务的宕机也时有发生. 老是出问题好像不太符合云计算的吹捧的高安全性呀. 那么云计算的安全性到底如何,做为那些正在准备引入云计算的公司,是否需要需要再考虑考虑呢.

理解云计算

- 车东 - oneoo's 私家花园
  现在互联网最热门的关键字“云计算”,大大小小的公司纷纷加入到这块领域. 简单来说,目前的“云计算”主要分为:SaaS、PaaS和IaaS三大类.   其中SaaS云计算,为软件即服务的概念. 把传统客户端软件部署在互联网上,用户只需要一个浏览器就可以使用到软件的模式. 其实早在2000年就已经有B/S结构的软件服务,与现在所说的SaaS云计算相近,但此前的B/S结构软件服务,数据库等服务端是需要用户自行部署的,而非由软件提供商进行统一部署.

10问云计算

- - 《商业价值》杂志
与数百位关注和实践云计算的CIO们共同解读云计算热点问题. 被视作IT界第三次革命的云计算,已经从炙手可热的概念逐渐走向了实际应用. 2011年8-11月, ITValue社区联合英特尔公司,与数百位关注和实践云计算的CIO们一起展开深入探讨,话题涉及云计算的商业价值、安全性、开放性、高效性、简单性等方面.

云计算的困局

- Star Ocean - It Talks--上海魏武挥的博客
有个媒体朋友打电话咨询我一个事. 说在江浙一带,有一位搞国际货运代理的民营企业家,想利用云计算来整合各种资源,比如运输车队、仓库、集装箱乃至货船. 这些资源的调配信息对任何一家从事外贸的企业都很重要,如果将这些信息放在所谓的“云”上,并加以运算,这些企业再以各种设备联入这个“云”,这位企业家觉得是一个很有前途的买卖.

开源云计算ERP ErpCore

- Le - 开源中国社区最新软件
  ErpCore是一套强大的云计算ERP开发框架,集数据库设计、软件建模、模型自动生成、界面可视化设计、业务流可自定义、全自动生成用户所需系统于一体. 在此框架上扩展出所有行业的业务系统,它让软件工程师从“建模——写代码——测试”所有繁琐重复的工作变为全自动化生成,大大简化了企业软件的开发时间和成本;同时,使用该框架扩展的所有业务子系统能够无缝连接进行数据共享,这也是云计算ERP的实现基础,杜绝了传统ERP的子.

“云计算”是什么?

- Aaron Xu - 译言-每日精品译文推荐
  作者:Eleanor Miller . 发布日期:2011年10月28日,上午10点28分.        人们都在聊“云计算”,预测人士称,到2010年,云计算创造的市场总值将达到2亿4100万美元.        但是云计算究竟是什么呢.        云计算意味着可以把计算用作服务,而不是用作商品.

谁来拯救云计算?

- - 雷锋网
当前的“云计算”一词已经被神话,似乎快成了放之四海皆准的时髦真理,就好比当初言必称“希腊”一般,表面光芒四射,但实际上却无比教条、且越来越令人生厌. 作为“云计算”的一个普通开发者和是推广者,很有必要通过亲身实践,以正视听,希望能让后来者(云计算系统的开发者)少走弯路——有所为、有所不为. 我们所要谈论的不是商业领袖们所热衷的云计算概念、云计算市场,而是讨论技术人员眼中云计算具体形态和切实的实现办法.

中小银行的云计算后台

- Draven - 每日鲜果精选
城市商业银行规模虽小,但对IT的需求却与大银行没有太大差别. 云计算给了他们解决这一矛盾的思路. 中国的中小银行一直以来都有一个尴尬的现实——虽然规模小,业务却大而全. 因此,中小银行对IT系统的要求,与大型银行几乎差别不大. 但是从资源和实力上来讲,中小银行却与大银行相差甚远. 根据易观国际的统计,2010年我国城市商业银行等区域性银行的IT投入是41.8亿元,2011年将达到47.7亿元.

2011云计算展望(图解)

- Zhaojing - 南都周刊