阿里云飞天分布式系统使用沙箱机制的经验总结

所属分类: 网站运营 / 建站经验 阅读数: 121
收藏 0 赞 0 分享

飞天项目的整体架构,最底层基础架构是由通用服务器组成的Linux集群,没有使用高端的服务器和存储。飞天提供功能的方式是通过服务的方式,下图中所有蓝色的框(指各类云计算服务)都是对外提供服务的窗口,但这里蓝色的框并不代表所有阿里云提供的服务,还有许多其他的服务没有包括。最上层,飞天项目是阿里云整个产品和服务的技术基础,上面是各种各样的应用。
飞天平台上强调的是做多租户,因为众所周知云计算带来的好处就是弹性,另外一个就是需要帮助大家降低成本。

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

主要的工作包括几个方面,一个是访问控制机制另一方面是安全沙箱.访问控制机制包括从盘古文件的访问、读取和认证机构,还有ODPS、OTS、OSS等系统基于飞天做,飞天会帮它们做所有上层的安全措施基础机制支撑工作。尤其是ODPS系统,其所有的访问控制机制和安全沙箱的系统,都是由飞天安全提供机制来支持的。
今天我们要讲的议题,首先会从攻击者的角度看一下云上的计算系统有哪些Attack Surfaces可以利用.然后看一下目前开源的产品,比较著名的产品从这个角度来看是如何解决安全问题的。以及linux系统提供了那些安全机制可供安全沙箱使用。最后,我们具体了解一下飞天安全沙箱的方案。
201622695857546.png (484×342)

首先,我们看一下典型的云计算环境中,为支撑用户代码的运行,从上到下的结构。通常为了让用户代码能够执行高级语言,我们都会有一层高级语言的虚拟机,比如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,上面的所有数据和密钥,对于入侵者来说都是可见的了。
接下来我们看一下,业内有一些做得比较好的安全产品,在安全方面沙箱方面如何解决的用户隔离问题。
2016226100106394.jpg (653×456)

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

对于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里面要有安全过虑。
 
前面做完了,基于现有的安全机制来说,至少可以认为在目前,可以直接使用的防护措施就这些了。
刚才我们看到了一些安全机制,接下来看看飞天安全在沙箱方面使用哪些机制?其实前面我们说的这些,该用的都用到了。
 2016226100215073.jpg (665×311)

飞天安全沙箱,是这样的一个系统。简单来看,这张图和我们之前的两张图有相似的地方。最终的方案,我们方案融合了前两个的优点。我们这一层的User code可以放到C语言下进行,Iibc可以有一些拦截。这个地方是基于IPC的,所以你在当前进程要做的破坏或者说做的事情,是无法影响到另一个进程的。最后是Linux container,我们有一层内核过滤机制来保证。
我们今天的分享还是比较聚焦的,就是讲沙箱和安全机制。我们看了一些业内主要的安全产品实现,以及它使用的安全机制。最后针对一个具体的案例-飞天安全沙箱,我们了解了该如何实现融合多种安全机制来实现与著名安全产品相同等级防护能力的安全沙箱。

更多精彩内容其他人还在看

医疗行业怎么做好网站建设?建站注意事项及经验

踏足互联网,医疗行业可以将自身优势资源整合到网站中去,为大家提供病理知识、在线咨询或者预约就诊服务等。那么如何做好医疗行业的网站建设呢?本期为大家分享一些在建站过程中需要注意的东西和建站经验,希望能给大家带来帮助
收藏 0 赞 0 分享

企业应该怎么策划自己的网站?规划网站注意事项总结

网站建设虽然是一个比较复杂的过程,包括网站策划、网页设计、程序开发、上传网页、发布网站等,那么企业应该怎么策划自己的网站?下面为大家介绍规划网站注意事项,来看看吧
收藏 0 赞 0 分享

大众点评网站的支付系统构建经验分享

大众点评网站的服务器端在迭代的同时保持了很好的扩展性和可用性,这里我们来看一下大众点评网站的支付系统构建经验分享,主要以大众点评的支付渠道网关系统为核心.
收藏 0 赞 0 分享

网易蜂巢的容器运维管理服务使用指南

网易蜂巢提供对Docker容器的警报和性能监控服务,通过图形化面板操作十分简洁,这里前提假设服务器端已经架设在容器中,那么接下来就让我们来看网易蜂巢的容器运维管理服务使用指南
收藏 0 赞 0 分享

为什么认为自助建站不适合SEO?自助建站工具搭建出来的网站对SEO的支持如何?

最近有一个做SEO优化朋友询问为什么自助建站做出来的网站排名很难做上去?自助建站工具搭建出来的网站真的适合SEO吗?本文将提供相关内容供大家了解,希望对大家有所帮助和启发
收藏 0 赞 0 分享

支持支付宝的高性价比美国VPS主机Pzea的购买及使用评测

Pzea一直是低价位VPS的人气之选,在美国三个大城市分别建有机房,且构建于KVM虚拟机之上,性能较为出众,接下来就为大家来分享一下这个支持支付宝的高性价比美国VPS主机Pzea的购买及使用评测
收藏 0 赞 0 分享

网站页面一定需要HTML静态化吗 实战说明静态化的必要性

很多刚开始运营网站的伙伴们都要知道网站内的页面需要进行URL优化吗?如设置静态化等,对此,本文就为大家解析一下网站静态化的必要性,有兴趣的朋友们可以了解下哦
收藏 0 赞 0 分享

移动端界面设计之尺寸基础知识学习

这篇文章主要为大家详细介绍了移动端界面设计之尺寸基础知识,通俗易懂的学习教程帮助大家了解关于移动端设计尺寸的相关知识,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

如何提高用户体验?优秀的用户体验需要遵守的十大准则

自己的网站做的很漂亮却依然没有排名,这是为什么呢?这个时候,你应该考虑你是否关注到用户体验?而如何提高用户体验又是你要考虑的问题了,本文将提供优秀的用户体验需要遵守的十大准则供大家了解,希望对大家有所帮助和启发
收藏 0 赞 0 分享

DoubleClick Ad Exchange Seller(adx) 为您的广告代码生成异步代码的方法

这篇文章主要介绍了DoubleClick Ad Exchange Seller(adx) 为您的广告代码生成异步代码的方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多