大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队
一、背景
目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复杂,红蓝对抗的作用愈来愈明显,下面将详细介绍大数据平台在本次11.11大促备战工作中是如何开展红蓝对抗的。

图1.大促备战常见工作示意
首先我们先了解一下什么是红蓝对抗,它都有哪些好处?
二、红蓝对抗介绍
红蓝对抗是网络安全领域常见的一种对抗性演练方法,是指为发现并整改企业内外网资产及业务数据深层次安全隐患,在确保业务平稳运行的前提下,整合平台安全威胁监测能力、应急处置能力和防护能力,以真实网络环境开展实兵红蓝对抗演练,提高并完善安全防护技术与管理体系。
蓝方代表攻击方,红方代表防守方。红蓝对抗模拟了真实的网络攻击和防御过程,在受控的环境中进行,蓝方通过模拟各类威胁和攻击手段,对红方进行攻击,测试其防御能力和系统高可用情况。红方则负责防御和应对,寻找并修复系统中的问题,并且收集关于攻击者的信息。

图2.红蓝对抗
三、红蓝对抗的好处
1.保证监控告警有效性
红蓝对抗可帮助产研验证监控告警的配置有效性,通知及时性,信息准确性。
2.增强系统可靠性
红蓝对抗通过识别可能导致系统发生错误的潜在问题,帮助提高系统的可靠性。
3.降低风险
红蓝对抗通过识别可能被恶意攻击者利用的潜在弱点,帮助降低发生线上问题的相关风险。
4.经济高效的测试
红蓝对抗模拟了生产环境的场景,但却不会对生产环境产生风险,从测试角度来看保障系统的质量。

图3.红蓝对抗的好处
四、红蓝对抗实践
红蓝对抗演练实践主要包括:演练公告、人员指定与任务分配、演练前场景梳理、红蓝对抗过程、演练结果收集、演练复盘共6个部分。

图4.红蓝对抗实践主要包括六个部分
4.1 演练公告
主要包括两个部分:
第一、本次红蓝对抗主负责人组织对抗演练启动会、确定对抗演练时间范围、指定实时/离线演练接口人。
第二、实时/离线产品提前邮件/内部办公app通知业务用户将进行红蓝对抗演练。

图5.红蓝对抗演练公告
4.2 人员指定与任务分配
首先,指定本次红蓝对抗的主负责人。负责整个红蓝对抗演练的统筹工作,包括方案制定、演练对抗文档落地、场景收集通知及复核、组织攻击方发起及防守方防御过程、演练复盘工作。
其次,分别指定实时和离线侧备战接口人。充当蓝方攻击方,主要是指定演练攻击场景、发起系统攻击。
再次,分别指定实时和离线侧backup兜底人员。一般为核心研发人员,由于发起攻击的具体时间是不确定,为避免蓝方发起攻击后,红方由于各种特殊原因不能及时处理故障导致影响线上正常业务,backup兜底人员可快速的恢复系统。
最后,分别指定实时和离线侧演练监测员。一般为测试人员,主要是记录演练过程中发出的告警信息(mdc、ump)以及复核演练记录文档。

