系统韧性研究(1)| 何谓「系统韧性」?

news2024/11/16 7:33:09

过去十年,系统韧性作为一个关键问题被广泛讨论,在数据中心和云计算方面尤甚,同时它对赛博物理系统也至关重要,尽管该术语在该领域不太常用。大伙都希望自己的系统具有韧性,但这到底意味着什么?韧性与其他质量属性(如可用性、可靠性、鲁棒性、风险应急能力、安全防御能力和柔性服务能力)有何关系?韧性是这些质量属性的一部分还是全部,是它们的超集,亦或其他云云?在确保系统具备韧性与否之前,我们首先要解开这些问题的答案,并确切地吃透:到底什么才是系统韧性。

作为赛博物理系统韧性需求开发工作的一部分,我最近完成了关于韧性的现有标准和文献的研究。我的研究发现:“韧性”这个术语通常在非正式场合使用彷佛它有明显的含义,在这些场合,它被定义为相似但又略微不同的解释。

我的另一个发现是,韧性一词其实有着两种截然不同的含义。本文是由7篇组成的系列文章中的第一篇,重点关注系统韧性而不是组织韧性,后者的范围要大得多——组织韧性主要涉及业务连续性,包括人员、信息、技术和设施的管理。

01

什么赋予系统以韧性?

一般而言,如果一个系统在逆境中持续执行任务(即,如果它在可能导致中断的过度压力下提供所需的能力),那么它就是有韧性的。有韧性很重要,因为无论一个系统设计得多么好,现实迟早都会破坏这个系统。软件或硬件中的遗留缺陷最终将导致系统无法正确执行所需功能,或导致系统无法满足一个或多个质量要求(例如,可用性、可靠性、鲁棒性、风险应急能力、安全防御能力和柔性服务能力)。无风险应急方案或风险应急方案失效将导致事故的发生,攻击者可能会通过未知或未修复的安全漏洞危害到系统,外部环境异常(例如断电或温度过高)也会中断服务。

由于这些不可避免的破坏,可用性和可靠性是不充分的,因此系统也必须具有韧性。它必须能够抵御逆境并提供连续性服务,即便是在不利事件和条件造成干扰后也需要运行在降级模式。它还需要能够迅速从这些干扰可能造成的伤害中恢复。就像Timex(始创于1854年的美国钟表品牌)的老广告一样,一个有韧性的系统可以做到“受虐千百遍运转如初恋。”

然而,系统韧性的本身比前面的解释要复杂得多。系统韧性不是一个简单的布尔函数(即系统不是简单的“具有韧性或不具有韧性”)。没有一个系统能够100%抵御所有不良事件或情况。韧性总体而言是一个程度的问题,通常不能用单一的有序量表来衡量。换言之,说系统A比系统B更有韧性可能是个伪命题。

想要充分理解韧性,必须将其组成部分进行分解、还原。为了表现出韧性,系统必须包含控制逻辑:对不良事件和条件的检测,对干扰的正确响应和干扰过后的迅速恢复。因为韧性会假设不利事件和条件一定会发生,如何防止不利情况的发生并不在韧性的范围内。

一些韧性控制逻辑支持检测,而其它控制逻辑支持响应或恢复。因此,一个系统可能在某些方面具有韧性,但在其他方面则不然。系统A可能是在某些特定不良事件的检测方面最有韧性的,而系统B可能在某些特定特性事件的响应方面,是最具韧性的;以此类推,系统C可能是在从某些不良事件造成的特定伤害中恢复方面,是最有韧性的。

了解系统抵御逆境的范围边界非常重要:

  • 在中断的情况下,系统必须继续提供哪些关键功能/服务?
  • 哪些类型的逆境会干扰这些关键能力的交付(即,系统必须能够容忍哪些不利事件和条件)?
  • 什么资产受到什么类型/级别的破坏会导致中断?

以上几点引出了对系统韧性的更详细、更细致的定义:

系统在一定程度上具有韧性,能够快速有效地保护其关键能力免受不利事件和条件造成的干扰。

前面的定义隐含着不良事件和条件会发生的想法。系统韧性是指当这些潜在的破坏性事件发生和条件存在时,系统会做什么。系统是否检测到这些事件和情况?一旦检测到它们,系统是否正确响应?之后系统是否恢复正常?

