无论在现实世界还是在虚拟世界,“信任”都变得越来越稀缺,而病毒则变得越来越猖獗。不幸的是,病毒有数字化的版本,信任却没有。在数字世界,“零信任”是企业内外、企业之间唯一的技术合作原则。未来一切,都会运行在某种形态的安全沙箱里,“隔离”就是数字化时代的常态。
大白话说,云计算的本质是什么?
云计算,就是你把自己的业务给实现成了软件(你管它叫“信息化”也行、“数位化”也行),然后“租赁”了第三方的硬件与网络资源去运行这些软件,以服务你的客户、合作伙伴。也就是说,把自己的代码化数字内容资产,托管、运行在第三方空间里。
这里的第三方,就是IaaS、PaaS、SaaS各个层面的服务商。服务器硬件是他们的、网络设备是他们的、服务器里的操作系统是他们维护管理的、甚至操作系统之上的数据库和系列中间件也是他们提供的。你在这样的第三方环境里运行代码、处理数据。
那么问题来了,你的代码和数据,就是你的数字资产,如何在一个并不完全受你控制的环境中安全运行,在安全、隐私方面得到保护呢?
另一方面,作为软硬件平台的提供商本身,上云的客户什么人都有,又如何防范他们无意间引入了有安全漏洞的软件、或者本身就是黑客或者黑产,恶意攻击平台、盗取其他租户的数据、危害整个生态环境?这好比你开了一个大型写字楼,里面引进了各种商家,其中混入了几家专做诈骗的“呼叫中心”,还有在写字楼里无下限营销的,把你的写字楼名声搞坏。如何去防范害群之马?
云计算的本质,就是如何让自己的代码安全的在他人的数字环境中运行并保障数据隐私保护,以及如何让他人的代码在自己的数字空间运行并保障自身的安全。
虚拟世界的信任关系?“动态清零”
“租户”和提供虚拟空间租赁的“业主”、“物业”,彼此之间的信任关系是如何建立的?在看不见摸不着的虚拟世界里,双方建立信任的基础是什么?一张商业登记证、营业执照或者一个办公室地址能成为可信证明吗?恐怕不行。“租户”在所租赁的虚拟空间里装修自己的门店,不排除采用了漏电的设备、放射性的原材料、有毒的涂料 - 正如 关于软件供应链安全攻击一文 所介绍,很多企业的业务软件里可能只有低至10%的代码是自己的工程师写的,其他的都来源于不知名的开源世界,开发者自己都不知道,供应链被污染了,影响到自己,也殃及其他“租户”。“物业”呢,则不排除内部人员有道德风险,做倒卖“租户”资产(例如数据)的事情。
你说我不用云。呃... 实际上你也不能免于上述风险。云计算实质上就是把电力转化成算力,像电能一样无处不在,处处被利用。云服务是业态连接的基础,而连接是数字化的核心。只要搞数字化,就会面临:
- 企业边界发生重大变化。企业的数字边界和它的物理边界并不重合。写字楼门口的保安以及门禁卡,拦不住虚拟世界的病毒、木马、网络攻击。现在的企业员工,都使用自己的手机、平板和手提电脑设备,这些设备上的App也可能使用各种各样的云服务。一旦员工“肉身”处于公司办公现场内,如果他的这些设备被许可接入内网,则相当于公司内网暴露在互联网公网之下。
- 传统的企业之间合作,往往就是资源互换。例如企业A的产品与服务通过企业B的平台触达B的客户,同时B也借力A的产品与服务去激活自己的存量客户。以证券公司与银行营业网点的合作为例,证券公司通过银行网点帮助来办理业务的银行客户开证券户,证券公司获客、银行则乐得成为开户账户的资金存管银行,“双赢”。到了当下的数字化时代,这种过去发生在线下的资源整合、资源交换,都发生在线上。它的本质就是,企业A把自己的数字化产品与服务“投放”到企业B的软件平台,从而让企业B的用户能发现和使用。这时,企业A关注的就是自己的代码与数据能否在企业B的软硬件环境下得到安全与隐私的保护。另一方面,企业B也关注企业A的代码“注入”到自己的软件环境下,会不会拿到不应该获得的客户数据。此外,双方都不能假设对方的代码是安全可信的,因为就算双方都是有诚信、可靠,也无法假设对方的代码就没有漏洞和缺陷,导致“无心之失”
从某个角度看,数字化就是让自己的代码安全机密的运行在别人的软硬件和网络环境中,以及让别人的代码运行在自己的环境中却无法故意或无意的对我造成破坏。
信任,在数字化世界里并不存在。
企业内网?它就在星巴克
都说数字化转型,管理咨询公司、科技厂商们有各种云山雾罩的高深理论。可是实际上到最后就是看,谁能够把办公室设在星巴克(或者任何带WiFi的咖啡馆),却依然保持有效运转。因为这意味着这家企业的员工可以在线上协同、客户可以在线上交易、领导可以在线上管理、合作伙伴可以在线上合作,完全“离地”,却可以保障企业数据安全、经营隐私,彻底解决了信息安全风险的隐忧。从本质上看,数字化不就是通过网络突破物理世界时间与空间的制约吗?数字化转型,不就是让企业经营适应这样的生产方式、经营方式吗?
可以说,一个声称完成了数字化转型的企业,它的终极形态就是...远程办公,无论员工和客户人在办公室还是咖啡馆,他们都是在虚拟世界、在远程,安全无障碍的协作。
企业内网比外网安全?不存在的事。提供“零信任技术”的厂家会告诉你,任何在所谓“内网”的人、他们所使用的设备、所运行的软件,都是不可信任的。你必须保持paranoid - 在这个安全议题上,你必须是偏执狂、妄想症患者,你永远假设你的内网已经被攻破、你的企业软件供应链已经被污染、你的整个企业就是在街头路边的WiFi上运转。
防火墙背后没有绝对安全,内网就是外网 - “永不信任,总是查证”。零信任,很可能将成为企业数字化转型的“必要条件”。数字化意味着连接,连接的前提是开放,开放的资格取决于安全风控能力。可以说,安全风控是数字化转型的第一属性,而数字化企业的安全风控,建立在零信任基础上。
怀疑一切,并隔离之
零信任,首先是一种数字化时代的安全“哲学”、架构理念,然后才是一系列的科技产品与工具。其中种类繁多,不一而足;也没有哪家厂商敢声称现在已经提供了所有的、最完整的解决方案。这是一个正在发展的领域,大家都在路上。在这里,我们只探讨其中一种类型的技术方案:软件隔离(零信任的技术方案里,还有一种Micro-segmentation网络微隔离技术,不在本文讨论范围)。
不错,就是像隔离新冠病毒一样的绝对隔离,只不过它是虚拟的 - 任何代码都是受怀疑对象,都可能感染病毒,都得被关在箱子里跑,运行是可以运行的,但是不能被放出来。
事实上,隔离技术早已无处不在。在云端,亚马逊之所以能允许成千上万的“租户”把代码跑在自己的机房里而不用担心安全问题,其中至少有相当一部分原因是跟虚拟机相关的 - 虚拟机就是隔离环境,你的代码只能在这个隔离环境里跑,内存、CPU、网络、存储等等资源,都是安全隔离与受限的。你看不到其他“租户”的代码与资源,他们也看不到你。在客户端,微信之所以能承载几百万个小程序,让网上各种企业用各种前端框架开发出来的代码跑在微信App里面却不用担心微信自身被攻破、用户数据被盗取,同样也离不开以小程序为单位的隔离。
从云端到浏览器端,都有隔离机制,这种机制就是:安全沙箱。
有理由相信,安全沙箱将无处不在,未来的软件,几乎就没有不跑在某种形态的沙箱之内的。安全沙箱这种机制,应该是双向隔离的,一方面它把任何代码关在箱子里跑,免得它们潜在入侵、损害所在运行的“宿主”环境;另一方面它也保护运行在其中的代码,免得它被受污染的“宿主”环境侵害。
隔离,是这个时代的主旋律,在数字世界更加逃不过...
数字化?先从“隔离”开始
首先,什么是沙箱?它本身就是一种线下生活现象的虚拟化。现实世界里,小孩子们在沙地、沙滩上用木板隔离出一个方盒子,在盒子里堆砌、创造各种东西 - 城堡、房屋、山丘... 这就是一个沙箱。它有两个根本特点:一、它有边界,通过木板设定了游戏创造的范围只在围墙内;二、它的游戏材料是沙,任何的创造,一抹就平,瞬间无影无踪不留痕迹。
这两个特点,在计算机世界被模拟了(套句流行语,被“数字化”了)。在一台设备(不管是一台服务器还是一个手机,我们称之为“宿主”)中,通过软硬件手段的结合,可以模拟出一个“管控”区域,它的里面是预先指定、划分出来的运算与存储资源,与宿主的其他资源完全隔离。应用代码可以被丢到这个区域里运行,即使它是病毒、木马、DDoS攻击软件,它也只能在这么一个资源受限的模拟世界折腾,它就像在Matrix里的人,看不到宿主里其他的平行世界,甚至不知道宿主的存在,无法滥用宿主资源从而毁灭宿主(和其他平行世界)。此外,任何这样的区域,既然是模拟的,不管里面跑着什么,都可以被“一键删除”,一切归零。
这就是计算机世界的沙箱。
沙箱技术有很多种类,是否能称之为“安全沙箱”,则视乎其隔离的程度和自身的技术目的。例如能模拟出一整台服务器或者桌面电脑的虚拟机,应该能称之为安全沙箱 - 你可以在里面跑企业服务、也可以在里面打游戏,并不能影响宿主的安全稳定运行,你也可以把这个虚拟机一键删除,不管里面安装了什么东西。例如浏览器里面的实现,是最为普通用户所能感知的安全沙箱 - 它把远程加载的、来自不同网站的页面进行隔离,并且在运行这些包含大量不知名开源技术的代码时,还需要防范XSS攻击,保护宿主环境(让用户免受隐私泄漏、数据被盗、遭遇钓鱼诈骗、感染病毒等风险)。
容器类技术,诸如docker、LXC等,有沙箱隔离的特点,但因为共享宿主操作系统的内核,并不提供彻底全模拟的环境,所以往往并不被视为安全沙箱。
数字化的发展,“隔离”是硬道理,只是隔离粒度不同,有云端“租户”之间的隔离、虚拟服务器的隔离、网络间微隔离、进程间隔离、乃至小小一个手机上一段代码(例如一个小程序)的隔离。
下一代企业应用软件需要安全沙箱
空讲“数字化转型”无用,它怎么“落地变现”呢?“转型”后的企业的形态是怎样的呢?
硅谷著名投资机构Andreessen Horowitz (“a16z”)的合伙人Marc Andreessen在2011年8月20日发表过一篇影响力颇大的文章“Why software is eating the world”(《为什么软件正在吞噬世界》),十年后回顾,确实就是软件在全球社会里举足轻重、无孔不入:完全无法学习掌握PC的大妈大爷,纷纷用上了微信;街头卖煎饼果子的小贩用二维码接受电子支付;银行营业网点被手机App取代...
企业的数字化转型,就是企业员工、客户、合作伙伴全部通过软件进行生产协作、经营管理和交易买卖 - 人在哪里无所谓、见不见面不重要,只要保障了数据安全、商业隐私,就可以在网上有效经营。数字化企业,就是建立在软件上、并且管理制度与高效使用这些工具相匹配的企业。
支撑数字化的下一代企业软件是什么样子的?我们认为“小程序化”、“安全沙箱化”是其中一个基石。逻辑如下:
- 企业的一切业务内容,表现方式就是软件化代码化。企业的数字内容资产,就是软件
- 软件形态和过去不一样了,它已经彻底脱离PC时代的“单机”,它天然是网络化的、连接型的、传播式的,企业需要掌握软件的出版权、分发权、流动权、使用权
- 随需随用、用完即走的“轻应用”软件形态(见《怎么理解后App时代的轻应用技术》 ),最符合上述要求。其中“小程序”又是轻应用类型技术中最有广泛基础、最贴近Web因此最有生命力的技术(见《似水无形 - 小程序化》 )。
- 用户甚至不再需要去主动意识到“软件”这个概念的强存在,代码都是自动下载、看到就用到的,不再有传统观念下的安装、升级,一切都是透明的
- 通过网络分发传播而下载运行的代码,永远不可信赖,它只能被关在安全沙箱这样的隔离环境里面跑,没有其他选择
- 传统企业之间的资源交换与整合,它的数字化形态就是交换自己的“数字内容资产”,也就是我的平台让你的软件放进来跑一跑服务我的客户,我的软件投放到你的环境里触达一下你的客户。“你中有我,我中有你”,可是我们俩彼此在技术层面没有任何信任基础,只认技术安全,“零信任”。所以你的代码我只能放在沙箱里跑,我投放到你那边的代码,也用沙箱隔离着你的环境
- 在所谓企业“内网”里,运行的一切软件,也不能保证安全,谁知道代码里面用了什么开源组件、供应链是不是已经被污染、是否随着员工随身设备“肉身翻墙”进入了防火墙内部?都得被安全沙箱关着才能运行
例如 FinClip 小程序容器技术,是一种云端可控的设备端(包括IoT)安全沙箱技术,它以可分发、可流通的小程序代码格式为软件形态,充当下一代企业应用软件的技术底座。 作为Web前端技术的“超集”,基于令牌(non-forgeable token)的安全模型,和当前“零信任架构”下的其他基础技术在最贴近用户、应用的地方能建立良好的配合。
无论接受与否,我们的“现实”世界和“虚拟”世界,都已经变得highly contagious - 病毒在这两个世界肆虐,“信任”关系却越来越难建立。技术让病毒软件化数字化了,却没有让信任数字化,而是直接把它降为零... “隔离在安全沙箱里”,将是数字化时代的“新常态”。