转眼间 2018 年的进度条已经拉到 98%,年底正是大家忙碌的时候,我等上班族忙着做年终总结,学生忙着复习功课准备期末考试,而在支付宝大楼里,本周也在进行着技术人员的期末考试:红蓝军技术攻防演练。
12 月的第三周,是支付宝技术人的“期末考试”。今年从 12 月 7 日开始,在支付宝办公大楼 6 层的一间办公室里,9 名技术人员身穿统一的蓝色 T 恤,在一排蓝色的可乐山之后紧张地工作,他们就是支付宝的专业技术蓝军,他们的工作是对蚂蚁金服的各个业务线系统注入故障进行攻击。而各业务线的技术人员则作为红军,要对蓝军发起的突袭见招拆招,抵御他们的进攻。
支付宝蓝军诞生背景
红蓝军技术攻防演练与蚂蚁金服的技术风险部发展息息相关。不管是数据中心遭雷劈光缆被挖断这样的天灾,还是人工操作失误代码 bug 这样的人祸,真实的故障都是随机和不确定的。支付宝人意识到,如果只能等真实故障发生时才能够检验,防控能力将处于被动的局面,所以他们必须要有未雨绸缪的策略,提高对技术风险的防御能力。
2015 年,支付宝把原来的技术质量部正式升级为技术风险部,专注研发及架构的技术风险问题,并完成相应解决方案和落地平台。2016 年,技术风险部再次升级为 SRE 团队。蚂蚁金服技术风险部负责人俊义介绍说,相较于谷歌提倡的以确保网站可靠性为目的的 SRE 实践来说,蚂蚁金服的 SRE 团队其实更应该叫做 TRE (Tech Risk Engineering),因为蚂蚁金服的 SRE 团队除了要确保网站、应用的可靠性,还花了很大一部分精力来建设技术风险防控的能力。近年来蚂蚁金服自研的分布式数据库 OceanBase,金融级分布式中间件 SOFA,TRaaS 技术风险防控平台等技术,从底层基础设施到平台都在不断加强支付宝体系的抗风险能力。
SRE 团队成立后不久便发现,以往的技术攻防演练几乎都是小打小闹,不成体系,也很零散。同时,技术团队发现了两个极为重要的现象,一是生产故障不是必然的,而通常都是偶然性的;二是生产故障是低频的。这样就带来了一个很大的问题:故障的样本很少。这意味着,没有办法证明,在真实的故障到来的时候以前设计的平台和能力是不是管用。也就是说,SRE 团队建设的防御系统的可靠性,无法充分验证。
2017 年 7 月,SRE 团队成立了专门的、独立职能的技术蓝军,其主要的工作就是发掘防御系统的弱点并发起真实的攻击。技术蓝军并不对各业务方负责,只对这套防御系统的稳定性和可靠性负责。
在技术蓝军看来,故障的发生是必然的,只是时间早晚而已,技术蓝军要想尽办法去触发这些故障,这样,在故障真实发生的时候,才有足够的应付能力。所以,技术蓝军发掘各类脆弱点,并高频地制造任意可能发生的故障,以验证防御系统的可靠性。
红蓝军对抗
蓝军的执行军长阿贵,在支付宝有十余年的工作经验。当我们惊讶于蓝军团队目前总人数不超过 10 人时,阿贵说是的,尤其刚开始时感觉是在“以一己之力挑战整个公司的技术人”。阿贵介绍说,蓝军要做的事情是去找各个业务线系统的脆弱点,并想尽办法去触发这些脆弱点。攻防对抗发生在镜像系统中,该系统可以模拟生产环境中的流量行为,避免对线上环境造成影响。
红军按业务线分为 8 支队伍:红一支付军,红二微贷军,红三财富军,红四保险君,红五芝麻军,红六国际军,红七安全军和红八平台军
技术蓝军日常的工作除了要对各业务线系统发出攻击,还要从历史事故中总结或从代码逻辑中找漏洞,把故障表现模型抽象出来,基于模型去发现系统的脆弱点。但是蓝军一共还不到 10 个人,要找出蚂蚁金服全局系统的脆弱点,阿贵承认压力还是很大的。“在团队招人的时候,除了看他们是否有好奇心,对高可用是否有很深刻的理解,候选人心理承受能力也相当重要。”蓝军团队平时还需要开发故障挖掘平台,设计探针和算法来采集和分析数据。
2017 年秋天,蓝军团队在成立后的两个月内,自主研发了无侵入式故障注入系统 Awatch,可以实时地对运行中的业务系统进行任意链路的编织侵入。2018 年 3 月,蓝军推出故障场景挖掘平台,基于 Awatch 探针探测应用内数据流,以此进行“弱点挖掘”。这套弱点挖掘体系,能够自动发现故障场景,最高能够在 5 分钟内产生 500+的故障场景。
而红军方面自然也是见招拆招。据俊义介绍,红军不像蓝军专门抽出了一支队伍,而是分布在各个业务线。当有人感觉到系统可能受到了攻击,他会主动站出来去处理问题,这时候他就是一名红军。而在平时,各个业务线也会有专门的值班机制来紧盯系统是不是受到了攻击。
蓝军有自己的故障挖掘平台,红军也练就了一身好的防御本领,祭出了全链路压测平台和资金监控平台,能很好的监测故障并进行预防。同时红军也加强了“故障自愈”架构体系升级及能力建设,以效能为目标,结合仿真,红蓝军一起研发了“无损”攻防体系,并且推出与之匹配的度量平台,自动度量攻防结果,将数据可视化。
红蓝军双方在相互较量中共同提高蚂蚁金服的技术风险防控能力。有时候蓝军发动的攻击会被红军的故障自愈体系防范住,这时候阿贵也会觉得“有点失落”。也有的时候会有红军找蓝军理论:这种低概率的问题为什么要费劲去改善?但是在阿贵看来,不管一个问题发生的概率有多低,都应该被注意到,并尽量对系统做改进以消除这些隐患。所以在红军感知到蓝军确实攻击到脆弱点之后,会及时进行修复,如果不能在短时间内修复的,也会和蓝军约定时间提交修复方案。
目前,常态红蓝技术对抗保持每周 200+个故障场景的节奏在持续运作。而在期末考期间,蓝军的攻击密度会大大提升,在一星期内对各业务线猛烈地发动大约 1000 个攻击。在期末考之前,红军也有个传统,就是拜关公,给关二爷孝敬点瓜子、旺仔牛奶甚至是格子衬衫,这也是蚂蚁金服独特的工程师文化之一。
大概从 2012 年开始,在每年备战双十一的时候,支付宝技术人都会拜一拜关公,而关公也从照片到木质再到铜质不断升级,成为支付宝人的一个传统:既是一种仪式感,也代表了支付宝人对技术的敬畏之心。
在期末考试中,红军会按照发现攻击的时间和故障恢复的时间来进行排名。去年,红军的第一名和最后一名分别获得了“金算盘”和“烂算盘”的奖品。阿贵对烂算盘印象深刻:是真的烂,铁杆绣到发黑,算珠也有缺口,“也就只有在淘宝上能买到了”。
考试有排名,目的不是争输赢
当被问到是希望红军赢还是蓝军赢,阿贵回答说,其实红蓝军攻防演练并不是为了要争谁输谁赢。而是双方在对抗的过程中都能不断反思升级,了解到蚂蚁金服全局系统中有哪些容易出问题的脆弱点,在现实生活中发生问题之前把问题免疫掉,再大的问题也能达到 5 分钟故障恢复的目标。因为金融行业关系到我们的日常生活,很多时候甚至会关系到整个社会的稳定。支付宝迄今全球活跃用户已超过 9 亿,安全稳定的技术系统是事关生死的基石。
除了平常的故障演练红蓝军技术攻防,蚂蚁金服还在前沿技术上不断探索,致力于打造更稳定安全的技术体系,如:
AI。使用人工智能技术进行校验业务。蚂蚁金服内部有四道安全防线:第一道是研发团队的代码,第二道是质量团队,第三道是 SRE 团队,第四道是人工智能技术。目前蚂蚁金服已经在其资金安全监控系统中使用 AI 技术,利用算法自动识别异常,做到故障自愈,再结合蚂蚁金服的 TRaaS 技术风险平台,可以覆盖蚂蚁金服 80%以上的业务。
区块链。安全是区块链技术的一大特点,而金融行业是对安全性、稳定性要求极高的行业,所以当区块链技术刚被提出的时候,金融被认为是最主要的应用场景之一。蚂蚁金服也在探索区块链技术,比如用于做容灾等,在未来也计划打造安全可靠的区块链平台。
经过不断的打磨和锤炼,支付宝的技术风险防控体系已经具有较好的可靠性和稳定性。从蚂蚁金融科技官网上可以看到,这些技术风险相关的能力已经对外开放,目前共有 3 款产品,包括容灾应急平台、全链路压测和资金安全监控;另外,变更管控、巡检平台和黑屏运维管控即将上线对外开放。
写在最后
任何系统和软件都不可能做到十全十美,只要是人在写代码,就难免会有漏洞,难免有考虑不到的盲区。我们身处技术改善生活的时代,也需要对技术保持敬畏之心,居安思危未雨绸缪才能设计打磨出更加稳定易用的产品。当今年双十一能顺利完成再创新高的 2135 亿交易纪录,当支付宝能扛住 25.6 万笔/秒的交易峰值,这背后离不开这支蓝军队伍的专业“找茬”,也离不开所有支付宝技术人强烈的风险意识。
评论 1 条评论