本文来源于微信公众号:有赞coder

因本周行业内公司出现了严重的系统安全事件,很多投资人和商家都来询问有赞,有赞有没有这样的问题,有赞是如何做系统稳定和安全管理的?花心思做好这个事情要多少成本?基于大家的疑虑和担忧,我们觉得有责任和大家就“系统稳定与安全机制”这个话题做一个交流。有赞CTO崔玉松、有赞CFO俞韬(同时兼任有赞安全和风控团队负责人)与投资者进行了分享。

为了让更多人听懂看懂,我们尽力做到通俗易懂,讲出一个技术逻辑的时候,赶紧打一个生活中常见的比方。希望大家读完,能有“被科普到”的获得感。

以下,是本次电话会议的整理解读稿。

大家好,我是有赞的桃子,截至今天为止,我们关注到的那个事件应该已经是中国互联网公司史上持续时间最长的宕机,每多持续一个小时,都在创造新的记录。

我们今天分享的主题是SaaS系统稳定和安全。

昨天有朋友问我,你一个CFO能讲得清楚系统稳定性和安全问题?

有赞有句金句叫“真诚的友谊来自不断的自我介绍”,简单自我介绍几句:我很庆幸,也很幸运,大概10年前,我开始在一家中国互联网巨头公司工作的时候,就以一个财务的角色参与过中国互联网历史上著名的“全面去IOE项目”(IBM的小型机、Oracle数据库、EMC存储设备),以自研的系统取而代之。还有灾备机房体系的建设项目,某云计算的历史性的登月项目等等;在有赞,可能大家不知道,我在CFO的职责之外,还全面负责有赞的安全和风控团队。从2014年开始,我们就在持续对抗各种DDoS攻击、有组织的黑产攻击、信用卡盗卡、网络欺诈等各种安全事件。

今天,我们的分享大致分为3个部分:

  1. 与系统稳定和安全相关的因素、角色有哪些,都是什么概念?
  2. 常见的影响系统稳定和安全的事件是什么,怎么应对?
  3. 删库对商家来说意味着什么?

系统安全、稳定相关的

概念、角色有哪些?

by 崔玉松

系统稳定性

稳定性的衡量,我们经常听到99.99%可用,或者3个9,4个9,什么意思?一年有365天,8760个小时,525,600分钟,31,536,000秒。不可用的时间(秒数)除以31,536,000秒,就是不可用率;100%减去不可用率,就是稳定性,就是这么算的。

业界比较优秀的公司一般能做到 99.9%,也就是我们常听到的“3个9”,最好的能达到“4个9”,也就是99.99%,差一点的“2个9 ”,也就是稳定性99%。

99.99%、99.9%、99%,三个相差不到0.01的数字,差异其实是很大的。拿我们上班时间来类比:

99% ,相当于系统正常上班,有双休、节假日。

99.9%,相当于系统有双休、没有节假日。

99.99%,相当于系统全年无休,保障随时可用。

有赞核心系统可用性已达到 99.99%,也就是每年仅有 0.01% 的时间不可用(=52.6分钟、3156秒)

机房、服务器、硬盘、网络(光纤)

硬盘是基础存储单元,硬盘在服务器里,服务器部署在机房里,公有云机房由IaaS云服务商建设并提供给其他互联网公司使用。

IaaS云服务商

腾讯云、阿里云、华为云、AWS、UCloud都是IaaS,他们建设物理机房,虚拟化之后给其他互联网公司用。

网络运维

保障网络的质量和可用性,管理往来的交通流量,类似现实生活中的交警。

DBA(数据库管理员)& 研发工程师

DBA这个角色,负责管理数据仓库,只有他们才有仓库高级许可。其他人把需求告诉DBA,DBA来规划、分配数据库,以有限的权限使用。

研发工程师这个角色,负责设计具体业务需要的技术架构和写代码,需要在DBA分配的数据库上工作,都有自己和所在技术业务单元的一亩三分地。

生产数据库 & 备份数据库

不同数据库有不同管理员,删除的指令属于正常需要之一,就像做厨师需要菜刀一样。但前提要有备份,而且有多个备份。就算一个库被删,系统自动调用备份库,这个过程用户端应该几乎无感知。

总结一下协作关系:

举例来说,IaaS云服务商搭建了一个办公空间,再给到有赞这样的SaaS公司来租用,需要多少租多少。比如有赞租了其中一层,包含大量工位,我们的DBA相当于行政,把这层空间再分割成不同办公区域,指派给不同业务单元的工程师工作,同时负责办公区域的安全。

这个办公空间可以是精装的、也可以是毛坯的,选哪种取决于自己的需求、预算和技术能力。比如选精装的,最省事却没办法满足个性化的需求;选毛坯的可以决定装修风格、用什么家具,这部分“家具”就包括:数据库管理软件、防护措施等。

