阿里云课堂:云安全的架构设计与实践之旅

  • 黄丹

2014 年 10 月 28 日

话题:安全阿里巴巴语言 & 开发架构阿里云

10 月 25 日下午,阿里云课堂第二期《云安全的架构设计与实践》在上海光大会展中心国际大酒店举行。此次公开课试图让更多的开发者深入了解到云安全架构那些事儿。当然云安全的架构设计背后有大量的技术积累做支撑,远非几个小时的分享交流就能剖析清楚。未来几个月,阿里云还将与 InfoQ 等技术媒体社区携手在全国 12 个城市开展阿里云技术公开课,通过与讲师面对面地交流,使开发者真正了解云计算、更深入地用好云计算。虽然阿里云课堂的步调稍晚,但是我们会用心走好每一步,欢迎关注阿里云公开课,希望我们不要再错过!

本期公开课我们邀请到阿里云飞天系统两位资深安全技术专家李雪峰(花名虚舟)和杨孟哲(花名孟哲);两位讲师分别就《云计算安全体系中的沙箱机制和技术剖析》、《云平台安全访问控制的设计与实现揭秘》这两个话题进行了分享。本文将对这两个分享做下简单的回顾。

主题一:云计算安全体系中的沙箱机制和技术剖析

飞天安全平台技术专家李雪峰重点介绍了阿里飞天的体系结构,主要包括两大块,一块是盘古系统,还有一个是伏羲系统。如下图,图上有 ECS/SLB、OSS、OTS、OSPS、包括 ODPS 的系统。

所有的飞天访问控制机制,包括从盘古文件的访问、读取和认证机构、 ODPS、OTS、OSS 等系统基于飞天做,飞天会帮它们做所有上层的安全措施基础机制支撑工作。目前比较重要的是 ODPS 系统,在 ODPS 里面所有的访问控制机制和安全沙箱的系统,都是基于整个飞天的下层安全机制打造的。这也是我们今天所要分享的主题,主要从以下几个方面来探讨:

第一,从攻击者的角度看一下云上的系统有哪些 Attack Surfaces 可以利用;

第二,看目前开源的产品,比较著名的产品是如何进行防,以及做哪些工作的;

第三,了解目前 Mechanisms 系统可以为我们做哪些安全机制;

第四,安全沙箱所做的安全解决方案。

首先,雪峰用一张图展示了典型的云计算环境。如图:从上到下,通常来说用户代码第一层进行执行,再下一层是 Libc 的库,这个对应的是 C 语言的 SO。再往下一层是 Linux Kernel。入侵者如果想要到达最终目标,首先要突破第二层的安全防护,当入侵者写了一个代码上传到云空间站,它有非常大的概率,如果说它想去渗透你的主机和平台,对于本地语言,也就是虚机里面所提供的,它可以直接供给到 Iibc。到了 Iibc,对典型的云计算环境,我们会有自己的安全实现,会在里面做一些安全的加强工作。Iibc 对入侵者来说,主要目的是要拿到当前进程的情况。

接下来雪峰以目前比较火的 Docker 为例,讲解了 Docker 的安全防御机制。对于 Docker 来说,整个系统有一个 Docker container,右边是 DockerEngine。如果你在 Docker 上直接布 C 进程,下面两层是 C 的程序。对于恶意用户来说,如果想到到所在及其的 root 权限,要突破你在 Iibc 上做的措施,然后有一个 seccomp-bpf,这实际是一个安全机制,允许你定义某一个进程所能进行的系统过滤。第二、第三层攻破,seccomp-bpf 可以进行额外的安全判断。你如果把这个也突破了,其实这台机器也直接 root 掉了。

安全沙箱没有绝对安全的设计,如何在安全上做到最高层次的保证?雪峰提到,主要做到以下两点:

  1. 进层隔离,就是提供安全机制。
  2. 在 kernel space 里面安全过虑。

总体来说,本次分享还是比较聚焦的,让我们对云计算安全体系中的沙箱机制有了一个初步的了解,对于飞天系统的安全产品防护方案也有了一个全新的认识。

主题二:云平台安全访问控制的设计与实现揭秘

飞天安全平台技术专家杨孟哲以一种比较轻松的方式让大家了解了阿里云的飞天和云平台架构设计。

