最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

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

评论

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

Authing 被世界经济论坛评选为 2022 技术先锋企业

Authing

身份云 科技 Idaas 科技企业

Authing 身份云招聘:增长黑客

Authing

招聘 科技

【LeetCode】数组中的第K个最大元素Java题解

Albert

LeetCode 5月月更

明天,龙蜥2位专家直播,第22届计算机系统会议等活动来了!

OpenAnolis小助手

Linux 开源 直播 内核 龙蜥技术

css基本概念学习篇【四】

恒山其若陋兮

5月月更

druid 源码阅读 10—— 过一下流程图中的getConnectionDirect

张大彪

生命科学领域下的医药研发通过什么技术?冷冻电镜?分子模拟?IND?

蓝海大脑GPU

linux之awk使用技巧

入门小站

Kitex 源码解析活动发布!

baiyutang

Go 字节跳动 微服务 5月月更

SysAK 应用抖动诊断篇—— eBPF又立功了! | 龙蜥技术

OpenAnolis小助手

Linux 工具 内核 ebpf 龙蜥技术

JSON在线对比差异工具

入门小站

工具

数据结构之时间复杂度和空间复杂度

芒果酱

数据结构 算法 5月月更

设计者模式之装饰者模式

乌龟哥哥

5月月更

【高并发】什么是ForkJoin?看这一篇就够了!

冰河

并发编程 多线程 高并发 协程 异步编程

使用 Provider 实现 Flutter 多组件的状态共享

岛上码农

flutter 安卓开发 ios 开发 跨平台应用 5月月更

代码之外:校招该如何准备开发项目

宇宙之一粟

校招 项目开发 5月月更

Vite 与 Vue Cli 对比 - 尤雨溪: Vite 会取代 vue-cli 吗?

蒋川

Vue vite vue cli

【活动报名】TiDB 社区天津站 Meetup 要来啦!

TiDB 社区干货传送门

极速调取客户保单,YRCloudFile 助力保险存储架构升级

焱融科技

AI 存储 NAS 数字金融

【中国信通院 x ShardingSphere 金融用户社区】成立,多家知名金融机构正式入驻

SphereEx

Apache 数据库 开源 ShardingSphere SphereEx

druid 源码阅读(十一)maxWait 参数

爱晒太阳的大白

5月月更

青藤入选信通院“数据安全推进计划”成员单位

青藤云安全

数据安全 信通院

半年面试数百场,我总结出了这份10w字Java面试复盘笔记

Java全栈架构师

Java spring 程序员 架构 面试

大模型走向产业的一小步,AI走向普惠的一大步

脑极体

零基础学Java第四节(字符串相关类)

编程攻略

java编程

数据库连接池 -Druid 源码学习(十)

wjchenge

Druid 数据库连接池

Redis「9」主从、高可用性方案

Samson

redis 学习笔记 5月月更

windows下C语言使用curl库访问HTTP下载文件

DS小龙哥

5月月更

大家谈的视频体验指标,都有哪些?如何测定?

声网

视频 Qoe Dev for Dev

在线HTML转TSV工具

入门小站

工具

Druid 连接池源码阅读 10

石小天

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