图6.红蓝对抗人员指定与任务分配
4.3 演练前场景收集
该部分是演练前最重要的环节,主要包括确定演练应用范围、确定攻方演练场景。
4.3.1 确定演练应用范围
演练应用建议优先选取应用等级L0和L1的应用,具体可根据业务需要进行选取。另外,在京东可通过以下两种方式快速查询对应的应用:
http://XXX.jd.com/dashboard/4/node/XXX
http://XXX.jd.com/health
详细演练应用列表由实时/离线接口人(经过C3领导复核通过)提供,输出:攻方批量注入场景收集
图7.演练应用范围
4.3.2 收集演练故障场景
jdos应用 主要是借助【混沌工程】平台进行故障注入,采用以下演练场景:
cpu使用率高、内存使用率高、磁盘使用率高、网络延迟、网络丢包、进程终止、mysql请求延迟异常、jimdb请求延迟异常等。
底层集群 主要是运维人员通过脚本、命令等方式进行故障注入。主要包括以下演练场景:
数据库实例CPU打高、hdfs队列打满、计算任务pending、RSS集群繁忙、zk节点宕机异常等。
4.4 红蓝对抗过程
有了演练场景,产品也发送了演练通知邮件后,就可以进行红蓝对抗了。这里要说明几点:
① 不能将具体的攻击时间“透露”给蓝方;
② 建议选择生产环境应用或集群进行攻击,尽可能真实的模拟线上问题。
4.4.1 【主负责人】演练前通知
主负责人在蓝方攻击方正式演练前提前在群里发消息,模板如下:
@全体成员
【重要通知】
今天17:30~21:30大数据平台(实时+离线)进行红蓝对抗演练,不定时进行故障突袭。请各位同学将跟进处理过程在本群进行同步。分三个阶段:问题发现、原因分析诊断、故障处理。
每个环节(问题发现、故障诊断、故障处理)确定后立马发消息,不要最后发总结!
每个环节(问题发现、故障诊断、故障处理)确定后立马发消息,不要最后发总结!1、问题发现
【问题发现】
产品-服务名称:
(1)收到电话/咚咚告警,告警内容xxx
或
(2)雷达大屏飘红,截图xx 开始排查处理2、原因分析
【故障诊断】
产品-服务名称:xx问题原因已查到,原因概要描述。3、故障处理
【故障处理】
产品-服务名称::xx问题已处理,已恢复,并给出告警恢复/监控截图。
4.4.2 【蓝方】创建&执行演练任务
蓝方在混沌工程平台,按照之前收集的演练场景创建演练任务或批量创建演练任务。如下图:
图8.蓝方创建任务
说明以下几点:
① 底层集群的攻击主要通过命令、脚本实现,这里暂不详细叙述。
② 网络延迟、丢包故障可能演练失败,原因:限制网络故障演练(该宿主机内核版本存已知BUG不能演练) “4.18.0-80.11.2.el8_0.x86_64”。
③ 内存利用率100%场景,因为linux内存满了会触发oom kill,所以建议设置90%。
④ 演练时长建议大于5分钟,原因:有些应用配置的mdc报警周期范围是5分钟内,如果演练时长小于5分钟可能收不到报警。
4.4.3 【红方】防守修复故障
蓝方发起攻击后,红方会收到内部办公app报警,按照既定预案进行故障修复。部分截图如下:

