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

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

一、背景介绍

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

P47M18IJ80ZR

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

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

UTL7X6A9BL4E

首先,我们看一下典型的云计算环境中,为支撑用户代码的运行,从上到下的结构。通常为了让用户代码能够执行高级语言,我们都会有一层高级语言的虚拟机,比如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,上面的所有数据和密钥,对于入侵者来说都是可见的了。

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

GIH68RX04WJY

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

B9ODC3VH79F1

对于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里面要有安全过虑。

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

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

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

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

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-07-31 09:15:00
5G资讯 NB-IoT将成为未来5G物联网主流技术
日前,我国完成了IMT-2020(5G)候选技术方案的完整提交。据悉,在提交的方案中,NB-IoT技术被正式纳入5G候选技术集合,预计2020年6月ITU将正式宣布5G技术方案的诞生。而NB <详情>
2019-07-29 17:29:15
边缘计算 边缘计算:智慧城市建设的新生力量
根据市场调研机构IDC预测,到2020年,将有超过500亿个终端与设备联网。不断增长的数据催生出边缘计算的需求,未来超过50%的数据需要在网络边缘侧分析、处理和储存。另外,5 <详情>
2019-07-28 15:33:06
5G资讯 诺基亚二季度销售额稳步增长 已获45个5G商业合同
诺基亚总裁、首席执行官苏立(Rajeev Suri)表示:诺基亚第二季度业绩表现强劲,主要得益于持续上扬的5G需求、极具竞争力的端到端解决方案,以及不断强化的运营执行力度。 <详情>
2019-07-27 14:37:53
云技术 企业上云:技术+硬件双管齐下
任何技术诞生的背后,都凝聚着开发者辛勤的汗水。在鼓励发明创造、支持创新创业的今天,许多新技术的加速涌现,为我国金融贸易、文化教育等行业的发展注入了新的动力,其中 <详情>
2019-07-26 08:59:38
云技术 云计算领域“集装箱” 容器技术正成为企业新宠
十年前,很多企业还把云计算当做一种很遥远的未来技术,但到了今天,几乎没有人会质疑“上云”的重要性。 <详情>