订阅云计算RSS CSDN首页> 云计算

新浪云计算首席架构师丛磊:SAE核心安全架构

发表于2012-05-25 10:54| 次阅读| 来源CSDN| 0 条评论| 作者王然

摘要:新浪SAE(Sina App Engine)从2009年诞生以来,已经走过了2年半的历程,经过长时间的技术演化和发展,SAE积累了大量经验和技术。众多依赖于SAE的的项目为什么信赖SAE的安全性?SAE又如何保证其上商业应用和企业的安全性、可靠性呢?新浪云计算首席架构师丛磊从整体架构的角度介绍了SAE核心安全构架。

【CSDN现场报道】第四届中国云计算大会于2012年5月23-25日在北京国家会议中心隆重举行。本次大会由中国电子学会主办,北京市经济和信息化委 员会协办,中国云计算技术与产业联盟、中国电子学会云计算专家委员会承办,CSDN与《程序员》杂志协办。在2012国内公共云全面开花、云计算实践元年 之际,本次大会云集云计算核心专家,就国内外云计算核心技术以及行业应用创新实践进行了深入探讨。

新浪SAE(Sina App Engine)从2009年诞生以来,已经走过了2年半的历程,经过长时间的技术演化和发展,SAE积累了大量经验和技术。众多依赖于SAE的的项目为什么信赖SAE的安全性?SAE又如何保证其上商业应用和企业的安全性、可靠性呢?新浪云计算首席架构师丛磊从整体架构的角度介绍了SAE核心安全构架。

新浪云计算首席架构师丛磊

以下为文字实录:

大家好!很高兴在云计算大会这样一个场合跟大家交流,云计算最为核心的技术和关注点就是安全。我们知道现在有很多商业企业、政府、机构,都运行在SAE上,SAE如何保证企业、业务正常可靠的运行,本次演讲过程中我将给大家带来解释。

介绍SAE的历史,这张图里面大家记住三个点,第一个是创始时间,09年8月份组织一个很小的团队,11月份的时候SAE推出,到了2011年5月份SAE正式开放注册,任何一个人拥有帐号,都可以体验,正式使用云计算的服务,这也使得SAE是中国第一个对外开放注册的这么一个公有云的一个服务。到了去年年底,今年年初的时候,SAE有很多的新服务上线,包括我们的服务商店,应用商店,以及最近应该是3月份的时候,合作后共建一个平台。

SAE发展的一些指标,目前SAE拥有验证部的开发者,手机的,16万,用户数是28万,每天的请求是8个亿。这张图比较有意思,这张图通过排名对比了SAE在世界上最多的竞争对手——谷歌,这张图我们以PV做对比,SAE有两部分,一部分是个人应用,一部分是企业应用,企业应用都没有走这个域名,这个PV对SAE是低估的,4月份的已经已经超过了,这主要是一些与国外顶尖的一些云计算服务平台做一个对比。

我们的合作伙伴,一个是VMWare,一个是中国电信的天翼空间,完全基于移动云的技术。SAE的客户,为什么大家能够信任,相信SAE在上面运行是可靠的。SAE的客户有几类,第一类是新浪固有的,第三方的业务,微游戏等等。另外有些游戏公司也有很多,还有一些商业应用,中信银行,信用卡部分的业务也运行在SAE上,还有一些地方的一些媒体,各种报纸。还有很多教育机构也是运行在SAE上,今天上午云计算大会教育论坛有一个专场,到时候北京大学的主任会专门介绍SAE跟中国高校,也是云计算与中国高校的第一个合作的案例,目前北京外国语大学全面运行在SAE上。

