发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

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

  • 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:001490

评论

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

性能优化知多少

圣杰

sql 性能优化 dotnet

小程序开发-云开发技术总结

我是哪吒

小程序 程序员 大前端 28天写作 2月春节不断更

字节跳动面试官这样问消息队列:高可用、不重复消费、可靠传输、顺序消费、消息堆积,我整理了下

冰河

面试 分布式 中间件 消息队列 一起进大厂

Android NativeCrash 捕获与解析

vivo互联网技术

c++ android NativeCrash

阿里中间件团队技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java架构之路

Java 程序员 架构 面试 编程语言

牛掰!面试不再慌,苦刷这份2020最全的“基础-中级-高级”面试题库,已涨17k

Java架构之路

Java 程序员 架构 面试 编程语言

风口上的量子计算机:核聚变一样的赌局,钻石一样的骗局

脑极体

热点浅谈:低代码开发平台发展前景与市场规模!

优秀

低代码 低代码开发 低代码开发平台

Linux入门篇 —— Shell详解

若尘

Linux 命令行 linux操作

Kalm——基于Kubernetes的部署工具

David

开源 Kubernetes DevOps 运维 运维平台

【2021海量真实校招】软件测试面试真题,(大数据整理)刷完应对各家企业面试完全没有问题!

程序员阿沐

面试 软件测试 自动化测试 黑盒测试 白盒测试

Selenium 利用 JS/JQ 操作元素、鼠标键盘事件、Cookie 操作

梦想橡皮擦

Python 28天写作 2月春节不断更 selenium

最新大厂Java面试题库,测试一下你能坚持到哪一面 “美团+字节+腾讯”三面技术问题

Java架构之路

Java 程序员 架构 面试 编程语言

基于grpc手撸一个RPC框架

cloudcoder

区块链电子合同存证,电子合同区块链服务平台

13530558032

科大讯飞发布全新一代智能办公本X2

Lucien

构建“金融+司法”新局面:兴业消费金融区块链电子存证系统正式上线

CECBC

金融

一道好题!我觉得面试如果考察「双指针」的话,这题是刚刚好 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

runtime笔记

Conan

ios

Elasticsearch 查询结果排序

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

阿里粗排技术体系与最新进展

DataFunTalk

简单的网站搭建

很甜回忆

网站

火山翻译:工业级应用与研究

DataFunTalk

优雅编程 | javascript代码优化的4个小技巧

devpoint

递归 命名空间 闭包 函数绑定

诊所数字化:患者数字档案的价值机遇和风险

boshi

数字化医疗 七日更 28天写作

【计算机内功修炼】十:线程间到底共享了哪些进程资源

码农的荒岛求生

c c++ 线程 操作系统 进程

深度丨从货币历史看比特币的诞生

CECBC

比特币

关于央行数字货币若干问题的思考 | 比较

CECBC

数字货币

一口气发布十大建网利器,华为打算煲出怎样的5G味道?

脑极体

javascript中的内置对象和数据结构

程序那些事

JavaScript 数据结构 ES6 程序那些事

解读云原生技术

xcbeyond

Kubernetes 云原生 服务网格 28天写作

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