一些组织将“避免”不良事件和条件的发生纳入系统韧性范围。然而,“避免”并不在系统韧性的定义范围内,这是具有误导性和不恰当性的。避免或预防逆境并不能使系统更有韧性,相反,避免减少了对韧性的需求,因为如果逆境从未发生,系统就不需要有韧性。

图1说明了前文关于系统韧性定义中的关键概念之间的关系。韧性系统使用防护的韧性技术来被动抵御不利事件和条件,或主动检测这些不利情况对其作出反应,并从其造成的伤害中恢复,从而保护其关键能力(和相关资产)免受伤害。这些不利事件和条件中的每一个都与以下次要质量特征之一有关:鲁棒性、安全性、网络安全(包括防篡改)、军事生存能力、能力、寿命和互操作性。我们接下来会在本系列的第二篇文章中展开讨论。

↑图1:系统韧性定义中的关键概念

图2显示了通过韧性控制的有序应用来管理不良事件并恢复的时间线。

↑图2:韧性时间线示例

要理解系统韧性的全部范围和复杂性,重要的是要理解前文定义的关键词含义,以及它们在上图中的关系。

保护由以下四个功能组成:

① 抵御能力是指系统在不利事件或条件下被动防止或最大限度减少伤害的能力。被动防御的韧性技术包括模块化架构(该架构可防止模块之间的故障传播)、避免单点失败,以及电气设备的屏蔽、使计算机和网络设备免受电磁脉冲(EMP)的干扰。

检测是系统主动检测(通过检测技术)的能力:

  • 关键能力的丧失或降级
  • 对实现关键能力所需资产的危害
  • 可能对关键能力或相关资产造成伤害的不利事件和条件

② 反应是指系统对正在进行的不良事件的发生做出积极反应或对不良条件的存在做出反应的能力(通过反应技术实现反应)。在检测到逆境时,系统可能会停止或避免不利事件,消除不利条件,从而消除或最大限度地减少进一步的伤害。反应技术包括采用异常处理、降级操作模式以及冗余投票等

③ 恢复是指系统在不良事件结束后主动从伤害中恢复的能力(通过恢复技术实现恢复)。恢复可以是完全的,即系统恢复到完全运行状态,所有损坏/销毁的资产都已修复或更换。恢复也可以是部分恢复(例如,使用冗余资源恢复全部服务而不进行更换/修复)或最小恢复(例如仅提供有限服务的降级模式操作)。恢复还可能包括系统的演变或调整(例如,通过重新配置自身),以避免未来发生不良事件或条件。

系统功能是系统在逆境造成中断的情况下必须继续提供的关键服务。

④ 资产是有价值的物品,必须加以保护,使其免受不利事件和条件造成的伤害,因为它们实现了系统的关键功能。在所有不利事件和条件下,通常不可能完全防止对所有资产造成损害。因此,通常会对资产进行优先级排序,以便检测、反应和恢复首先集中精力保护最重要的资产。与韧性相关的资产包括:

  • 系统组件:系统的组件子系统、硬件、软件(如应用程序、基础设施、操作系统和固件)、网络(如设备、无线电和电缆)和设施
  • 系统数据:系统存储、生成和操作的数据
  • 系统外部资产:系统负责保护其免受伤害的任何系统外部资产(如人员、财产、环境、资金和声誉)

对这些资产造成的危害包括:

  • 对系统功能的危害:服务完全或部分丧失以及服务被盗
  • 对系统组件的危害:硬件或软件的破坏、损坏、盗窃或未经授权的逆向工程
  • 对数据的危害:访问丢失(可用性违规)、损坏(完整性违规),未经授权的披露(机密性和匿名性违规)和交易抵赖(不抵赖违规),以及关键程序信息的逆向工程(CPI)(防篡改违规)
  • 对系统外部资产的危害:资金损失、声誉损失、业务损失以及环境损害或破坏

不良事件是指由于其压力而可能通过对相关资产造成伤害来破坏关键能力的事件。这些不良事件(及其相关质量属性)包括以下情况的发生:

  • 不利的环境事件,如系统外部电力损失以及地震或野火等自然灾害(鲁棒性,特别是环境耐受性)
  • 输入错误,如操作员或用户错误(鲁棒性,特别是容错性)
  • 满足要求的外部可见故障(鲁棒性,特别是故障容限)
  • 事故和未遂事故(安全)
  • 网络安全/篡改攻击(网络安防与反篡改)
  • 恐怖分子或敌对军事力量的人身攻击(生存能力)
  • 负载过大导致的负载峰值和故障(容量)
  • 过度老化和磨损导致的故障(寿命)
  • 通信丢失(互操作性)