这张图介绍的是SAE整体云计算的战略,我们如何在现有的情况下发展我们的云计算,从我们的产品线来讲,SAE覆盖了三层,SaaS、LaaS、PaaS,最底层的LaaS,中间PaaS云目前支持的是public,一个是工业,一个是企业,一个是我们的移动云。移动云可以方便让任何一个传统互联网的外部开发者,华丽转为移动开发者,原来的外部程序就可以变成苹果上的IBA。SaaS层里面有两个商店,一个是AppStore,ServiceStore,从我们的概念来讲,基于世界上最大的,即使是苹果的,在概念上是缺市的,有价值的开发者,开发出来的东西不具备Y,举一个例子,现在有一个算法,将宠物狗的叫声,转化成中文,识别是什么意思?这种想法非常有价值,真正开发很多人愿意付钱去买,因为你只是一个输出输入,我们这个概念就是帮助这些有能力、有价值的开发者,去售卖他的ATI,我们免费提供也欢迎,实际上这个是我们API的一个商店。

下面有一些截图介绍我们在几个产品线具体的一些情况,这些是我们上线的产品,这张截图,右边任何一个开发者,在SAE上都可以享受你的服务,如果你的服务不是免费的,我们会帮你做计价。

我们再来看关于SaaS层,美国旧金山举行的大会上,大会宣布,新浪、SAE,作为在全球的贡献上是排名第九,中国排名第一,这个是根据的提交的代码量。这张图列举出来了SAE目前在我们的运计算平台上提供的所有的服务,这个列表非常多,列出来的也只是SAE里面的部分服务,为什么没有全部?因为全部太多,有些非常特殊的服务没有列出来,这种服务对于移动开发者来讲很简单,这种我们通过服务商业介入的,像这种特殊的服务,都会通过应用商店接入到SAE上,SAE理论上讲会支持所有的服务。这块列出来的像队列的,计算型的,介绍了一些SAE的具体情况。

下面我们回到这个演讲的一个重点,关于安全性,我们都知道,在做安全性里面,其实有两个层面,一个是私有云的安全,一个是公有云的安全,坦诚来讲,如果纯粹谈安全的话,做公有云的安全,比做私有云的安全,难度要高一个数量级,为什么这么说?有下面这些点进行说明。公有云具有一个资源共享性,大家的东西,无论是计算能力,存储能力都拷在一块,势必要保证,大家每个人都过来,而且不受各自的影响,这是资源共享性

服务多样性,SAE提供了多达几十种的服务,绝对单纯体归一个云存储,或者提供一个云的计算能力,我们提供的是一个管理、运维、开发、运营所有的这些功能,我们提供的服务不是单一的,服务多样性的。在公有云计算平台上,用户是不可预知性,什么意思?私有云,我们很好判断用户的质量,都是公司内部的员工,谁搞断就纠出来,公有云上面,谁在用你的服务,出于什么好人还是坏人,这些东西都不知道,即使说这个平台上判断是一个好人,出于什么目的,业务规模是什么?仍然是不可预知的,规模不可预知性,正是由于上面这些特性,所以使得在公有云计算,谈安全,比私有云上还要难。

那么多的企业跟商业用户跑在SAE上,SAE如何保障的?SAE是整体架构图,这张图是比较简单的,在里面有很多很多(英文),从库中间延伸出来的是我们两大类服务,存储类的服务,一个是计算性的服务,所有服务都会像我们中间的统计中心做汇报,最终生成我们的消费资源,最终生成用户的消费报表。

下面讲述的就是SAE的整体的安全架构,我们可以从下往上看,最下面的是平台安全性,这个概念跟我们平时做私有云没有区别,保证服务器登录权限,安全可靠,保证服务器的配的都是正确的,不能让用户随便登录访问,这些东西如何防范等等,这些东西都是我们传统做私有云所要解决的东西。今天我们重点是讲公有云,这块不作为我今天演讲的重点,介绍的是在平台安全性往上的有两个层面。

  • 第一,应用安全。包括你要保证用户的数据安全,数据的DB等等,都放在你这儿,保证他不能窃取、串改,这叫数据安全。
  • 第二,代码安全。对于开源没有关系,但是很多是商用的,代码是不能泄漏的,如果代码有一个死循环,会不会导致平台死掉,这就叫做代码安全性。
  • 第三,网络安全。数据安全性和代码安全性往上是我们的网络安全性。
  • 第四,帐户安全。那么多的企业信息放在你这块,能不能保障他的登录和管理,用户帐户也会涉及到访问的问题,如何保障这些是安全的。