图9、10.内部办公App报警示意
4.4.4 【红方】系统恢复
有些演练场景(进程终止)不会自动恢复,需要红方手动重启系统应用服务,确保生产应用服务均正常。
4.4.5 【红方+蓝方】演练结束
红蓝对抗演练结束后,红蓝双方均填写“红蓝对抗演练场景”文档,蓝方填写:混沌任务链接、混沌演练场景、演练状态、混沌演练执行开始时间、混沌演练执行结束时间。红方填写:排查人、告警信息、根因、排查到原因时间、排查过程描述(包含排查过程,使用工具,辅助决策判断)、计划解决方案&应急预案、预估影响处理时间。如下图所示:
图11.演练结束后文档填写示意
4.5 演练结果收集主负责人复核演练结果、梳理分离演练问题,让红蓝双方尽早完善。主要存在以下问题
-
未及时处理:红方收到告警后, 由于种种原因(开会、未在工位等)未及时处理故障。
-
处理不完整:红方处理完ns失败问题后,未通知用户处理失败任务。
-
未收到报警:
① 未配置报警规则。例,mdc或ump平台未配置报警。
② 未触发告警阈值。例,蓝方攻击时cpu利用率90%但mdc报警规则配置的是95%。
③ mdc平台禁用告警。例,mdc暂时禁用了模版中心的MDC监控与告警。
图12.演练存在问题
4.6 演练复盘
主负责人组织红蓝对抗复盘会议,提供演练结果、问题列表,实时+离线架构师均参加,从演练过程、演练效果等角度对本次演练进行评价或建议。
① 告警级别需要自查修正。目前部分告警级别配置偏低,cpu利用率大于90%时,报【警告】,建议改为【紧急】。
② 延长攻击时间。找某几个应用,攻击时间为30+分钟,验证防守人员是否真正摘流量。
③ 混沌演练常态化。可通过混沌工程平台-常态演练进行,并结合值班表增加演练频次,以战养兵。
④ 分步演练【警告】、【紧急】场景。第一步先攻击10分钟触发【警告】的场景,第二步再攻击10分钟触发【紧急】的场景。
⑤ java方法异常、延迟场景未演练。后续期望测试人员通过forcebot压测来支持流量流入。
期望混沌平台的支持:
① 混沌工程平台支持一次批量选择多个应用创建、启停混沌演练任务。可提高创建任务效率,目前的批量创建演练任务功能,只能一个一个的添加应用进行创建。
② 混沌工程平台提供常态化混沌演练api。方便用户自定义创建常态化演练任务。
③ 混沌工程平台支持在平台内查看mdc、ump告警。减少用户在多个平台系统来回切换。
五、总结
通过本次红蓝对抗演练,既有效的增强了大数据平台系统应用的抗风险能力,降低了生产环境系统发生故障的概率,又大大的提升了研发人员解决问题故障的能力,也沉淀了一套快速高效的演练的方案。
最后感谢混沌工程平台的大力支持!
作者:京东零售 尹伟
来源:京东云开发者社区 转载请注明来源
相关文章:
大数据平台红蓝对抗 - 磨利刃,淬精兵! | 京东云技术团队
一、背景 目前大促备战常见备战工作:专项压测(全链路压测、内部压测)、灾备演练、降级演练、限流、巡检(监控、应用健康度)、混沌演练(红蓝对抗),如下图所示。随着平台业务越来越复…...
java游戏制作-王者荣耀游戏
一.准备工作 首先创建一个新的Java项目命名为“王者荣耀”,并在src下创建两个包分别命名为“com.sxt"、”com.stx.beast",在相应的包中创建所需的类。 创建一个名为“img”的文件夹来储存所需的图片素材。 二.代码呈现 package com.sxt;import javax.sw…...
Linux实验三:shell程序设计: shell基础
实验目的: 进一步巩固shell程序设计语言基本语法,加深对所学知识理解。 实验要求 1. 四种变量的使用 2. 配置环境变量 3. 元字符和正则表达式 4. 引号 1. 本地变量 $ var1"hello Linux" //定义本地变量var1 $ read var2 //定义本地变量vae…...
webpack环境变量的设置
现在虽然vite比较流行,但对于用node写后端来说,webpack倒是成了一个很好的打包工具,可以很好的保护后端的代码。所以这块的学习还是不能停下来,接下来我们来针对不同的环境做不同的设置写好笔记。 引用场景主要是针对服务器的各种…...
基于51单片机音乐盒设计( proteus仿真+程序+原理图+PCB+报告+讲解视频)
音乐盒 主要功能:仿真原理图PCB图程序设计:设计报告实物图资料清单(提供资料清单所有文件):资料下载链接: 基于51单片机音乐盒仿真设计( proteus仿真程序原理图PCB报告讲解视频) 仿真图proteus …...
技术分享| anyRTC之RTN网络
RTN(Real-time Network)中文名:实时音视频传输网络。 RTN是最近几年由各大RTC的云厂商提出的一个全新架构的音视频实时传输网络概念。类似于直播的CDN网络,RTN是对音视频的实时性又强烈要求的场景而设计的,原理上全球端到端的时延通过RTN网络…...
基于GPRS的汽车碰撞自动报警系统(论文+源码)
1. 系统设计 本次基于GPRS的汽车碰撞自动报警系统的设计中,其主要的目标功能如下:1、实时检测当前的GPS精度和纬度坐标;2.当发生碰撞后系统自动将当前的信息通过GPRS数据发送到远端数据进行报警;3、系统在碰撞后一方面进行本地报警…...
qgis添加wms服务
例如添加geoserver的wms服务 左右浏览器-WMS/WMTS-右键-新建连接 URL添加geoserver的wms地址 http://{ip}:{port}/geoserver/{workspace}/wms 展开wms目录,双击相应图层即可打开...
【DQN】基于pytorch的强化学习算法Demo
目录 简介代码 简介 DQN(Deep Q-Network)是一种基于深度神经网络的强化学习算法,于2013年由DeepMind提出。它的目标是解决具有离散动作空间的强化学习问题,并在多个任务中取得了令人瞩目的表现。 DQN的核心思想是使用深度神经网…...
【C++】泛型编程 ⑭ ( 类模板示例 - 数组类模板 | 容器思想 | 自定义类可拷贝 - 深拷贝与浅拷贝 | 自定义类可打印 - 左移运算符重载 )
文章目录 一、容器思想1、自定义类可拷贝 - 深拷贝与浅拷贝2、自定义类可拷贝 - 代码示例3、自定义类可打印 - 左移运算符重载 二、代码示例1、Array.h 头文件2、Array.cpp 代码文件3、Test.cpp 主函数代码文件4、执行结果 一、容器思想 1、自定义类可拷贝 - 深拷贝与浅拷贝 上…...
砖家测评:腾讯云标准型S5服务器和s6性能差异和租用价格
腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…...
Linux常用命令——blkid命令
在线Linux命令查询工具 blkid 查看块设备的文件系统类型、LABEL、UUID等信息 补充说明 在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行…...
ES 万条以外分页检索功能实现及注意事项
背景 以 ES 存储日志,且需要对日志进行分页检索,当数据量过大时,就面临 ES 万条以外的数据检索问题,如何利用滚动检索实现这个需求呢?本文介绍 ES 分页检索万条以外的数据实现方法及注意事项。 需求分析 用 ES 存储数…...
【MySQL】mysql中不推荐使用uuid或者雪花id作为主键的原因以及差异化对比
文章目录 前言什么是UUID?什么是雪花ID?什么是MySql自增ID?优缺点对比UUID:优点1.全球唯一性2.无需数据库支持 缺点1.存储空间大2.索引效率低3.查询效率低 雪花ID:优点1.分布式环境下唯一性 缺点1.依赖于机器时钟2.存储空间较大3.查询效率低 MYSQL自增:优点1.简单…...
【Unity细节】Default clip could not be found in attached animations list.(动画机报错)
👨💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶🌫️收录于专栏:unity细节和bug 😶🌫️优质专栏 ⭐【…...
VsCode连接远程Linux编译环境的便捷处理
1.免输登录密码 免输命令的正确方法是使用公钥和私鈅在研发设备,和linux服务器上校验身份。公钥和私钥可在windows系统上生成。公钥要发送到linux服务器。私钥需要通知给本地的ssh客户端程序,相关的操作如下: 生成 SSH Key: 打开…...
【UE】用样条线实现测距功能(下)
目录 效果 步骤 一、实现多次测距功能 二、通过控件蓝图来进行测距 在上一篇(【UE】用样条线实现测距功能(上))文章基础上继续实现多次测距和清除功能。 效果 步骤 一、实现多次测距功能 打开蓝图“BP_Spline”,…...
矩阵知识补充
正交矩阵 定义: 正交矩阵是一种满足 A T A E A^{T}AE ATAE的方阵 正交矩阵具有以下几个重要性质: A的逆等于A的转置,即 A − 1 A T A^{-1}A^{T} A−1AT**A的行列式的绝对值等于1,即 ∣ d e t ( A ) ∣ 1 |det(A)|1 ∣det(A)∣…...
机器学习之数据清洗和预处理
目录 Box_Cox Box_Cox Box-Cox变换是一种用于数据预处理和清洗的方法,旨在使数据更符合统计模型的假设,特别是对于线性回归模型。这种变换通过调整数据的尺度和形状,使其更加正态分布。 Box-Cox变换的定义是: y ( λ ) { y λ − 1 λ , i…...
【SpringBoot系列】SpringBoot日志配置
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法
使用 ROS1-Noetic 和 mavros v1.20.1, 携带经纬度海拔的话题主要有三个: /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码,来分析他们的发布过程。发现前两个话题都对应了同一…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...
【Vue】scoped+组件通信+props校验
【scoped作用及原理】 【作用】 默认写在组件中style的样式会全局生效, 因此很容易造成多个组件之间的样式冲突问题 故而可以给组件加上scoped 属性, 令样式只作用于当前组件的标签 作用:防止不同vue组件样式污染 【原理】 给组件加上scoped 属性后…...
2025-06-01-Hive 技术及应用介绍
Hive 技术及应用介绍 参考资料 Hive 技术原理Hive 架构及应用介绍Hive - 小海哥哥 de - 博客园https://cwiki.apache.org/confluence/display/Hive/Home(官方文档) Apache Hive 是基于 Hadoop 构建的数据仓库工具,它为海量结构化数据提供类 SQL 的查询能力…...
