业务系统安全工程在阿里的实践|阿里巴巴 DevOps 实践指南
编者按:本文源自阿里云云效团队出品的《阿里巴巴 DevOps 实践指南》,扫描上方二维码或前往:https://developer.aliyun.com/topic/devops,下载完整版电子书,了解阿里十年 DevOps 实践经验。
随着企业的数字化演进,信息系统在业务中的地位越来越高。最早的信息系统主要是为了支撑业务发展,提升业务运作效率,后来逐渐发展成为业务,提供商业价值和成本优势。随着国家数字化政策的推进,信息系统的地位愈发提高,逐步引领业务发展,提供竞争优势。
面临的挑战
随着业务越来越强依赖信息系统,信息系统的稳定和安全问题逐步凸显,主要表现为以下三大痛点:
系统故障问题频发
由于越来越多的用户通过信息系统获取服务,一旦系统出现故障,造成的影响和损失都是巨大的。每隔一段时间,市面上都会出现一些大规模性故障,对业务带来严重影响。仅仅 2020 一年,就发生过这些故障:
2 月 23 日,微盟数据库被恶意删除,停止服务 7 天,市值蒸发超 10 亿元。
5 月 13 日,特斯拉服务系统宕机,市值一夜间蒸发 2800 亿。
6 月 3 日苹果 iCloud 云存储服务器故障,用户无法登录。
8 月 27 日,思科员工删除虚拟机,导致思科损失 1600 万。
12 月 25 日,谷歌服务全球性宕机。
频发的故障不仅会导致经济损失,影响用户的使用和体验,同时也会伤害企业的公信力,特别是在一些对于安全性要求较高的行业。
诱因复杂,控制难度大
随着业务规模的扩大,支撑业务的系统变得越来越复杂。这个复杂一方面体现在系统逻辑上,另一方面表现在研发团队的扩大带来的人员上的复杂性,例如研发运维人员变更变配、设备故障、误操作、恶意破坏、程序 Bug 等。这些都导致故障控制的难度越来越大,甚至出现屡控不住,越控越多的情况。
管理者缺乏安全感
据 Gartner Group 的调查,在信息系统经历重大故障后,至少有 40%的公司没有继续运营,而剩下的企业中,有 1/3 在两年内破产。系统的安全、稳定已经成为企业安全的重要命门之一。各种故障、以及众多潜在的系统威胁,也让企业管理者极度缺乏安全感。
解决方案实践
系统故障的诱因复杂,这导致单点的控制很难解决问题,需要一个系统化的解决方案。第一届天猫双十一,开发和运维人员需要整夜保障,随时解决出现的问题。即便这样,也会出一些意想不到的故障。2020 年,双十一的用户数量和销售规模和第一届双十一已经不可同日而语,系统也更加的复杂,但双十一大促的系统保障过程却越来越流畅,保障的人数也在持续降低。这背后是一个系统化的解决方案。
组织的顶层设计
组织设计是从组织层面设置专门的组织机构来负责系统的稳定和安全,包括最高层的安全生产委员会和各个研发部门的稳定性负责人。安全生产委员会的职能包括负责全局稳定性决策、安全生产规则制定、整体应急协同、安全文化培养、全局管控系统的规划与管理。当故障发生时,由相关人员负责故障应急与统筹。各研发部门稳定性负责人负责各系统的风险治理和稳定性保障,在研发、运维的过程中避免系统故障的出现。
事前的风险预防
防患于未然是安全的最高能力。事前风险预防包括事前分析系统的各个组成要素以及组成要素可能面临的威胁和存在的脆弱性,并将分析结果作为安全治理的输入。对于威胁,需要制定相应的措施避免或减少威胁的发生。对于脆弱性,需要针对性的进行巩固。比如对于经常会导致系统故障的系统变配操作,通过统一的变更平台集中管理各种变配申请,从而实现对变配操作的集中管控。其次,通过最小权限原则,限制操作人的操作权限,包括操作时间的限制、操作对象的限制和操作范围的限制。另外,每一次的变配操作,系统可以根据操作人、操作对象、操作类型等要素,计算操作过程中存在的风险。一旦发现过程中存在确定风险,则会直接阻断当前操作。如果是高风险,则会发起交叉确认流程。如果是低风险,则会直接放行。这种方式,既实现了对风险的实时管控,防止由于人为失误导致的故障,同时又平衡了研发效率与安全生产间的关系。
事中的实时监控
快速发现是避免损失扩大的重要手段。在系统运行的过程中,通过业务指标监控、应用程序监控、云资源监控相结合的方式,能够及时地发现系统存在的问题。一旦发现故障,按照事先制定的预案,系统会通知相关人员进行处理。其次,基于大数据和人工智能的算法,平台会实时预测相关指标的变化趋势,将故障预警的时间再次提前。
事后的快速恢复
尽管事前事中制定了详尽的方案,但是还是很难避免故障的发生。一旦故障发生,如何快速地进行故障恢复就是首先需要做的事情。按照故障的不同类型,可以使用的故障恢复手段有限流、拦截、熔断、快恢、降级、扩容、切流、重启等。不同的恢复方式都需要有相应的系统支持和日常的演练测试。
故障恢复后,安全生产委员会还需要组织相关人员排查和分析故障原因,制定整改方案,确定故障责任人,推进和落实整改方案,防止相同故障的再次发生。
业务系统安全工程
从以上的实践过程可以看出,企业很难依靠单一手段解决系统故障,而需要通过系统化的手段,从顶层的组织设计、事前的风险分析和策略制定、事中的持续监测和预警、日常的演练和事后的应急响应等多方面进行控制。
在传统行业中,为了保证生产经营活动能够正常运行,国家制定了一系列的措施使生产过程在符合规定的物质条件和工作秩序下进行,从而有效消除或控制危险和有害因素,减少人身伤亡和财产损失,保障人员安全与健康、设备和设施免受损坏、环境免遭破坏。在建筑、石油化工、交通运输、航空航天等行业,安全生产已相对成熟和完备,但在互联网领域还是空白。以下图采矿业安全生产流程为例,我们可以看出安全生产的管理要求已经落实到了作业的各个过程和环节。
参考传统行业中的安全生产解决方案,同时结合阿里巴巴内部的最佳实践,我们提出了业务系统安全工程解决方案,该方案是指导业务系统防范故障的安全指南,其目标是通过预防、监测预警、应急响应等手段,减少业务系统故障,保障业务系统稳定、可用和可靠,防范由于业务系统故障导致的资产损失和用户影响。
业务系统安全工程框架
由于业务系统以及故障原因的复杂性,单纯的从一个或多个点出发很难解决问题。业务系统安全工程以控制论和系统论为指导,以风险控制方法为工具,形成了自己的实施框架 IPDRI,即识别(identify)、预防(protect)、监测(detect)、恢复(recover)和改进(improvement)五个环节。从事前、事中、事后进行风险的控制,形成闭环的反馈网络。
其中,识别包括资产分析、威胁识别、脆弱性识别等。预防是为了避免风险的发生而采取的一定的预防措施。监测是监测系统和保护措施是否在正常的运行。恢复是在故障出现时快速的采取措施恢复系统的运行。改进是查找故障原因,制定改进方案避免相同故障的再次发生。
业务系统安全工程标准
在此背景下,阿里云联合国家信通院牵头起草了《基于云计算的数字化业务安全工程标准》,该标准是国内首部聚焦于保护系统持续正常运行的行业标准。标准的核心目标是保护业务系统能够持续正常运行,防范由于业务系统故障导致的资产损失和用户影响,保证系统的可用性、稳定性和可靠性。
标准规定了企业实现业务系统持续正常运行需要具备的各项能力,包括组织设计能力、风险分析与识别能力、策略与管控能力、监测与预警能力以及应急响应能力。
其中:
组织设计能力规定企业应设立顶层安全生产委员会,下辖公司安全生产部门,用技术手段提升风险控制能力,保障业务稳定;打造安全生产文化,确保人人重视、有持续性的提升;明确行为准则,用机制保护人,减少犯错,降低损失,以此快速推进稳定性治理,大幅收敛公司全局性故障和重大影响故障。
风险分析与识别模块帮助企业通过对系统的脆弱性、业务安全生产需求、系统已发生故障的分析,寻找影响信息系统安全生产的潜在风险。
策略与管控模块是针对已经分析发现的风险制定安全生产管控策略,通过降低、预防威胁的发生,提前巩固、消除脆弱性等手段预防风险的发生。
监测与预警模块是通过业务状态监控、云资源状态监控、大数据风险分析与预警以及预警管理等能力,快速发现风险。
应急响应模块规定了企业缩短故障时间、快速恢复故障应该具备的响应和快恢能力,包括容灾演练、切流、限流、降级、重启、拦截、扩容等能力。
总结
系统的安全受内部和外部双重影响,在防止企业系统受外部影响上,信息安全目前相关的理论研究和产品建设已经较为完善。当前系统故障的更多原因是由于企业内部问题导致的,信息系统安全工程作为降低系统故障的体系化解决方案,未来的相关理论研究、产品服务也将得到快速发展。
【关于云效】
云效,云原生时代一站式BizDevOps平台。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现 10 倍效能提升。
版权声明: 本文为 InfoQ 作者【阿里云云效】的原创文章。
原文链接:【http://xie.infoq.cn/article/a3a9aa2a50612ed3c71b00d8f】。文章转载请联系作者。
评论