首先,我们来看,安全里面不得不提的就是隔离性,资源共享,共享里面要保证他们之间是隔离的,如何做大,最重要的是沙箱技术,这张图是我们PPT沙盒,第一层是对PHP本身的沙箱,比如用户,你只能写这个目录,两个人的目录不能互相交集。除此之外还有底下的这层,里面有一个非常非常重要的技术,这个词是从Windows平台上过来的,把PHP把函数通通替换掉,为什么要这样做?如果我们假设PHP语言的解释器没有任何问题,沙箱没有任何问题,我们没有必要做第二个沙箱,最早进行的53恩0,到538,到540PHP一路的发展不停有漏洞出来,就会给黑客一些机会,获取到PHP的信息。为了避免情况再次发生,我们开发了第二个PHP,没有办法执行别人的代码,别人稳健的读写材料。

第二层沙箱里面,跟外面的容器紧密相连,我们对它的连接数、访问时间都做相应的控制。下面两个是我两个不同的沙箱,逻辑上讲是相似的,PHP沙箱是一个进程服务于多个用户,目前的Python和java是不一样的,不同进程拥有不同的用户权限。对于Java沙箱允许访问跟不允许访问的,在往下,我们有一个自己的颜色,对于某一个特定的,能够被外部容器调用,跟被用户调用的时候,两种情况,展现出来不同的权限,如果是系统调的权限高,如果是用户调的,权限会低。

服务的隔离性,两个例子,存储的隔离性,计算的隔离性。我们都知道Mysql,在IT上发生这样的事情,如果你是公有云,这种情况下发生,导致平台不稳定,如何解决这个问题?有这么几种思路。

  1. 以物理机为单元做隔离,成本大,不考虑。
  2. 以虚拟机为单位做隔离,数据库,不同的虚拟机,这种方案对我们来讲成本还是太大。

举一个例子,目前的SAE上,后面有5万个,试想一下,一台物理机,虚成50个虚拟机,SAE需要提供一千台虚拟机,才能支持5万个,每个都会有一个DB。但实际上SAE,也就是个位数的第一,我们如何做到了这一点?我们的隔离单位不可能以虚拟机为单位。有些互联网公司是这样做的,SAE比这个做法还要疯狂,让所有的跑在一个进程里,不互相影响。SAE怎么实现这件事的,依赖自己研发数据中心,这个技术我今天没有时间展开详细讲,主要讲这块有这么两点:

  1. SQL预判。他有一个功能叫做提前判断出来某一个语句是高效还是恶意,如果恶意,会拦截,给用户反馈为什么被拦截。
  2. 并发执行时间和。如果我们的时间和是一万毫秒,用户A,语句执行一百毫秒,所获得的是100X100,相反,如果用户B,每条语句执行一万毫秒,这样的话导致我们在技术层面上,去让用户优化自己的语句,得到优化,并发能力就大,不优化,就会小。当你的数据库长时间出现慢查询,我们会给你一个警告。通过这些措施,使得我们的用户数据库,跑在一个进程里还能相安无事。

计算性隔离性的例子,图象处理,加水印,图象的加码等等,图外跟容器放在一块,可能会导致互相影响,我们所做的将这一块的计算能力隔离出来,单独有一个计算时,专门处理用户的图象处理,PHP调用的时候,通过基地函数调用,这样的话会导致代码迁移成本,我们将我们的服务,完全打入到PHP内核里面,用户调用图象处理的时候,不需要改一行代码,所做的这些操作,都是通过RPC的方式,调用我们的图象处理。

说完隔离,说说数据的可靠,数据可靠这也应该是企业和商业用户非常关心的,数据放在这儿,会不会丢,有没有备份?我们在SE平台上,所有的数据库服务,QDB等等,所有都有两套,一个是冷被,一个是热被,根据用户服务登记的不同,我们会有一组两重,一组三重的结构,我们的KDB会提供这样的服务,对于冷被上,SAE经常用到这样的用户,不小心把什么数据一大堆删了,给我们打电话说,能不能帮我们找回来,甚至愿意付钱都可以,非常高兴的是,这些东西都可以被搜索到,两轴内被删除掉之后,仍然可以恢复。

