征文 | 肖文棣:零信任之学习、思考和实践
☝戳链接了解本期征文详情
肖文棣
获得华中科技大学软件工程专业工程硕士学位,持有 CISSP、AWS 助理解决方案 架构师和 AWS 安全专家等认证。现任晨星资讯(深圳)有限公司安全架构师职务,负责应用安全设计、管理和评审等工作;现任OWASP中国广东分会负责人,领导和参与OWASP中国多个项目,同时是(ISC)2的华南分会和西南分会会员,也是深圳诸子云会员,积极参与各种安全讨论和分享活动,为业界的整体企业安全提升出一份力。
今年,零信任是个热词。笔者第一次听到零信任是在2019年的北京网络安全大会上,当时奇安信可以推广内生安全的概念,已经抛出零信任的话题。
奇安信还组织专家翻译了零信任的经典著作《零信任网络-在不可信网络中构建安全系统》。
零信任这个概念是Forrest的分析师John Kindevag在2010年提出的。“Never Trust,Always Verify”是零信任的核心思想。开始几年这个理念并没有得到安全行业的普遍关注,直到2015年前后,层出不穷的高级威胁和内部风险,以及监管力度的逐渐加强,使得零信任开始受到重视。2017年,Google对外宣布基于零信任的BeyondCorp项目完成,为业界的实践指明了方向。零信任越来越受到关注,在RSAC 2019展会上达到高潮。
零信任是一种全新的安全架构,其核心组件基于身份与访问管理技术、终端设备环境风险评估技术、基于属性的访问控制模型、基于机器学习的身份分析技术等构建,并没有太多激动人心的新技术。
零信任的最佳实践是推荐使用现有的成熟技术,根据应用场景,按照全新的逻辑进行组合,就能起到完全不同的安全效果。
2020年2月美国国家标准与技术研究院(NIST)总结研究成果,发布了SP800-207:零信任架构草案第二版本。 本次NIST发布的草案第二版旨在为企业安全架构师介绍零信任理念,帮助理解用于民用非保密系统的零信任,并为将零信任安全概念移植和部署到企业环境提供路线图。
2020年6月5日,在云安全联盟大中华区组织的零信任十周年峰会上发布SP800-207:零信任架构草案第二版本中文版,旨在供国内业界企业和网络安全从业者学习。
安在也组织了厂商进行零信任技术的宣讲和普及,至此笔者认为零信任已经非常清晰和可以落地。
根据CSA的白皮书,零信任的架构应该包括SDP、微隔离、IAM三大技术。其中核心组件就是SDP和微隔离,功能组件就是支持核心组件的。功能组件包括数据安全、端点安全、身份与认证管理和安全分析。
数据安全用于保护静态和传输中的数据,要和数据的分类分级结合,甚至与企业的DLP结合。
端点安全用于评估端点安全状态并且保护端点,并不是必须的。
身份与访问管理,就是上面说的IAM,用于用户身份鉴别以及用户权限管理的,这个是零信任的核心。
安全分析,用于实时分析用户的连接情况,并且鉴别用户当前安全等级,并上报给SDP来决定对用户的实时权限调整。
对比Google的BeyondCorp和CSA的零信任架构,CSA的零信任架构更加清晰,更加容易理解和落地。
2019年8月,在北京网络安全大会,笔者第一次了解到零信任架构的概念。笔者判断零信任会企业有很大帮助。笔者开始一直追踪相关的动态,并且积极给企业内部推广零信任的理念。此时是理想学习阶段,笔者并没有实际可以实际测试或者落地的项目。
2019年年末,突如其来的COVID-19改变了一切。笔者所在公司同其他公司一样被迫开始大规模远程办公。
首先笔者公司开始扩大VPN使用数量,让员工可以通过VPN接入办公环境。但随着员工的接入,笔者公司遇到了VPN数量不足了而且没有办法再大规模扩展的问题。
基于业务的需要,业务部门开始要求将部分业务从内网访问切换为外网访问。但这个是有很大的风险的,毕竟企业内部的安全基础是基于边界防护的。这个模式下,大家信任内部应用和访问,但一旦将内部应用切换到外部应用,这会给企业带来很多未知风险。
这个时候,笔者公司意外发现了微软提供了Azure AD Proxy的方案,可以将内部应用无缝地切换到外部使用,并且通过AD来控制访问。
工作流程如下:
1. 在用户通过终结点访问应用程序后,将其定向到 Azure AD 登录页面。
2. 成功登录后,Azure AD 向用户的客户端设备发送令牌。
3. 客户端将令牌发送到应用程序代理服务,该服务检索令牌中的用户主体名称 (UPN) 和安全主体名称 (SPN)。然后,应用程序代理将请求发送到应用程序代理连接器。
4. 如果已配置单一登录,则连接器代表用户执行所需的任何其他身份验证。
5. 连接器将请求发送到本地应用程序。
6. 通过连接器和应用程序代理服务将响应发送给用户 Azure
AD Proxy适用于:
►使用 Windows 集成身份验证方法进行身份验证的 Web 应用程序;
►使用基于窗体或基于标头的访问的 Web 应用程序;
►想要公开给不同设备上丰富应用程序的 Web API ;
►驻留在远程桌面网关后面的应用程序;
►与 Microsoft 身份验证库 (MSAL) 集成的丰富客户端应用。
Azure AD Proxy代理取代了对 VPN 或反向代理的需求。笔者公司使用Azure AD Proxy对其中一个内部服务进行了测试,效果非常好。而且内部服务不需要做任何修改,只需要在内部增加Application Proxy Connector并进行简单,就依赖微软的Azure AD认证来保证服务安全地在外网访问,解决了笔者公司遇到的VPN资源不足的问题。
后来笔者公司又根据需要陆续将几个内部应用通过Azure AD Proxy开放到外网,这样就保证了我们的业务既安全又满足了远程办公的需求。
Azure AD Proxy在某种场景下是个好东西,但是它不是万能的银弹,它不适合于企业网络的内部用户。所以要对内部用户实施零信任,这个也是笔者公司正在探讨的话题。
参考上海安几科技有限公司的首席技术官李帆在知乎上提出的零信任网络的八大流派,其中微软就是其中的一个流派,Azure AD Proxy就是它其中一个实现。
微软的想法是使用基于Azure AD有条件访问的Microsoft 365零信任网络,有条件访问和Azure Active Directory Identity Protection可基于用户、设备、位置和每次资源请求的对话风险等信息做出动态访问控制决策。把经过验证的并与Windows设备安全状态相关的运行时信号和用户对话和身份的信任度结合起来,以实现最佳的安全状态。核心就是Azure AD。
笔者对Azure AD进行过测试。笔者在家里的电脑上通过Azure AD访问公司的应用,Azure AD会要求笔者输入手机验证码进行多因素验证。但同样的操作,当笔者先使用VPN连接到公司的网络,然后使用公司的电脑通过Azure AD访问相同的公司验证,Azure AD会识别出笔者当前的网络状况和电脑状况,只需要输入用户名和密码就通过验证,不需要手机验证码进行多因素认证。这个就是Azure AD基于对笔者的运行环境进行动态评估的结果。
如果笔者此时断掉VPN的连接,然后访问当前的应用。Azure AD会弹出认证窗口进行再次认证,并且要求输入手机验证码进行多因素认证。这个过程是实时发生的。说明Azure AD会实时校验笔者的运行环境的变化,然后做出合适的处置。
基于笔者多年来对微软AD的使用和对于微软品牌的信赖,未来笔者公司的零信任之路应该是走微软流派之路。
对于微软来说,零信任可以在公司数据以及客户数据周围建立一套新的严格边界。同时,零信任为最终用户提供了简化的用户体验,允许他们轻松管理和查找所需内容。微软此举,亦是进一步增强整个生态系统的整体安全性。
微软零信任要求:
►所有位置的强身份认证 (通过身份验证进行用户验证);
►设备在设备管理中注册,其健康状态需要得到验证;
►根据当前的访问条件(时间,地点,目的等),给予最低用户权限;
►服务运行状况需要被验证 (未来目标)。
为了实现零信任,微软主要依靠用于设备管理和设备安全策略配置的 Intune、用于设备运行状况验证的 Azure AD 条件访问功能以及用于用户和设备对应的 Azure AD。系统与 Intune 一起,将设备配置要求推送到托管设备,然后设备将生成运行状况声明,并存储在 Azure AD 中。当该设备用户请求访问资源时,设备运行状态将会与 Azure AD 的身份验证一起被用于验证。
正如大家了解那样,一切安全措施都是又成本的。虽然微软零信任框架很理想,但是大家也不很难将零信任放到所有场景。在考虑安全和成本的平衡,笔者认为边界防御还是很有必要的。
笔者以开发环境与生产环境的边界隔离为例子。边界防御如同古代的城墙,防火墙开通的访问端口如同城门。一般情况下,我们不会运行开发环境与生产环境互相访问,只能在特定的条件下,允许特定的人,特定的过程通过特定的端口从开发环境访问生产环境。这样就如果一个人从城外通过城门进到城内,城门有士兵把守并且会检查这个人是否能够合法地进入城内。而零信任的动态连接相当于根据是否对这个人的审查结果随时根据需要在城墙上打个洞,然后放行。通行结束后就把洞给堵上。这种情形下肯定会成本更高,而去技术也更复杂。根据一般性的原则,越复杂的事情出现问题的概率越大,所以这意味着频繁的动态连接可能出现未知风险。
所以笔者认为,零信任也是有自己合适的场景,而不是一个万能的银弹。大家应该根据企业的需要进行合适的选择,有的时候,边界防御还是当前场景的最优方案。不用盲目要求一切都要追求最新最时髦的东西,而忘记安全为业务服务的本质。
磨刀不误砍柴工,笔者认为不对零信任深入理解而去谈零信任的落地实践是没有太多意义的,所以建议各家企业应该重视去理解概念,多听听乙方的宣讲,多进行比较,多做POC,多去针对企业自身的情况提出问题,这才是正确的零信任落地之道。
笔者认为对于乙方不要排斥,不要事事都要自己做才是可控的,因为拥抱乙方,并且通过实际测试来寻找合适的方案。对于同行或者不同行业的甲方的实践可以听但不能照搬,各个企业的理解和程度不一样,照搬方案未必是个好事。总的来说还是要结合甲方和乙方的意义,自己通过测试来验证和判断。
笔者认为零信任落地不是一个一蹴而就的过程,而更可能是一个符合PDCA的敏捷过程。
笔者还认为对于风险大家也要正确看待,有些风险值得处理,有些风险必须接受,只要一切都在掌握之中,并且与业务团队达到共识,这样的风险并不可怕。最可怕的是不知道风险而去盲目处理,这样可能事倍功半,得不偿失。
三月主题:《数据安全面面观》
征文 | 顾伟:关于中国数据跨境传输合规之思考征文 | 赵锐:云端数据安全浅谈征文 | 蔚晨:数据驱动的安全防控体系探究征文 | 张喆:在开放共享环境下的数据安全安在征文,3月月奖是谁胜出?
四月主题:《一个人的安全》
征文 | 周逸传:一个人的安全?我笑了征文 | 武鑫:一个人的安全,在变化中促成长征文 | 陈欣炜:一个人的安全,或许你要扛起整个公司征文 | 黄猛:一个人的安全?你不是一个人在战斗!征文 | 顾伟:一个信息安全从业者的自我修养安在征文,4月月奖是谁胜出?
五月主题:《网络安全“值钱”吗》
征文 | 陈欣炜:联合起来,让网络安全创造价值征文 | 顾伟:网络安全“值钱”吗?征文 | 赵锐 :从网络安全转向业务安全的价值实现安在征文,5月月奖是谁胜出?
七月主题:《社工记》
征文 | 沈青:网络安全社会工程学起源与应用征文 | 陈欣炜:邮件钓鱼测试和合规性要求征文 | 顾伟:从社会工程学到信息安全文化模型的创建征文 | 赵锐:无所不在的社会工程学安在征文,7月月奖是谁胜出?
十月主题:《攻防演练实务》
征文 | 黄乐:网络安全的矛与盾——企业视角看攻防演练征文 | 顾伟:攻防之道,红蓝对抗征文 | 叶翔:在企业内部搞攻防比赛,很难吗?征文 | 赵锐 :从漏扫到攻防演练,甲方如何选择安全测试?安在征文,10月月奖是谁胜出?
十一月主题:《不会做规划,怎么做安全》
征文 | 侯大鹏:利用5W1H方法,做企业信息安全规划征文 | 陈皓:年度安全规划–“我们不一样”征文 | 舒胤明:结构化分析,让5W2H贯穿信息安全规划全程2020征文
六月主题:《红蓝对抗中的心理博弈》
征文 | 王振东:红蓝对抗中的心理博弈
九~十月主题:《POC轶事》
征文 | 杨博涵:浅谈全流量安全分析系统POC测试征文 | 黄乐:安全产品POC那些事征文 | 金国峰:POC,不仅笑话与故事征文 | 李磊:安全运营视角下的POC测试征文 |蒋琼:从雾里看花到揭开面纱,新兴领域安全产品POC之我见“POC轶事”,安在征文大奖揭晓!
十一~十二月主题:《零信任》
征文 | 李磊:企业“零信任”落地实践探索与思考 ▼加入诸子云
齐心抗疫 与你同在