论文部分内容阅读
平台即服务式云计算(PaaS)是将基础设施平台作为一种服务的商业模式。PaaS向租户提供平台环境,允许多个租户同时部署自己的云服务。由于其开放和多租户的特性,PaaS平台面临着安全隔离问题:恶意租户的代码可能会对平台自身或者其他租户应用造成危害。现有的PaaS平台支持Java、Python等多种语言,本文分析现有的针对PaaS平台上Python应用的安全解决方案,认为它们存在控制粒度过粗,兼容性差等问题,导致控制策略不灵活,租户应用代码迁移成本高。本文研究应用于PaaS平台,针对Python程序的安全沙箱,以解决平台上的安全隔离问题。本文提出一种在应用框架层对Python应用进行隔离监控的安全沙箱Opsandbox,为平台提供细粒度的访问控制功能。同时利用容器虚拟化技术Linux Containers(LXC),在PaaS平台上构建进程级沙箱,为平台提供底层防护,并支持部分资源限额功能。本文的主要工作和创新包括:1.研究了目前已有的解决方法,包括容器虚拟化技术、seccomp沙箱、精简解释器、PyPy项目、RePy项目以及PyXhon项目等解决方案。并分析了各自的优缺点,认为容器虚拟化技术、seccomp沙箱以及PyXhon存在监控粒度过粗的问题,而精简解释器、PyPy项目和RePy项目存在兼容性差的问题。2.研究并理解了Python解释器的工作原理。主要分析了Python执行引擎的工作方式,包括对若干关键结构体(PyCodeObject,PyFrameObject等)的研究、对指令(opcode)执行方式的研究、以及对模块和函数实现机制的研究等。此外,对Python的内存管理机制也做了一定研究。3.提出一种在应用框架层对Python应用进行细粒度控制的沙箱Opsandbox。Opsandbox通过修改Python程序的编译结果,向其插入Python解释器指令序列,使得Python程序在运行时能够自主执行安全检查。Opsandbox不修改解释器和库函数,对用户完全透明,具有较好的兼容性;同时能够对不同的代码应用不同的控制策略,实现细粒度的访问控制功能。4.借鉴AspectBox多层防御的思想,利用容器虚拟化技术Linux Containers(LXC)构建进程级沙箱,为平台提供底层防护,并支持部分资源限额功能。本文详细描述了沙箱系统的结构和实现细节,最后通过实验证明该沙箱系统的有效性。