文章目录
一、前言
笔记目录大纲请查阅:【软考速通笔记】系统架构设计师——导读
关注【小康师兄】微信公众号,回复【系统架构设计师】即可获取PDF和详细教程。
二、基础知识
2.1 安全风险类别
#mermaid-svg-sM81qspcbaSUO29Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-sM81qspcbaSUO29Y .error-icon{fill:#552222;}#mermaid-svg-sM81qspcbaSUO29Y .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sM81qspcbaSUO29Y .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-sM81qspcbaSUO29Y .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sM81qspcbaSUO29Y .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sM81qspcbaSUO29Y .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sM81qspcbaSUO29Y .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sM81qspcbaSUO29Y .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sM81qspcbaSUO29Y .marker.cross{stroke:#333333;}#mermaid-svg-sM81qspcbaSUO29Y svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sM81qspcbaSUO29Y .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sM81qspcbaSUO29Y .cluster-label text{fill:#333;}#mermaid-svg-sM81qspcbaSUO29Y .cluster-label span{color:#333;}#mermaid-svg-sM81qspcbaSUO29Y .label text,#mermaid-svg-sM81qspcbaSUO29Y span{fill:#333;color:#333;}#mermaid-svg-sM81qspcbaSUO29Y .node rect,#mermaid-svg-sM81qspcbaSUO29Y .node circle,#mermaid-svg-sM81qspcbaSUO29Y .node ellipse,#mermaid-svg-sM81qspcbaSUO29Y .node polygon,#mermaid-svg-sM81qspcbaSUO29Y .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sM81qspcbaSUO29Y .node .label{text-align:center;}#mermaid-svg-sM81qspcbaSUO29Y .node.clickable{cursor:pointer;}#mermaid-svg-sM81qspcbaSUO29Y .arrowheadPath{fill:#333333;}#mermaid-svg-sM81qspcbaSUO29Y .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sM81qspcbaSUO29Y .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sM81qspcbaSUO29Y .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-sM81qspcbaSUO29Y .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-sM81qspcbaSUO29Y .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sM81qspcbaSUO29Y .cluster text{fill:#333;}#mermaid-svg-sM81qspcbaSUO29Y .cluster span{color:#333;}#mermaid-svg-sM81qspcbaSUO29Y div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sM81qspcbaSUO29Y :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
网络与信息安全风险
人为蓄意破坏
灾难性攻击
系统故障
人员无意识行为
网络监听
非法登录
数据篡改
假冒身份
重放攻击
散播病毒
水灾
火灾
地震
雷击
战争
硬件故障
软件故障
链路故障
供电故障
编程错误
操作错误
无意泄密
2.2 常见的安全风险
- 恶意软件(Malware): - 包括病毒、蠕虫、特洛伊木马、勒索软件等,它们可以破坏系统、窃取数据或加密用户文件以索取赎金。
- 网络钓鱼(Phishing): - 通过伪造的电子邮件、网站等手段诱骗用户提供敏感信息,如用户名、密码、信用卡信息等。
- 身份盗窃(Identity Theft): - 盗用他人身份进行欺诈活动,包括金融诈骗、非法访问账户等。
- 数据泄露(Data Breach): - 未经授权访问或泄露敏感数据,如客户信息、商业秘密等。
- 服务拒绝攻击(DoS/DDoS): - 通过过量请求使服务不可用,影响正常业务运行。
- 内部威胁(Insider Threats): - 来自组织内部人员的威胁,可能是恶意的或无意的,如泄露敏感信息、破坏系统等。
- 社交工程(Social Engineering): - 利用人际关系和心理操纵手段诱使人们泄露敏感信息或执行某些操作。
- 未授权访问(Unauthorized Access): - 未经许可访问或修改系统资源,可能导致数据泄露或系统破坏。
- 零日漏洞(Zero-Day Vulnerabilities): - 指软件中未知的漏洞,攻击者可以利用这些漏洞在补丁发布之前进行攻击。
- SQL注入(SQL Injection): - 通过在Web表单输入恶意SQL代码,攻击者可以欺骗数据库执行非法操作。
- 跨站脚本攻击(XSS): - 攻击者在网页上注入恶意脚本,当其他用户浏览该页面时,脚本会被执行。
- 跨站请求伪造(CSRF): - 攻击者诱使已登录的用户在不知情的情况下执行非预期的操作。
- 供应链攻击(Supply Chain Attacks): - 攻击者通过供应链中的薄弱环节,如软件供应商,将恶意软件或漏洞植入产品中。
- 物联网(IoT)安全威胁: - 由于IoT设备通常安全措施不足,它们可能成为攻击的入口点或被用于发起攻击。
- 云安全威胁: - 云服务的滥用、数据泄露、账户劫持等安全问题。
2.3 安全架构特性
- 可用性(Availability) 可用性是指信息和资源在需要时能够被合法用户访问和使用的能力。确保可用性意味着系统、网络和服务在正常情况下能够持续运行,并且在发生故障或攻击时能够迅速恢复。实现可用性的方法包括:- 冗余设计:通过备份系统、服务器和网络路径来减少单点故障的风险。- 负载均衡:分散流量以防止某一部分过载。- 灾难恢复计划:制定应急预案,以便在发生自然灾害或技术故障时迅速恢复服务。
- 完整性(Integrity) 完整性是指信息在存储、处理和传输过程中保持准确和一致的状态。确保完整性意味着数据未被未经授权的修改、删除或损坏。实现完整性的方法包括:- 数据校验:使用哈希函数和校验和来验证数据的完整性。- 访问控制:限制对数据的访问权限,确保只有授权用户才能修改数据。- 审计日志:记录对数据的所有访问和修改操作,以便追踪和审查。
- 机密性(Confidentiality) 机密性是指保护信息不被未经授权的用户访问或泄露。确保机密性意味着只有授权用户才能查看和使用敏感信息。实现机密性的方法包括:- 加密:使用加密技术对数据进行加密,以防止未授权访问。- 访问控制:实施严格的身份验证和授权机制,确保只有经过验证的用户才能访问敏感信息。
2.4 安全技术架构
- 身份鉴别(Identity Authentication)- 身份鉴别是确认用户身份的过程,确保只有合法用户才能访问系统和资源。这通常涉及用户名和密码、多因素认证(MFA)、生物识别技术等方法。
- 访问控制(Access Control)- 访问控制是限制用户对资源访问的机制,包括基于角色的访问控制(RBAC)、基于属性的访问控制(ABAC)和最小权限原则。目的是确保用户只能访问其工作或职责所需的信息。
- 内容安全(Content Security)- 内容安全涉及保护数据内容免受恶意软件、病毒、蠕虫等威胁的侵害。这包括数据加密、安全的内容过滤、反恶意软件解决方案和数据丢失预防(DLP)技术。
- 冗余恢复(Redundancy and Recovery)- 冗余恢复技术确保系统在发生故障时能够快速恢复。这包括数据备份、灾难恢复计划、高可用性架构和故障转移机制。
- 审计响应(Audit and Response)- 审计是监控和记录系统活动的过程,以检测异常行为和政策违规。响应则涉及对安全事件的快速反应,包括事件响应计划、安全信息和事件管理(SIEM)系统以及安全团队的介入。
- 恶意代码防范(Malicious Code Protection)- 恶意代码防范技术用于检测和阻止恶意软件、病毒、蠕虫和其他恶意代码的执行。这通常包括防病毒软件、入侵检测系统(IDS)、入侵防御系统(IPS)和防火墙。
- 密码技术(Cryptography)- 密码技术是使用数学算法来保护信息安全,确保数据的机密性、完整性和真实性。这包括对称加密、非对称加密、哈希函数和数字签名等技术。
三、安全模型
3.1 状态机模型
- 一个安全状态模型系统。
- 总是从一个安全状态启动,并且在所有迁移中保持安全状态。
- 只允许主体以和安全策略相一致的安全方式访问资源。
3.2 BLP模型
BLP(Bell-Lapadula Model)模型是一种强制访问控制(MAC)模型,主要用于保护数据的机密性。
- 基本安全规则是
下读上写
: -机密
访问绝密
时,可写不可读。-机密
访问机密
时,可写可读。-机密
访问秘密
时,可读不可写。 - 简单规则:低级别主体读取高级别主题受限。
- 星型规则:高级别主体写入低级别主体受限。
- 强星型规则:对不同级别读写受限。
- 自主规则:自定义访问控制矩阵。
3.3 Biba模型
Biba模型是一种强制访问控制(MAC)模型,主要用于保护数据的完整性。
- 该模型的目标是: - 保护数据不被未授权用户修改。- 保护数据不被授权用户越权修改。- 维持数据内部和外部的一致性。
- 基本规则是: -
中完整性
访问高完整性
时,可读不可写。-中完整性
访问中完整性
时,可读可写。-中完整性
访问低完整性
时,不可读可写。 - 防止数据从低完整性级别流向高完整性级别。
3.4 CWM模型
CWM(Clark-Wilson Model)模型将完整性目标、策略和机制融为一体,提出职责分离目标,应用完整性验证过程,实现了成型的事务处理机制,常用于银行系统。
CWM模型是一种基于完整性的访问控制模型,它通过分离数据和处理数据的程序来保护数据的完整性。
主要特点包括:
- 主体、程序、客体三元素,主体只能通过程序访问客体。
- 权限分离原则:功能可分为多个主体,防止授权用户进行未授权修改。
- 审计能力:所有操作都有审计跟踪,以确保完整性。
3.5 Chinese Wall模型
Chinese Wall模式是一种混合模型,应用于多边安全系统,防止多安全域存在潜在的冲突。
该模型为投资银行设计,常用于金融领域。
工作原理:
- 自主访问控制(DAC):用户可以选择安全域。
- 强制访问控制(MAC):系统强制执行安全策略,完成特定安全域内的访问控制。
- 信息流控制:限制信息在不同安全域之间的流动,以防止潜在的利益冲突。
四、信息安全架构设计
4.1 WPDRRC信息安全模型
WPDRRC模型是一个全面的信息安全管理框架,它涵盖了信息安全生命周期的六个关键环节,以及三个核心要素。
4.1.1 六个关键环节
- 预警(Warning)- 预警是识别潜在威胁和漏洞的过程。这包括监控安全事件、分析安全趋势,以及预测可能的安全威胁。
- 保护(Protection)- 通过实时监测和检测机制,发现已经发生的安全事件和攻击行为,为响应环节提供及时的信息。
- 检测(Detect)- 检测是识别和确认安全事件是否发生的过程。这通常通过入侵检测系统(IDS)、安全信息和事件管理(SIEM)系统等工具来实现。
- 响应(React)- 在发现安全事件或攻击后,及时采取适当的响应措施,如隔离、清除、恢复等,防止攻击扩散和降低损失。
- 恢复(Restore)- 在遭受攻击后,通过系统恢复和数据备份等技术手段,尽快恢复系统和数据,确保信息系统的正常运行。
- 反击(Counterattack)- 在遭受攻击时,采取主动的反击措施,如追踪、取证、反击等,以遏制攻击者的行为并保护组织的利益。
4.1.2 三个核心要素
- 人员(People)- 人员是信息安全中最重要的要素,包括安全团队、管理层、员工等。他们需要具备安全意识和技能,以有效执行安全策略。
- 策略(Policy)- 策略是组织的安全指导原则和规则,包括安全政策、程序和指南,它们指导人员如何管理和保护信息资产。
- 技术(Technology)- 技术是实现安全策略的工具和系统,包括硬件、软件、网络设备等,它们支持安全措施的实施。
4.2 信息安全系统架构
- 物理安全(Physical Security)- 物理安全是保护物理资产(如服务器、网络设备、数据中心)免受盗窃、破坏和自然灾害的安全措施。这是信息安全的基础。
- 系统安全(System Security)- 系统安全涉及保护操作系统、应用系统免受攻击。这包括操作系统加固、应系统序安全等。
- 网络安全(Network Security)- 网络安全是保护网络和数据传输的安全。这包括通信加密、防火墙、VPN、访问控制、网络监控、网络安全扫描和入侵防御系统等。
- 应用安全(Application Security)- 应用安全关注应用程序层面的安全,包括Web应用安全、移动应用安全、API安全等。
- 安全管理(Security Management)- 安全管理是制定和执行安全策略、监控安全状态、响应安全事件的过程和人员安全防范意识。这包括安全政策制定、安全培训、安全审计等。
五、网络安全架构设计
5.1 OSI/RM信息安全架构
安全服务安全机制鉴别服务认证机制、数字签名机制访问控制服务访问控制机制、路由控制机制数据机密服务加密机制、业务流填充机制数据完整性服务数据完整性机制抗否认性服务公证机制
5.2 认证框架
认证框架涉及确认用户、系统或服务的身份的过程。它包括多种机制,如用户名和密码、多因素认证、生物识别技术等。认证框架的目的是确保只有合法的实体能够访问系统和资源。主流的认证方式有三种:通信信道上的认证(如SSL/TLS)、通信协议上的认证(如HTTP)、通信内容上的认证(如通过登录表单验证用户名密码)。
5.3 访问控制框架
访问控制框架是一套规则和策略,用于限制和控制用户对资源的访问。它包括自主访问控制(DAC)、强制访问控制(MAC)、基于角色的访问控制(RBAC)等。访问控制的两个重要过程包括通过“鉴别(authentication)”来检验主体的合法身份,以及通过“授权(authorization)”来限制用户对资源的访问级别。
5.4 机密性框架
机密性框架是保护信息不被未授权披露的一系列措施。它通常包括加密技术、安全通信协议和访问控制,以确保信息的保密性。例如,BLP(Bell-LaPadula)模型是一个用于保护机密性的安全模型,它通过多层安全级别来防止高级别用户读取低级别用户数据的原则,实现对机密性的保护。
5.5 完整性框架
完整性框架关注保护数据的准确性和一致性,防止未授权的修改。Biba模型是保护数据完整性的一个例子,它采用主体、客体、完整性级别来描述安全策略要求,并具有简单安全特性、*特性、调用特性等安全规则
5.6 抗抵赖框架
抗抵赖框架确保实体对其行为不能否认,即提供了一种机制,使得实体在进行操作后不能否认其操作。这通常涉及到数字签名、加密和审计日志等技术。抗抵赖服务包括原发抗抵赖、交付抗抵赖、传输抗抵赖和接收者抗抵赖等。
抗抵赖还可以通过公证的方式解决,包含:证据生成、证据传输、存储及回复、证据验证,解决纠纷等5个阶段。
六、系统架构脆弱性分析
6.1 分层架构脆弱性
- 底层故障脆弱性:一旦底层发生错误,可能导致整个系统都无法运行。
- 层间通信脆弱性:层间通信和调用,产生更大开销,导致性能下降。
6.2 C/S架构脆弱性
客户端/服务器(C/S)架构的脆弱性可能包括:
- 客户端安全:客户端软件可能成为攻击的入口点。
- 认证弱点:客户端到服务器的认证可能不够强大,易受攻击。
- 数据传输安全:客户端和服务器之间的数据传输可能未加密。
- 服务器过载:客户端请求过多可能导致服务器过载。
6.3 B/S架构脆弱性
浏览器/服务器(B/S)架构的脆弱性包含了C/S架构的所有弱点,且更多。
- 跨站脚本(XSS):攻击者在网页上注入恶意脚本。
- 跨站请求伪造(CSRF):攻击者诱使用户的浏览器执行非法操作。
- 会话管理:不恰当的会话管理可能导致会话劫持。
- 输入验证:缺乏输入验证可能导致SQL注入等攻击
6.4 MVC架构脆弱性
- 复杂性增加:MVC架构将应用分为模型、视图、控制器三部分,增加了系统复杂性,可能导致开发和维护难度加大,以及潜在错误和漏洞的出现。
- 视图与控制器紧密关联:视图与控制器之间的紧密连接可能阻碍它们的独立重用,降低系统灵活性,同时接口设计不当可能导致数据展示或用户输入处理出错。
- 数据访问效率低:视图可能需要多次调用模型获取数据,导致效率低下,且若模型数据变化而视图未及时更新,用户可能看到过时信息。
6.5 微内核架构脆弱性
- 优化难度大:由于系统服务被模块化,整体优化变得复杂,难以实现全局性能最优。
- 通信开销高:模块间通信需要额外的资源,如上下文切换和数据传输,增加了系统负担。
- 通信可靠性低:模块间通信可能因IPC机制的不稳定而导致数据丢失或延迟,影响系统可靠性。
6.6 微服务架构脆弱性
微服务架构的脆弱性主要体现在分布式系统的复杂性、服务间通信的安全性和可靠性,以及服务管理的挑战。
- 分布式系统的复杂性:- 开发人员需要处理分布式系统中的网络延迟、服务发现、负载均衡等问题。- 系统故障的诊断和调试变得更加复杂。
- 服务间通信机制:- 开发人员必须设计和实现服务间的通信协议,如REST、gRPC等。- 需要确保通信的安全性,防止数据泄露或被篡改。
- 服务管理的复杂性:- 服务的部署、监控、日志记录和故障恢复变得更加复杂。- 服务版本管理和兼容性问题需要仔细处理。
- 数据一致性:在微服务架构中保持数据一致性是一个挑战,尤其是在分布式事务中。
- 性能问题:服务间的网络调用可能影响系统性能。
6.7 事件驱动架构脆弱性
事件驱动架构通过事件的发布和订阅来实现组件间的松耦合
- 组件脆弱性:组件对系统的控制能力被削弱,一个组件触发事件后,无法确定哪些其他组件会响应该事件以及它们的执行顺序。
- 容易死循环:由于事件驱动架构的特性,如果编程逻辑不当,系统容易进入死循环,导致资源耗尽或其他问题。
- 高并发脆弱性:大量事件可能导致高并发,进而导致系统过载,系统响应可能会受到影响,也容易导致数据不一致或丢失。
- 固定流程脆弱性:事件驱动架构的响应流程通常是固定的,如果操作不当,容易引发安全问题。
- 组件间交换数据的脆弱性:在事件触发时,一个组件可能需要将参数传递给另一个组件,当数据量很大时,如何有效传递数据成为一个脆弱性问题。
- 组件间逻辑关系的脆弱性:事件驱动架构使得系统中各组件的逻辑关系变得更加复杂,增加了系统的脆弱性
七、其他
关注【小康师兄】微信公众号,回复【系统架构设计师】即可获取PDF和详细教程。
若觉得文章对你有帮助,随手『点赞』、『收藏』、『关注』,也是对我的支持。
版权归原作者 小康师兄 所有, 如有侵权,请联系我们删除。