很高兴看到前几天360主办的互联网安全大会(ISC2018)有单独的分论坛关注“零信任”,也有点吃惊,毕竟几个月前认真谈这个的还挺少。不过,我觉得只从“身份”的角度谈“零信任”过于局限,甚至可以说“零信任”相关理念和实现框架的核心恰恰在于超越“身份”。
先说基本概念。访问控制(Access Control)是信息安全系统的核心,而在访问控制的基本实现中,有三个动作需要依次完成:身份识别(Identification)、身份认证(Authentication)和授权(Authorization)。在技术讨论的一般语境下,狭义的“身份”(Identity)只是访问控制的基本元素,而在中文表达中,“身份”的内涵和外延都有所扩展,但“身份安全”仍然不会超过“身份识别”和“身份认证”。另一方面,在“零信任”的两个核心方向上,BeyondCorp代表着业务逻辑上关注的是授权(Authorization),而VMware NSX代表着网络架构层面对隔离(Segmentation)的重新认识。进一步的,之所以从业务逻辑和网络架构两个方面都通向了相同的“零信任”理念,就正是因为传统的访问控制系统过于依赖“身份”(Identity),且在实践中将“身份”(Identity)简化为“角色”(Role)。
由于ISC2018分论坛的焦点是“身份安全”,对“零信任”的讨论也就限制在了业务逻辑方向。为此,我们可以通过梳理BeyondCorp的架构和实现来进一步了解“零信任”理念对传统的超越。
如图1所示,BeyondCorp面向所有用户的组件为“单点登录”和“访问代理”,实际控制结论由“访问控制引擎”得出、由“访问代理”执行。其中,只有“单点登录”与用户“身份”相关,但由于已经通过广泛存在的Windows Active Directory域以及最新的Okta等IDaaS(Identity-as-a-Service,身份即服务)产品等各种IAM(Identity and Access Management,身份和访问管理)方案较好地落地,“单点登录”在BeyondCorp的介绍中只是被零星提及,而并没有具体讨论。
相应的,在BeyondCorp的五篇核心文章中,各有一篇专门介绍访问控制引擎的授权原则和访问代理的功能实现(其余三篇分别是介绍总体框架、迁移过程和用户体验)。具体而言,“访问控制引擎”的核心是了解和正确识别设备及用户的当前状态,并作为授予权限的基本依据,而 “访问代理”则需要总汇所有进出流量,且根据“访问控制引擎”得到的结论,进行许可或阻断操作。与此不同,在传统的访问控制系统中,权限的授予只是静态地基于用户的身份(Role-based Access Control,基于身份的访问控制)或所处的网络环境(Trusted Zone,可信区域)信息,而访问控制点则分散在网络边界上相互独立的不同入口处。
当然,尽管我们说以BeyondCorp为代表、在业务逻辑层面实现“零信任”的核心是授权机制和访问入口的变化,但国内确实还有相当大一部分企业在“身份安全”上也做得很不够,甚至缺乏完整的“单点登录”方案。在这种情况下,改进和完善“身份安全”确实应该引起足够的重视。