对于企业来讲,SAE提供一个技术,叫做VPC,这个概念应该说在目前来讲,业界也是比较先进的,目前很多企业找到SAE,希望SAE被提供云计算服务,这类企业有两种需求,第一列是什么?新浪运算做的不错,你去给我们搭一套云计算的服务,这种属于传统私有云的概念,这是系统集成的模式,当然,SAE可以去做,我们推荐的是第二种,因为我们觉得第一种太老,第二种比如通过POC,银行系统对安全有顾虑,没有问题,我们给你提供一个单独的池子,数据存储还放在我们这块,这个池子跟其他人完全跟其他人在物理上是隔离的。比如像我们的对公业务、企业池子、银行业务。这些池子之间,都是保证绝对的物理隔离,这样的话能让用户安全放心的去使用。

说完了数据的安全,我们就来说说另外一个很棘手的东西,就是代码安全,用户的代码是放在你这块的,怎样保证用户的代码安全?需要解决两点:

  1. 代码漏洞。用户代码里面有漏洞,你管不管?OK,我们可以说我们不管,但是我们的原则是什么?能管就管,尽量帮用户识别代码。
  2. 代码丢失。如果管了,用户会更加信任你,一定保证用户代码是不可泄漏了,一旦泄漏,用户会杀了你。

用户代码的这些漏洞你怎么管?按应用体检,这个应用体检,这个图上所展现的,有点像安全卫士360,一点按纽,就帮你网站做一个全身的体检,两个层面,第一是性能体检,帮你检查出来哪个页面哪个快,哪个慢,统计出来你的优化建议。第二是漏洞体检,我们帮你去访问代码、日志,看看有没有隐藏的攻击,一旦有旧提出来,这是漏洞方面的体检。代码丢失,SAE所有的代码,都是通过SAE做控制的,SAE帮你恢复到任何的版本。还有一个代码的问题,SAE拥有几十台,上百台的前端,用户经常做代码的变更,非常频繁的代码写的操作,如何保证这些代码变成了操作?完全一致地事务性的部署到所有的外部前端上,不能说这个代码修改完之后,在这样才部署成功,那个部署失败,这个不允许,用户会抱怨,SAE如何解决这个问题,自己开发一套文件系统,里面有三个功能。

  1. 以算法保障用户算法,部署到所有的外部前端去。
  2. 部署方式是P2P,瞬间完成快速部署。
  3. 支持文件系统级的排查。

大家代码都差不多,唯一不同的是配置,如果我们没有文件系统集的排除,会大量浪费我们的空间,云计算拼的就是成本,谁卖的便宜,就买谁了,我们必须做到这一点,做文件系统的排除,这五万个SE上,只存一份文件,大大降低了我们对于磁盘的消耗。

我把代码传到SAE,你会不会看?这个问题,两个层面。法律制度上做保证,对于所有的外部前端,都做登录这种日志,一旦发生问题,我们可以去回复,看日志记录,这是管理层面的,技术层面,不管你说什么,反正我还是不太相信,那也没有问题,可以对代码做加密,三个平台,三个做法。如图所示,我们完全同意,这三种途径保证代码,不相信SAE,也能保证代码是完全不可泄漏的。

说到数据,我们必须要讨论一个网络安全性的问题,无论是PaaS平台也好,网络平台是最核心的问题。首先看这些验证游戏,IT提供两种验证模式,第一种是我们所谓的,我们将张三李四,打到底层的客户端,用户,张三的应用,只能在这个上面去调用,所有的调用都是通过客户端,这个客户端已经写死了,这是一种方式。另外一种方式,亚马逊的方式,用客户端调用服务端的时候,不会去传送,在服务端重新再计算一次signature,发现一样继续访问,没有发现是一个不合法的情况。这个模式跟亚马逊基本上是一样的。