影响系统安全和稳定的事件

与风控措施

by 桃子

首先,我想说的是,所有的风险都伴随着一定的概率,风控措施就是将风险概率降低到可接受的水平,或者将风险事件发生时带来的损失控制在可接受的水平。当然,所有的风控措施都有对应的成本,也就是钱和资源。

每个公司对于“什么是可接受的风险水平”都有自己的判断,对降低风险或风险带来的损失需要付出的财务成本,接受意愿也各不相同,这就导致了不同公司保持系统稳定和安全的能力是不一样的。

我们认为,互联网公司保持系统稳定和安全的能力不仅仅是技术能力的问题,更是态度和意愿的问题。不仅仅是你行不行,更多的是你愿不愿意。

下面我想分享的是行业普遍存在的几类影响系统安全和稳定的事件及应对措施:

灾害/不可抗力,属于被动的风险事件。

轻一点的,比如大家经常会听到的,机房断电了,光纤被施工单位挖断了;严重一点的,机房所在区域遭遇地震/洪水/火灾了,也就是机房不可抗拒地被团灭。

这种就属于不可抗的偶发事件。怎么办?做“灾备”。顾名思义,灾难备份。一个不够,备份两个。担心一个机房挂了,数据就放在多个机房。担心一个IaaS云服务商挂了,那就用2个以上的IaaS云服务商。

有赞的灾备是怎么做的?

首先,我们在IaaS层面,有腾讯云和UCloud互为备份,并在每个服务商的不同机房备份。退一万步讲,即使一个云服务商出现问题,我们可以“自动”切换到另外一个机房,并在5分钟之内恢复95%的流量,极限情况下,最长30分钟是可以完全恢复的。当然这个预警速度、切换速度,在切换和调用备份时客户端的感知和实际的影响,就因你的技术能力而异了。

另外,在备份方式上,我们热备冷备并存。“热备份”就是数据的实时备份,也就是一边生产数据,一边备份数据。“冷备份”指的是数据的离线备份,比如,每天固定时间备份过去一天的数据。

因为“不可抗力”是小概率事件,并不是很多互联网公司做了“灾备”。可能心存侥幸,或者觉得灾备的成本太大了,不想做。一个备份的成本是1,10个备份的成本就是10,再使用3个云服务商,那备份成本就是30。所以安全性和成本是相关的。当然,技术能力可以优化成本和备份数之间的线性关系。无论如何,技术是有成本的;想做好,就一定要重视,要愿意花成本。

网络攻击,属于主动的风险事件。

最常见的网络攻击之一就是DDoS。

DDoS是什么?Distributed Denial of Service的缩写,即分布式阻断服务,黑客利用DDoS攻击器控制大量机器同时攻击,来达到“妨碍正常使用者使用服务”的目的。

翻译一下:如果将我们的系统服务比喻成一个城市交通网络。正常使用者的需求,就是在城市里正常通行,而DDoS就是人为用车在各种立交桥、高架、隧道设置路障,人为造成交通拥堵甚至交通瘫痪,那想要正常出行的人就没法通行了。DDoS的显著特点是:第一,一定是人为的;第二,攻击方也是有成本的,因为想要故意造成交通堵塞也需要大量的车,租车是需要钱的。所以DDoS就是花自己的钱让别人不爽。

我们偶尔也会被DDoS,这事攻击方要花费成本,我们也需要花费成本来应对。

另外一种网络攻击,叫做“拖库”。

大白话说,就是找黑客溜进技术系统,拿走或者复制走他想要的东西,比如数据。常见的大家新闻里能听到的就是用户数据被泄露,或者酒店的开房记录被泄露之类的。

这种事情又要怎么防呢?

最基础的,生产网络和办公网络要完全隔离,测试网络和真实网络要分别部署堡垒。想一下,我们是怎么防止小偷入室盗窃的?就是在家里装防盗窗、防盗门,建围墙,围墙上加电网,用钢板加固墙体,装非法入侵的红外报警装置,准备武器对抗入侵。这些也还只是防御措施。

除此之外,我们还会组织模拟攻击。比如,每个月组织内部团队进行模拟网络安全渗透,让自己内部的资深工程师攻击自己,以己之矛攻己之盾。目的当然不是测试矛,而是测试盾,最希望看到的结果是矛都折了而盾还完好。

每个季度,我们还会做第三方安全众测,邀请第三方顶尖的“白帽子“来模拟攻击我们。我们按照他们找到的漏洞来优化升级我们的系统。这类措施有点像用极端真实的军事演习来模拟战斗能力和防护能力。技术能力是没有极限的,需要时刻保持“魔高一尺道高一丈“,与时俱进。

最最关键的是,我们坚定认为,系统的安全靠喊是喊不出来的,是靠做出来,靠打出来的。

补充一下,有赞在系统安全和稳定方面,还获得国际顶尖认证:

有赞主体的SaaS业务拥有ISO27001信息安全管理体系认证、CSA C*STAR云计算安全国际认证、信息安全等级保护(三级)等认证;持牌公司“高汇通”的支付业务通过 UPDSS银联卡支付信息安全管理标准,信息安全等级保护三级 ,监督保护级等认证。这些认证的证书,我们一直公示在有赞官网的“权威认证”页面。

这些认证信息的一句话白话版:有赞的安全防护水平是银行级别的。

服务器瞬时峰值超载,

属于常规原因导致的不稳定。

在双十一大促的时候,在商家搞周年大促的时候,都有可能出现这个情况。简单来说,就是瞬时的使用峰值超过了系统能够承载的最大值。比如,高速公路平时都不太堵车,放长假大家都涌过去,尤其在同一个时点,就交通堵塞了。比如,上下班高峰也会堵车。

为了应对这个情况,我们不断在优化系统性能。打个比方,汽车在高速路上行驶,路还是这条路,但是突然车子特别多起来,我们可以通过技术优化,保证每辆车子都快速顺畅通行,比如优化信号灯、扩建交通要道的通行能力,按照需要灵活临时扩充车道,优化路面等等。

我们在2019年双11期间,订单和访问的峰值是平时的10倍以上,系统完全没有波动。通过技术调度系统,动态调整峰值,既满足商家稳定做活动,又能节约成本。

从技术性能上,有赞系统支持每秒6万笔交易,页面打开仅需1秒。有赞云开放接口数量1000+,日调用量超5亿,吞吐自如。

人为操作错误/失误/破坏,

属于内部管理因素。

删库是什么意思?就是数据库被删除了。所有的代码都是人写的,所有的系统都需要人维护,有人的地方就一定有风险。

那大家可能会问,这不是无解吗?其实也不是。尤其是资本市场的朋友,大家一定很熟悉一个非常简单有效的词:内控。

有赞具体是如何做的?

一是需要做流程管理,就像前面说的DBA和工程师角色分离,网络运维和数据运维分离,有些公司为了节省成本,让一个人干多个角色就会大大增加这种风险;二是要做权限隔离。生产数据库和备份数据库在不同的人手上管理,不同的备份在不同的DBA手里管理,就像公司银行账户需要有两个以上的Ukey才能完成支付一个道理。

在有赞,连我们CTO都没有权限用一台电脑、一套账号密码完成删库的动作。

退一万步来讲,哪怕真有人删了一个数据库。行业内有技术底子和持续技术积累的公司,都可以做到随时启用恢复在任一灾备机房的任一备份数据库。通过备份数据库来做恢复,恢复的时间和团队技术能力、数据存储量是强关联的,但这也仅仅是分钟级、小时级、数小时级别的差异。需要耗费几天,绝对是不可思议的,除非还有更多没有公开的信息。

还有很多其他措施,也可以说说:

机房部署严格的访问控制。严格分员工分角色,授予产研团队员工使用权限时做到最小授予。什么是“最小授予原则”?就是授予的权限不大于他的工作职责需要。

人员安全和风险管理。经常在测试环境演习各种人为操作造成的风险事件以及应对措施,打磨好生产环境快速恢复流程。要不然真出事的时候,团队每个人都不知道该干嘛,该听谁的指挥,各项工作先后顺序是什么,二次灾难怎么预防。

主动预警和监测。通过日志管理,形成进入生产网络完整的用户登录、操作日志,可追溯何时、何人、做了何种操作,异常操作实时报警,系统自动响应,高危操作多重审批。运维人员7*24小时有人在线。有时候看到我们运维的同事下午才来上班,可能就是昨晚在应急响应。他们的工作非常辛苦,整个团队要保持时时刻刻的战备和战斗状态。

反作弊,对抗黑灰产薅羊毛

这类事件在交易类SaaS中尤其危险。商家进行各类营销活动,比如发放优惠券、代金券、抵扣券、折扣卡... 这些都是有实际价值和成本的,都是实实在在的营销预算。商家原意是让利给消费者,刺激消费和社交传播。但始终有黑产、灰产的人像秃鹫一样盯着这类活动,有组织、有技术地“薅羊毛”。这个问题涉及商家资产安全,为此有赞在帮助商家反作弊上投入了非常多精力和资源,保障商家的钱都用在刀刃上,而不是被“薅羊毛"。

“删库”会给商家带来哪些影响?

by 崔玉松

从单个商家角度看,部分数据丢失意味着商家不知道订单是否支付、商品是否发货、进店消费的人是否应该享受会员折扣、老顾客积分还有多少、储值卡里还有多少钱等等。由此引发系统混乱,商家和消费者之间的矛盾会集中爆发。消费者跟商家扯皮,不信任商家,就是要商家的命。