不利条件是指由于其压力性质而可能干扰或导致关键能力中断的条件。这些不利条件包括以下情况的存在:

  • 恶劣的环境条件,如过高的温度和恶劣的天气(鲁棒性,特别是环境耐受性)
  • 系统内部故障,如硬件和软件缺陷(鲁棒性,特别是容错性)
  • 安全隐患(安全)
  • 网络安全威胁和漏洞(网络安防和反篡改)
  • 军事威胁和弱点(生存能力)
  • 过载(容量)
  • 过度老化和磨损(长寿)
  • 降级通信(互操作性)

值得注意的是,防篡改(AT)是一种特殊情况,乍一看可能与韧性无关。AT的目标是防止对手对机密软件等关键程序信息(CPI)进行逆向工程。防篡改专家通常认为,在这种情况下,对手将获得包含要进行逆向工程的CPI的系统的物理占有权,确保系统在篡改的情况下继续运行是无关紧要的。然而,篡改也可以远程尝试(即,无需首先获得系统的占有权)。在对手无法访问的情况下,AT对策可能是检测对手远程尝试访问和复制CPI,然后通过将CPI归零进行响应,此时系统将不再可操作。因此,远程篡改确实具有韧性影响。

02

总结与预告

本文阐述了系统韧性质量属性的详细而细致的定义,是关于系统韧性系列文章的开篇。在本系列的第二篇文章中,我将就这个定义阐明系统韧性与其他密切相关的质量属性之间的关系。敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“AI大模型+电子签”,下一站在哪?

大模型所带来的数据分析、训练能力,将使得一些厂商的数据优势被逐渐放大,打造自身的差异化,打破电子签赛道同质竞争的局面。 作者|斗斗 编辑|皮爷 出品|产业家 AI大模型爆发以来,参与者众多。在电子签领域,这个…

前端代码重复度检测

在前端开发中,代码的重复度是一个常见的问题。重复的代码不仅增加了代码的维护成本,还可能导致程序的低效运行。为了解决这个问题,有许多工具和技术被用来检测和消除代码重复。其中一个被广泛使用的工具就是jscpd。 jscpd简介 jscpd是一款开…

格式转换 ▏Python 实现Word转HTML

将Word转换为HTML能将文档内容发布在网页上,这样,用户就可以通过浏览器直接查看或阅读文档而无需安装特定的软件。Word转HTML对于在线发布信息、创建在线文档库以及构建交互式网页应用程序都非常有用。以下是用Python将Word转换为HTML网页的攻略&#xf…

软件测试/测试开发丨校招推荐-中控技术股份有限公司岗位开放

软件测试工程师 岗位职责 1.参与软件项目需求分析,根据需求制定测试方案,设计测试用例,输出测试报告; 2.实施软件测试,对产品的接口、功能、性能等方面的测试负责; 3.针对项目中的问题进行跟踪分析和报…

从一个咖啡机提取一个嵌入式前端应用

学习一下除C或系统外的另一种嵌入式程序编写方法,JavaScript用于UI的设计与串口设备的控制 设备是基于SSD202芯片,dispinit初始化LCD,mplayer为程序需要用到视频播放程序,感觉开发效率会比较高及用户体现会比较好,毕竟…

新书免费领 | 数睿数据参编的《零基础学低(无)代码》图书正式发行

由中国工业出版集团、电子工业出版社出版的《零基础学低(无)代码》图书现已正式对外发行,目前已在多个购书平台和阅读平台上线。 本书由中国软件行业协会应用软件产品云服务分会秘书长曹开彬、清华大学软件学院副研究员刘英博主编。数睿数据…

智能工厂:APS高级计划排程系统成为了制造业建设智能工厂的核心必要需求

近年来,中国经济受到了许多因素的影响,例如新冠疫情冲击和国内外经济环境的巨大变化,随着我国人口红利的减少和人力成本逐步的增加,不论是中大型或小微制造企业为了提高市场竞争力并降低生产成本,都纷纷开始规划建设数…