首先,从访问控制的概念说起。访问控制要有主体,一个人也好,一个进程也好,要有发起访问的人。然后有客体和真正的操作,同样的道理,我们可能有很多的客体和它们的操作,这样的简单表格就完成了访问控制的设计。

主流的访问控制实现,主要有两个思路。

第一 :ACL。ACL 是以客体作为出发点,我们有文件和表的两样东西,我们在这个客体上面可以附上一个列表,上面写某个客体有什么权限。我们可以定义出这样的列表,当 Alice 访问的时候,有权限我们就放过,没有权限我们就不放过。

第二:Capabilit。这个概念可能大家听少比较少,却经常用到。孟哲举例说:比如,我从杭州坐高铁过来,高铁的这件事上,或者说火车票机制上,本质上就是机遇 capability 的访问控制。我们可以给 Alice 这个人发一张票,上面写着对文件、对表有读的权限,Alice 要访问的时候出示表,我们检查,有权限我们就放过。

ACL和 Capability 的区别

这两个理念在不同的场景下有不同的应用,在此给大家做一个对比,方便大家应用。

第一:认证方面;作为 ACL 来说,认证是必须的。访问控制列表,上面写着 Alice 有读写权限,但是你不知道访问你的人是 Alice 还是 Bob,你就根本无法使用。而 Capability 认证是可选的。

第二:授权操作;ACL 里面授权必须在客体进行,也就是文件的访问列表上加一项。完成授权,必须操作客体。而对 Capability 来说,授权操作是独立的,没有必要进火车站的那一刻做授权,只需要提前或者是在有时间的时候去买票就可以了。

第三,安全保障;对 ACL 来说,必须要保护好 ACL 的数据安全,如果客体可以篡改那就是不安全的。对 capability 来说,签发和验证的密钥必须是安全的,使你没有能力或者说比较困难、难以伪造这样的一个权限。

第四,委派;这也是访问控制经常有的概念。在 ACL 的访问控制列表里面,基本是走的授权流程。在 capability 的机制里面,委派是很简单的事情,主体可以直接委派,没有其他繁琐的流程。

第五:撤销授权;在 ACL 里面非常容易,管理员把某个人的格子删掉就可以了,但是在 capability 是非常大的难题。无法从别人的计算机或者是别人的手里删除,也无从知道别人是否把这个数据拷贝了无数次。

为了给大家讲得更生动一些,孟哲结合下阿里云的 ODPS 产品来给现场的开发者们演示,让大家对这两个概念更形象化的区分开来。

从访问控制的概念入手,从抽象到具象,从概念从实例,包括一些实现上的设计理念,不同场景下使用不同的访问控制策略,整个流程清晰明了。至此本次公开课的课程介绍便告一段落。

自由讨论:OpenSpace 环节

两个分享结束后,是茶歇和 OpenSpace。OpenSpace 是供参会者和讲师充分沟通的环节,不过在现场从茶歇开始,两位讲师就没有获得休息的机会,一直被参会者包围直到活动结束。

许多参会者在微博上发表了评论:

@菜鸟成长日记:今天听了,控制相关的干货不少,赞。

# 阿里云技术探秘之旅 # 小编@丹心随梦格式化现场感受:雪峰老师睿智沉稳,从飞天访问控制机制、安全沙箱机制、云安全技术等方面详尽剖析,解读了飞天安全那些事儿;孟哲老师风趣幽默,揭秘了云计算安全访问控制的三要素,让大家了解到飞天底层的访问控制和我们所看见的云服务之间的关系。哇哦,长见识了,听不够呀 ^_^

这一期的结束也预示着下一期的开始,我们的技术之旅还在继续。“双 11”大促即将来临,牵动着多少电商人的心,“按秒作业”的“疯狂模式”,痛并快乐的一天,每一分每一秒都是对技术人员的有力见证。在这个逛欢的背景下,淘宝后台有哪些技术在支撑?下一期公开课,我们将为您揭秘其背后的故事,让我们拭目以待。

如果您希望在阿里云公开课上讨论一些技术话题或其他建议,请通过@InfoQ或者@阿里云告诉我们,下期再见。

安全阿里巴巴语言 & 开发架构阿里云