从大数据的角度看,消费者是商家最重要的资产,大数据的丢失,会造成包括消费者性别、年龄、偏好等画像标签的丢失。失去这些标签就是直接毁灭了精准营销的基层逻辑,精准营销将无法精准。

造成商家直接财务损失。以有赞为例,2019前三季度有赞商家的GMV是380亿人民币,平均每天1.4亿交易额。如果删库造成业务停摆,每一秒钟都是商家流失的收入。

尤其是现在特殊时期,线下商业被按了暂停键,线上是商家开门做生意的唯一窗口。电商业务为很多商家开了一扇窗,现在某些地方商家的这扇窗又被人为地关上了。我们非常忧虑,忧虑这些商家的生存状态。我们这几天也收到了很多商家的求助,他们的生意线上线下都休克了。我们希望帮助到这些商家,这也是有赞在业务层面发了江湖救急公告的原因。希望能帮上忙。

牵扯后续赔付、补偿。有赞护航承诺,核心服务终端我们将给予102.4倍服务期补偿。不稳定一分钟,补偿102.4分钟。如果不稳定一天,一个商家补偿102.4天,按我们的客单来算,相当于3500元。1万个商家就是3500万元、10万个商家就是3.5亿。如果不稳定五天,这个账,没敢算。

2017年11月27日,为了让“系统稳定高于一切”不断地做到极致。有赞推出了“护航计划”,并正式宣布:有赞微商城如果出现系统不稳定影响了客户的生意,就按照不可用时间给予对应 102.4 倍的补偿。这是整个信息服务行业里没有的最最高规格的“承诺”。2020年1月1日,有赞零售、有赞美业也正式加入“有赞护航”。有赞因技术故障对商家的每一次影响,我们都公开、自动、动态显示在有赞护航的官网上,符合护航补偿界定范围的,都有护航补偿公告。因为透明,所以信任。因为信任,所以承担。

也可以一并说说腾讯云、百度云服务不可用的赔偿标准。腾讯云是低于99.9%但等于或高于99%,赔偿相当于月度服务费10%的代金券;低于99%但等于或高于95%,赔偿相当于月度服务费25%的代金券;低于95%,赔偿相当于月度服务费50%的代金券。而百度云是低于99.99%但是等于或高于99%,赔偿相当于月度服务费10%的代金券;低于99%但等于或者高于95%,赔偿相当于月度服务费25%的代金券;低于95%,赔偿相当于月度服务费100%的代金券。

当然,腾讯云和百度云这类IaaS和有赞这样的SaaS还是有些不一样。有赞在SaaS行业3年前就公布了护航计划,坚持影响做生意就补偿,对自己的严格苛刻,都是源于要让商家安全、稳定、放心地做生意。

出了问题,就应该给商家补偿,这是道义。如果要补偿,就应该公布补偿方案,让大家监督,让大家看到担当,这样大家才会信任你。藏着掖着,是糊弄不过去的。这个道理非常浅显。

我们不得不再次强调一下:

所有风险都伴随着一定的发生概率,风控措施就是将风险概率降到可接受的水平,或者将风险事件发生时带来的损失控制在可接受的水平。当然,所有风控措施都有对应的成本,也就是钱和资源。各个公司可接受的风险水平不同,愿意为之付出的财务成本也不一样,这就导致了大家保持系统安全稳定的能力也不同。

“保证系统稳定和安全”一直以来都是有赞产研团队的核心OKR。有赞内部把各种项目用P1、P2、P3来分优先级,数字越小重要性越高。有两类项目永远是P0级别的,就是保障系统安全的项目和保障资金安全的项目。在团队构成上,有赞产研团队一直保持在全员一半左右的比例,以此保证研发迭代能力和安全防护能力。

有赞吉祥物霸王龙的故事,也与系统稳定安全密切相关。

霸王龙的由来

有赞早期系统宕机服务不可用时,会出现一个有霸王龙的出错页面,久而久之这个霸王龙就变成了代名词,一旦出问题,商家就喊“霸王龙来了”。为了让小伙伴牢记这个耻辱,我们把霸王龙定为公司吉祥物,后来还请世界著名的漫画大师宫西达也为我们定制了一个霸王龙形象,做成各种玩偶、摆在公司各个角落,用来提醒大家时刻关注系统稳定性,不要再让霸王龙出现。

我们认为,互联网公司保持系统稳定和安全的能力,不仅仅是技术问题,更是态度和意愿问题。不仅仅是你行不行,更多的是你愿不愿意,用心不用心。

我们认为,在互联网行业、尤其是SaaS行业,系统的安全和稳定就像一幢大楼的地基,地基不稳、大楼迟早坍塌。但是地基是看不见的,牢不牢只有自己知道,只有灾难知道。

为此,我们始终坚持“系统稳定高于一切”,为商家保驾护航,帮助每一位重视产品和服务的商家成功。