速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

攻防大战的背后——矛盾双修

  • 2020-09-21
  • 本文字数:2148 字

    阅读完需:约 7 分钟

攻防大战的背后——矛盾双修

1 Chaos 体系

1.1 Chaos 之混沌工程

混沌工程是在分布式系统上进行实验的学科,通过一系列可控的实验和执行实验的原则,揭示出分布式系统中随时或天灾或人为发生的各类事件是如何逐步导致系统整体不可用的,目的是建立对系统抵御生产环境中失控条件的能力以及信心。最近 2 年国内著名互联网公司已经开始意识并逐步实施,提高系统服务质量。

1.2 混沌的框架原则的理解


爱奇艺金融科技团队的混沌原则更多的是应对不可预知场景下系统架构、人员架构对于问题的应对能力,如隔离、告警、自我修复能力等,主要倾向工程层面、架构层面、研发流程体系层面、灾难预警恢复层面等。

1.3 Chaos - Monkey

理想的 Chaos Monkey 是 Chaos 体系的执行者,是基于场景为某个特定目标而生的,是一种可执行、可按预期销毁的手段。它主要负责寻找系统中任意一个盲区,并且利用盲区对系统实现某种程度并且可控的破坏。

2 矛盾大战的目的和设计

爱奇艺金融科技团队在高安全、高并发、高可用上遇到了很多挑战,同时金融系统相比于常规系统,在用户隐私、资金安全、敏感数据上有极高的要求,因此我们构建 Chaos 攻防模型,不断实施攻防对抗,逐步提高系统健壮性,为业务保驾护航。


目标如下


  1. 建立 Chaos Monkey 的攻击能力、执行流程来辅助及验证服务架构的实施效果,从而给架构演进提供指导和参考价值;

  2. 建立架构与业务的生产关系,达到架构与业务的双向促进,提高系统稳定性、可用性、健壮性;

  3. 通过架构与业务生产关系的良性循环,提高技术同学对整个系统的掌控力、技术实力更好的为业务服务。


混沌工程自循环之生产关系



  • Chaos 攻击能力的建设及升级


按照不同时期、不同要求、不同目标训练建设 Chaos Monkey 的可实施、可落地的攻击能力。


  • 制定计划及设置风险范围


Chaos Monkey 能力训练满足要求后,按照假定目标制定整个实施计划,包括执行时间、执行过程、影响范围、执行手段、结果预期、故障恢复、是否静默执行等,最后进行自动化实施准备。


  • 执行与反馈


执行前 check 无异常后开始实施同时观察监控系统、业务系统、告警系统,实施结束后恢复当前系统并给出相应反馈包括详细描述,优化建议等。


  • 系统优化及能力提升


业务 owner 收到结果反馈后需对已存问题进行 review、评估整改方案、修复计划并检查同类问题,最后进行系统升级。


  • 修复验证及业务需求


收到业务系统升级上线通知后再次与业务 review 预期目标,然后进行验证性攻击检验修复效果同时记录 case 库。


业务 owner 也可以向 Chaos Monkey 申请攻击来验证当前系统的真实情况。

3 Chaos 攻防的拷问及设计实施原则

Chaos 攻防的拷问


  1. 支付、金融 架构设计 是否存在问题?

  2. 原来的架构设计是不是不再符合我们的预期了?

  3. 设计方案和当前生产系统实现之间差了多少?

  4. 支付、金融 服务底线 都是什么,支付、金融服务的隔离颗粒度?

  5. 我们能承受哪些,能承受多长时间,我们不能承受哪些?

  6. 我们 系统的高可用程度

  7. 高可用节点切换过程会发生什么?

  8. HA 的切换手段、切换(不可用)的间隔?

  9. 切换成功的时间和一致性的时间是不是有关?等等。


设计实施原则


  1. 为设计漏洞、代码缺陷而生同时面向生产环境,做到要发现问题更要可控;

  2. 不拘于手段和形式。不论是使用开源工具,还是切断网线、偷偷杀掉进程、还是进程植入,内存数据篡改都是一种面向某个目的可实施手段;

  3. 监控告警辅助支撑,最大化风险评估,细化到流量的损失控制等。

4 攻防战绩

4.1 执行大类分布

4.2 已执行攻防 case 分类列表

4.3 实战案例举例

例 1:验证支付系统微服务 Spring Cloud 套件的高可用机制


涉及 Eureka Server、Client、Ribbon LB 及当前业务对配置掌握的合理性。


  • 验证结果: 当前架构能在 30s 内应对下游节点的无前兆故障。

  • 优化建议: 调整 LB 的探测时间,Eureka Client、Ribbon Cache 缓存时间,服务心跳续约,Eureka Server 服务剔除、数据同步时间等加强架构对故障的应对能力同时减少类似问题对业务的影响。


例 2:攻击金融业务系统中非核心依赖的中间件


