几十年前的计算机安全还是个轻松活,那个年代的计算机都放置在戒备深严的机房里。机房的主管会在玻璃窗前接过你的打孔卡,只要保存着代码的卡片没有被折叠、损坏或是截断就行,之后就会被Hollerith阅读器阅读并在计算机上执行。一次只能执行一个程序。当然如果你的程序存在错误,它会在几小时或是几天后被主管人员退回要求调试。(在打孔卡片统治的那个年代,FWIW,谨慎地设计,架构与桌上检查是常规作法;想象一下,每个编译器都要运行两到三天的时间。)
随后计算进入了疯狂发展的时期,从分时系统到小型机,再到个人电脑,如今又是移动设备。在自己的计算机上调试代码成了混乱的过程,发生的速度与(慢)人们能做到的一样快。再不需要等待主管的祝福或是那个世界上最慢的编译器。不需要理解计算机和技术堆栈的工作原理,当它廉价到只是运行代码后查看结果就行。即便是运行他人的程序也是容易的。至此安全开始急剧下滑,随着边界的溶解安全从琐碎达到了近乎不可能实现的地步。
如今的我们有了云计算,边界也算是彻底消失了,而与此同时我们又一次经历提交代码到主管--如今则换成了Google、Amazon、Microsoft或是其他的--来执行的状况。
到底发生了什么?难得我们得到的仅仅是安全上的副作用?云计算安全的利与弊又如何呢?
简短的计算机发展史
当计算机占据真个机房并且一次只能运行一个程序的时候,因为价格的昂贵,它们轻松地获得了想要的安全。只有经过高级培训的人员被允许接触机器,他们往往会是这方面的天才。计算周期昂贵且稀少,但边界却是明显并可以很容易地被锁定--简单到只是锁上一扇门就够了。
随后到来的分时系统与“哑终端”,例如ADM5和VT100,它们通过电缆连接到主机(运行VMS或是Ultrix)。多名用户可以在同一台机器上运行他们的程序,以分享时间片的方式。机器和它们的计算周期依旧很昂贵,而且数量很少又体积很大。但计算周期的价格却逐年下滑,终端则以它们缓慢的脚步迈向了世界。
同样的,计算机安全也逃离了原本的机房。因为终端总还在主机线路距离以内(通常被集中在终端机房),用户需要用户名和密码(被强制认证)来使用机器,安全多少还是可控的。实际上那时并没有太多的人使用电脑。
紧接着,核心机也逃离了原本的机房,加入了终端的行列,开始变得越来越便宜。然而,存储仍旧昂贵贵并且体积庞大。多用户主机需要“账户”来分配定额的磁盘空间。在80年代末,20兆的存储看起来算是相当巨大。存储被集中在房间大小的磁盘农场里,像从前主机那样被管理着。计算周期免费了,但磁盘空间是昂贵的。边界安全被它的部分掌控着。
对简单边界安全的致命一击,就像Cerberus(西方神话中有着三个脑袋的地狱看门犬)一样有三个方面:PC、用户与互联网。早期的PC像Apple ][+和IBM PC Junior是没有磁盘空间的。它们使用软盘或是磁带进行长期存储;要花费很多软盘来保存记录。硬盘是昂贵的,而且有洗碗机那么大。情况很快发生了变化。在1986年,IBM AT推出了,砖头大小的20Mb硬盘。磁盘空间开始缩水,最终变得和计算周期一样廉价--基本上算是免费的。
如今周期和存储都是免费的,但我们却要面临基本的管理问题。即便周期和磁盘存储可能是免费的,但是由专业人才来管理机器依旧昂贵并艰难--特别是当你考虑安全问题时。
观点:云计算有利于安全
世界上的每一家中小企业是否都需要计算机来拯救?是的。但每家中小企业都能承担专业人才来管理他们需要的计算机吗?答案是否定的。(特别是谈到安全,它是特别的棘手,需要实际的专业技术。)现在你有了它:云计算总归是便宜,对几乎所有的中小企业来说算是拥有了良好的运维人员和及时需求。
事实就是Google、Amazon、Salesforce.com和Microsoft的系统管理与安全运维人员比标准中小企业的运维专业人才的水平高的不止一点,而是好几倍。想象一下,是选择世界级运维团队在背后支持你的业务运维,还是雇佣一些本地的二流IT家伙,他们很可能才毕业于社区大学。
同样的结论大企业并不适用,因为它们内部的IT员工同样是世界级的,并且高度的专家化。最重要的部分就是,企业安全运维机器是灵活而高效的,但是正如我前面所写到的,中小企业的情况是不一样的。
曾想过谁会拥有数百万被感染的机器(由计算机犯罪者将其有规律地加入僵尸网络)?最有可能的答案就是你的亲戚或你最喜欢的当地企业。云安全可以解决这些。随着越来越多的消费者和中小企业将他们的计算移入云计算,我们的日子会过得越来越好,通过采用云服务,中小企业和消费者可以及时并自动地改善自身的网络安全状况(借助现代工具和针对安全侵入的监控器,快速从濒临崩溃状态到修补未打补丁的系统)。
在我看来,云计算将提高现有的计算机安全,主要在于减轻了中小企业的安全运维。
观点:云计算有害于安全
问题是我们所需的应用。当我们为迎合不同中小企业的口味而编写非一般应用时,我们就引入了云安全的致命弱点。放置简单,为云计算构建安全应用就像在任何地方构建安全应用一样困难。难过的是,这个事实云计算供应商要么是不了解,要么就是在撒谎。
问题是云供应商一股脑地把困扰的应用安全都通过加密解决。我们都知道安全是属性而不是东西。好吧,除了云供应商我们都晓得这点。云供应商依然相信神奇的加密方案。这种安全方法不能让应用更加安全,当我们在主机之间的链路,或是在休息的时候增加数据时使用加密。继续盲目地相信加密方法结果就是精神错乱。
好消息是在软件安全上取得的巨大进步。坏消息是我们可能外包安全运维到云供应商,但是没有迹象表明对应用安全我们可以做到同样的地步。
我的底线是:
构建云计算上应用的底线是?获得一些专业的帮助。真的。不论你做什么,不要相信云供应商叫卖的神奇加密方案,传说这种方案可以神奇地解决你所有的问题。
停止云计算就好比让世界回到主机时代一样,那是徒劳的(嗯,不要等待……那不是我所要表达的意思!)。云计算是廉价的,租用运维人员确实是很棒的方案。计算周期和存储基本上是免费的,所以为什么还要再买这些东西呢?
所以当你的公司采用云计算(不是如果,而是何时),不要忘记软件安全是多么困难。不要购买云供应商胡说的所谓的神奇加密技术!真正地思考,正确地处理云计算上的软件安全就如同原先自己管理执行代码的机器那样。