PaaS平台里面,能不能扫描你的端口?这些都能做到,SAE所有三层以上的访问,完全代理起来,任何一个SDB等等的请求,调用的是原生的等等,所有的这些操作,完全走的都是我们的代理层,代理层会分析你的目标地址,会分析你的频率和行为,到底是否合法,如果合法才允许你去访问,这些在各个层面,我们全是这样做的。

我们同时还为应用提供了应用防火墙,我们在Q2,第二代防火墙也将上线,这里面放映的是第一代的防火墙,提供用户可以对访问频率的控制,流入出的控制,我的应用得到攻击了,能够及时跟用户做出响应,防火墙上做限制,保证用户云的不会过份消耗。

最后,说一下关于帐户安全,帐户安全,首先第一点,你要保证你的用户登录跟管理是两个权限,在这块提供双层密码,这个跟淘宝非常像,登录进来以后,只能看到你的基本信息,访问情况,如果你想更改代码的时候,删除数据的话,抱歉,我们会要求你输入第二套密码,安全密码,同时我们第二套密码,还支持什么?还支持动态口令,保证企业用户,即使密码丢了,只要没有动态口令,仍然可以删除你的代码。

同时,SAE还提供一套完整的帐户体系供用户,我们都知道SAE,有权利邀请其他的团队里面的用户加入到这个项目当中的,对于这些用户的权限,分配不同的角色,拥有最高级别的权限,但是,我可以分配里面的程序员,只能提交代码,另外一个人,运维人员看日志,另外一个人是部署应用,所有的东西,都可以分配称不同的角色,从而做权限的控制。SAE上的权限和角色的对应图,分配给每个人,什么样的权限,只能干一个什么样的事情。SAE上为用户花的是真金白银,保证用户消费安全也是最核心的一个问题,如何保证用户消费安全?云豆保护,这个非常实用,SAE有一个用户,在测试阶段,拨了一个代码,是一个死循环,用户心疼的,死循环不停地花他的钱,很幸运的是,因为有云豆,能够保证他的钱不会过份的纳用,非常像网银里面的,支付限额,每天只能网上支付300块,设置阶段设置一个值,这样的话,死循环上去,仍然能够避免你做更多的损失。同时,我们会有大额消费的审计,你原来每天都花十个云豆,今天做了一千个云豆,我们会有一个审计,包括人工的抽查。

我想分享两点关于SAE整体安全上的一些经验和体会。

  • 第一,关于信任。我们都知道,做云计算最难的是信任,怎么说服用户,把这个东西搞过来,是靠的一个可靠的技术团队,靠一个可靠的运维团队。
  • 第二,要有一个可靠的SRA保证,我们大家经常看到,互联网公司比的,你是几个9,他是几个9,几个9都无所谓,但是,以后大家遇到这样的情况的时候,加一句话,当你达不到这么多9的时候,你给的赔偿是什么?如果他没有赔偿,我有一句话,开玩笑的,他就是耍流氓,在SAE的保证,在后面会有一个我们对于,如果达不到相应的补偿政策,我们会访问,承诺用户的时候,一定加一个承诺,当你达不到承诺的时候,这个赔偿是真金白银的赔偿。

变更。SAE目前的所有的故障,都是由于变更引起的,这个变更跟传统不一样,传统的方式只有一个变更,就是自己自身代码的变更,系统有bag出现了,SAE又出现一个,用户代码,原来是A代码,怎么解决这个问题。我们有一套发布机制,保证每次的SAE的升级影响到部分用户,最终到整体用户,另外一部分就是我们会让用户分组,即使每个用户出现bug,我们会做控制。同时我们会做一个系统跟踪,时时做检查。

这就是我今天演讲的内容,谢谢大家!

更多精彩内容,请关注CSDN云计算频道微博第四届中国云计算大会专题报道

欢迎投稿:“第四届中国云计算大会”之我见——征稿启事

本文为CSDN原创,未经允许不得转载。如需转载请联系market@csdn.net

0
0
新浪云计算首席架构师丛磊:SAE核心安全架构