暴露发现系统设计的健壮性问题。


  • 执行结果: 非核心依赖中间件发生服务抖动、服务故障时系统无降级策略,直接导致整个业务无法服务,不符合架构原则。

  • 优化建议: 业务系统增加对非核心依赖故障的降级及切换策略。优化连接池配置来应对当非核心依赖中间件出现问题时降低性能损耗及减少切换的时间差。

5 思考总结

5.1 总结

随着 Chaos 体系的逐渐成熟,体系内自驱力逐渐减少,Chaos 会进入一个新的阶段就是常态化。这个阶段不再是以暴露发现系统现有实施问题为主,而是面向系统架构的将来以及系统健壮性、可用性的稳固。主要有以下几点:


(1)自动化安全巡视


Chaos 将进入不定期按照已经积累 case 库进行自动化巡检。


(2)基础架构高可用由谁来监控


Chaos 进行不定期面向架构层面进行实弹演习,检验他们的战备值班能力。


(3)新技术、中间件的探索验证


对于新技术、新中间件甚至是自研的中间件可利用 Chaos Monkey 进行符合业务需求的健壮性、可用性探测验证。


(4)举一反三


建立线上故障 case 库,定时重播线上故障。

5.2 思考

(1)让业务能更直观的感觉到他守护的东西及带来的价值;


(2)增加覆盖面,有的放矢,针对实际情况调整目标及方向;


(3)建立可视化、模板化能力。丰富 case 库并支持重复攻击演练及跟踪。


本文转载自公众号爱奇艺技术产品团队(ID:iQIYI-TP)。


原文链接


攻防大战的背后——矛盾双修


2020-09-21 14:001626

评论

发布
暂无评论
发现更多内容

python 内置数据结构list、set、dict、tuple(三)

若尘

List 数据结构 set 元组 Python编程

牛P牛P!Github上堪称2021最全、最新Java面试题库到底有多香?

比伯

Java 程序员 架构 编程语言 技术宅

AIOps智能运维

进击的梦清

运维自动化 AIOPS 智能

Storm-实时计算系统

进击的梦清

大数据 批处理 Storm

2021年IT行业八大趋势预测

禅道项目管理

自动化 数字化 技术债 行业趋势

百度大脑开放日福州站-智能制造与安全生产专场报名啦

百度大脑

百度大脑 开放日

实践案例丨Pt-osc工具连接rds for mysql 数据库失败

华为云开发者联盟

MySQL 数据库 pt-osc工具 rds for mysql

大数据-Big Data

进击的梦清

大数据

纳尼?就凭这拿到了阿里巴巴50K的开发岗offer?

Java架构师迁哥

nginx 搭建简单图片服务器实现负载均衡

Java小咖秀

nginx 服务器 图片

网易有道 ASR 团队斩获 Interspeech 2021 算法竞赛两项冠军

有道技术团队

AI 算法竞赛

《专访阿里研究员吴翰清:云时代,如何建设更安全的互联网环境?》(采访提纲)

xiezhr

网络安全 阿里吴翰清

还在写大量 if 来判断?试试用一个规则执行器来替代它

xcbeyond

4月日更

硬核,阿里自爆4月份Java题库答案(技术+人事),Github获赞76K

Java架构师迁哥

亮相 LiveVideoStackCon,透析阿里云窄带高清的现在与未来

阿里云CloudImagine

视频编解码 视频处理

anyHouse - Android 仿写 ClubHouse

anyRTC开发者

android 音视频 WebRTC RTC 语音社交

Android实现文档在线预览功能

寻找生命中的美好

android pdf预览 文档预览

尴尬!看完阿里P7大佬自爆的Java面试复盘笔记,才知道自己才是井底之蛙

Java架构师迁哥

想要做网页游戏怎么办 ?PixiJs 篇(二)

空城机

JavaScript 大前端 游戏 4月日更 pixi

20 图 |6 千字|缓存实战(上篇)

悟空聊架构

redis 缓存 缓存穿透 缓存击穿 缓存雪崩

微服务的演化

箭上有毒

4月日更

运动的这两个价值,你知道吗?|靠谱点评

无量靠谱

Hadoop-离线批处理技术

进击的梦清

大数据 hadoop 批处理

Ansible 简单使用

耳东@Erdong

4月日更

「 社区建设功勋奖名单公布」—— InfoQ 写作平台【 1 周年盛典 】

InfoQ写作社区官方

1 周年盛典 热门活动

没想到【成功的计算机视觉应用】居然是这样部署的!

澳鹏Appen

人工智能 自动驾驶 机器学习 大数据 计算机视觉

谈谈中台架构之交易中台

艾小仙

Kubernetes入门——Kubernetes应用部署

百度开发者中心

Kubernetes #技术课程#

计算机原理学习笔记 Day12

穿过生命散发芬芳

计算机原理 4月日更

yarn 集群的架构和工作原理

五分钟学大数据

hadoop YARN 4月日更

飞桨分布式训练又推新品,4D混合并行可训千亿级AI模型

百度大脑

百度 AI 飞桨

攻防大战的背后——矛盾双修_架构_爱奇艺技术产品团队_InfoQ精选文章