实用!生产车间管理方案(万人收藏)

生产车间怎么管理? 发现大多数是车间管理普遍存在的问题,本文总结了以下几个方面: 1、制度管理 (1)没有明确的生产计划,生产流程混乱 (2)没有准确的记录和跟踪 2、人员管理&…

MySQL分页排序注意事项

最近测试发现个bug,同一个列表,分页选择展示10条数据时和展示20条数据时,展示20条数据不是展示10条数据下10条数据,数据有所错乱,如下图示。 SELECTid,no,year,quarter,dept_id,dept_name,create_time FROMlist_list …

Blender:制作一个变形动画

就是一个球逐渐地变为一个立方体 首先创建一个球和一个立方体 然后把两个物体放在一起,放缩球,让球包含立方体 之后选中球,为其添加修改器,缩裹 在这里选择缩裹对象为立方体 然后在应用下拉箭头中选择“应用为形态键” 下一步选中…

文件混淆-界面介绍

​ 介绍文件混淆界面功能选项和操作流程 文件混淆-界面介绍 文件混淆功能区域包括3个功能区:顶部显示过滤区、中间文件列表区、底部的是否混淆开关 ​ 顶部介绍 显示控制区域,这个区域用来辅助显示过滤查看文件,不会修改文件显示方式&am…

vue3学习源码笔记(小白入门系列)------provide和 inject 跨层级数据传递原理

目录 前言provideinject 总结 前言 需要从父组件向子组件传递数据时,会使用 props。对于层级不深的父子组件可以通过 props 透传数据,但是当父子层级过深时,数据透传将会变得非常麻烦和难以维护。 而依赖注入则是为了解决 prop 逐级透传 的问…

python 将字节字符串转换成十六进制字符串

嗨喽,大家好呀~这里是爱看美女的茜茜呐 想将一个十六进制字符串解码成一个字节字符串或者将一个字节字符串编码成一个十六进制字符串 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、…

深入理解Kafka分区副本机制

1. Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息。每个 broker 都有一个唯一标识 broker.id,用于标识自己在集群中的身份,可以在配置文件 server.properties 中进行配置,或者由程序自动生成。下面是 Kafka brokers 集群自…

电脑出现msvcr120.dll文件缺少怎么办-缺少msvcr120.dll文件修复方法

电脑出现 msvcr120.dll 丢失的情况,通常是由于系统文件损坏、软件冲突、病毒感染等原因引起的。为了解决这个问题,这里提供了 6 种修复方法,以及关于 msvcr120.dll 文件的详细介绍和丢失原因。 6 种修复方法:第一:利用…

重庆建筑模板厂家有哪些?

重庆地区的建筑施工企业在寻找可靠的建筑模板供应商时,广西贵港市能强优品木业是一个备受推崇的选择。作为建筑模板生产的优秀供应商之一,能强优品木业不仅能提供高质量的建筑模板,还可提供整车物流包运输,并将货物发货至重庆各地…

《持续交付:发布可靠软件的系统方法》- 读书笔记(一)

持续交付:发布可靠软件的系统方法(一) 第一章 软件交付的问题1.1 引言1.2 一些常见的发布反模式1.2.1 反模式:手工部署软件1.2.2 反模式:开发完成之后才向类生产环境部署1.2.3 反模式:生产环境的手工配置管…

### Cause: dm.jdbc.driver.DMException: 第 9 行, 第 85 列[is]附近出现错误: 语法分析出错

问题出现 (case when pcf.CONTRACTS_DURATION_UNITS || pcf.CONTRACTS_DURATION_UNITS is null then null else M end)contractsDurationUnits,(case when pcf.CONTRACTS_DURATION_UNITS_NAME || pcf.CONTRACTS_DURATION_UNITS_NAME is null then null else 月 end)contrac…

如何公网远程访问本地群晖NAS File Station文件夹

公网环境下如何内网穿透读写群晖NAS文件? File Station 是 群晖Synology NAS 的集中化文件管理工具。我们可以在局域网内登陆nas web界面通过 File Station管理群晖nas中的文件,如果我们在户外,有读写家中群晖nas中文件的需求怎么办&#xf…

表单类组件封装v-model简化代码

表单类组件封装&v-model简化代码 创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\11-封装表单类组件 vue --ver…