蚂蚁集团混沌工程技术理论与实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 蚂蚁集团混沌工程技术理论与实践
部门:蚂蚁集团-技术风险部-技术蓝军
演讲人:张皓
2023.11
2. 目录
01 02
蚂蚁集团技术
风险概述 蚂蚁集团混沌工
程发展历程
03 04
蚂蚁集团混沌工程
业务和技术实践 蚂蚁集团混沌工程
开源介绍
3. 蚂蚁集团技术风险概述
4. 技术风险整体打法和组织架构
故
障
趋
势
•
历年P级故障数
1000
0
FY18
FY19
FY20
CY20
SRE
整体打法
CY21
Ø 以故障为核心业务指标,驱动体系建设
Ø 技术和运营双体系结合,持续迭代
Ø 数字化免疫体系:高可用 + 资金安全
故障为核心业务指标,驱动技术架构和运营体系建设
Ø 支付宝SRE
Ø 消费信贷SRE
Ø 财富保险SRE
Ø 网商银行SRE
Ø ……
平台工程
Ø
Ø
Ø
Ø
运
营
体
系
技
术
架
构
红蓝攻防牵引体系建设 风险架构演进构筑防线
* 仅限内部交流使用,如果需要公开,请联系文档作者
强文化宣导,建心智 重制度建设,审计常态化
监控平台
变更平台
容量平台
演练平台
Ø 应急平台
Ø 风险智能
Ø 技术蓝军
5. 02蚂蚁集团混沌工程发展历程
6. 第一代混沌工程(2015-2017)
• 527 光缆事件 --> 蚂蚁集团正式成立技术风险部
Ø 容灾演练常态化进行
• 1218 重大资损故障 --> 资金安全防控成为技术风险部的核心业务之一
Ø 大面积上线资金核对能力,T0/TM/TH/T1核对
Ø 混沌工程团队(技术蓝军)正式成立,以资金安全领域的攻防演练为主要业务
* 仅限内部交流使用,如果需要公开,请联系文档作者
7. 第二代混沌工程(2018-2020)
•
•
•
混沌工程业务持续扩展,组织持续扩大
Ø 资金安全 – 技术蓝军
Ø 高可用&变更 – 技术蓝军
Ø 大数据 – 数据蓝军
Ø 前端/客户端 – 端蓝军
混沌工程技术快速演进
Ø JAVA任意代码注入技术
Ø 日志注入技术
Ø 监控注入技术
Ø 资金表无损注入技术
面向全公司的红蓝攻防活动
Ø
527 & 1218
* 仅限内部交流使用,如果需要公开,请联系文档作者
527 对于每个蚂蚁技术人来说都是一个非常特殊的日
子。2015年5月27日,光纤挖断导致故障的黑天鹅事
件让支付宝成为热搜,这也敲响了我们“敬畏风险”
的警钟,集团把这一天作为纪念日、技术日和创新
日。我们相信可以用技术的力量为客户带来有价值的
改变。
1218 的资金安全故障,警醒着我们要时刻敬畏风
险,保持初心,坚守“客户第一”的理念,不断提升
“客户体验”。同时也促使我们思考如何让风险的不
确定性在持续的优化升级中变得可预知、可预测。因
此我们用技术创新构建风险免疫系统,让每笔业务精
准可靠,让每次体验丝般顺滑!
8. 第三代混沌工程(2021-2023)
• 技术风险服务托管
Ø 变更无人值守,容量扩缩容托管,资金核对托管
Ø 混沌工程:演练托管(大规模常态化演练自动化)
• 技术风险智能化
Ø 智能监控,智能核对,opsgpt
Ø 混沌工程:代码变异
• 故障发生少,但发生多为重大,且存在新故障形态
Ø 混沌工程更加重视云原生基础设施
Ø 内容展示型的故障演练(例如产品页面乱码)
Ø 多媒体业务混沌工程(直播等)
* 仅限内部交流使用,如果需要公开,请联系文档作者
9. 03蚂蚁集团混沌工程业务和技术实践
10. 资金安全
蚂蚁集团业务稳定性的核心挑战:金融级的稳+互联网的快
交易系统
(服务A)
数据落库
业务流
资金安全
万亿资金
秒级实现核对“账、证、实”
花呗支付系统
(服务B)
trade_order
trade_amount = 10
资金上下游一致性核对
数据落库
payment_
order
pay_amount = 10 ✅
pay_amount = 11 ❌
• 资金表上下游一致性故障
• 资金服务/消息逻辑异常故障(参数,返回值,业务流)
* 仅限内部交流使用,如果需要公开,请联系文档作者
11. 资金安全
资金表注入
为什么引入无损注入?
• 数据篡改:金额/状态/账号/币种/费率 • 面向生产环境的混沌工程
• 有损注入 & 无损注入 • 控制注入影响,降低恢复
有损注入
成本
交易系统
资金核对系统
Java Agent
无损注入
• 大规模常态化攻防演练
有损和无损各有适用场景
注入:
核对消费数据篡改
注入:
写DB篡改
演练
核对数据采集系统
binlog异步复制
交易DB
* 仅限内部交流使用,如果需要公开,请联系文档作者
• 无损:大规模高频率的常态化
注入二方包
• 有损:真实性强,主要用在月
度突袭,527&1218大型活动
12. 资金安全
资金服务注入
• 服务参数,返回值篡改
• 服务代码逻辑篡改(运行时任意代码替换)
混沌工程与大模型的结合:
• 业务代码 -> 注入代码
• 主要用于服务参数/返回值的
代码逻辑
注入逻辑1
* 仅限内部交流使用,如果需要公开,请联系文档作者
篡改场景的生成
注入逻辑2
13. 资金安全
“弱点”是指业务风险点的集合,弱点挖掘是用技术手段识别出业务风险点
主要弱点类型
• 资金表
• 资金服务
• 资金消息
关键技术
* 仅限内部交流使用,如果需要公开,请联系文档作者
• JAVA字节码技术
• 程序分析(污点分析)
• 模糊测试(fuzzing)
14. 高可用&变更
高可用混沌工程
变更混沌工程
• 机房级容灾演练(同城&异地)
• 业务可用性演练(降级,切流,预案等)
• 云原生攻防演练(基础资源,K8S组件等)
•
技术风险红线:变更三板斧(可监控,可灰
度,可回滚)
•
高可用注入技术
变更防御:统一变更核心(收敛所有变更)
•
前置防御:什么变更不能做(饭点禁止变
更)
交易系统
日志
下游调用注入
写日志注入
Monitor Agent
•
日志
采集
监控数据注入
后置防御:变更后是否有问题(核心业务和
系统指标监控)
监控注入接口
Java Agent
•
•
•
监控系统
变更攻击:
•
前置攻击:mock非法变更(时间非法/参
数非法)
•
后置攻击:mock正常变更+相关业务/系
统指标异常
* 仅限内部交流使用,如果需要公开,请联系文档作者
15. 04蚂蚁集团混沌工程开源介绍
16. Chaosmeta
系统资源
•
CPU,内存,网络,文件,磁盘,进程等
内核资源
•
文件描述符 fd,nproc 等
JVM
•
JAVA 方法调用延时,抛异常,篡改参数
和返回值
容器
•
容器内系统资源异常,容器状态异常等
Kubernetes
•
pod/node 的单机故障注入
云原生
•
集群资源异常:Pending Pod 堆积,
Completed Job 堆积等
•
云原生资源实例异常:Deployment 实例
副本扩缩容,Pod 实例 Finalizer 注入等
* 仅限内部交流使用,如果需要公开,请联系文档作者
17. THE END
THANK YOU!