安全架构评审

安全架构评审

  • 1.概述
  • 2.安全设计原则
  • 3.美团安全架构评审模型
    • 安全需求分析
    • 架构review
    • 攻击面分析和威胁建模
      • 攻击面分析
      • 威胁列表

1.概述

完整的安全评审会包含安全架构评审、安全代码审核和安全测试三个手段

安全架构评审聚焦于探寻安全设计中的漏洞,以宏观视野全面考量应用的安全性状况,能够迅速甄别业务系统关键的安全需求,同时精准判断当前安全防护机制能否契合这些需求,此乃极具投入产出效益的活动。故而,安全架构评审径直左右着整个安全评审工作的品质优劣,并且为安全编码以及安全测试清晰地指引出核心要点与方向

安全设计的系统不会只着眼于眼前的攻击和已知漏洞,还应该对未知的漏洞0day都具备一定的抵御能力


2.安全设计原则

安全防护的三大支柱:

在这里插入图片描述

1、纵深防御

在构建防御体系时,不应仅仅依赖某一种单一的防护机制,而应着重依靠能够相互补充的多层次、多方位且多角度的综合性机制。

纵深防御体系的构建可依据多个维度展开部署,例如从物理层级到应用层级的不同层面,基于物理位置差异所设定的各个控制点,区分是处于外围防线还是内置防线的不同布局,以及按照防护的时机与阶段的规划等。当成功构建并妥善部署这样的纵深防御体系后,即便其中某一种防护手段失效,也能够有效阻止攻击轻易达成目的,即便在遭受攻击并部分被突破的情况下,依然可以将损失控制在可承受的范围之内,从而最大程度地保障系统安全。

2、最小权限

在一个系统(如操作系统、数据库系统、应用程序等)中,无论是用户、进程还是其他实体,都应该被赋予完成其工作任务所必需的最小限度的权限,而不应该拥有超出其需求的额外权限

能否实现最小权限,往往是对一个公司对安全努力程度,以及对应的技术水平的试金石

3、默认安全

默认安全的基本原则就是,让安全一开始就成为内置的属性。一个带有漏洞的容器镜像发布出去,可能就意味着几万乃至几十万的主机存在漏洞的副本。默认安全需要大量额外的工作,但这些工作又绝对是值得的

4、注定失效

在设计安全系统时,需要考虑到你的防护注定会失效,并充分考虑并演练不同的失效场景,确保你的安全性在失效时依然能够得到保证。这点除了通过按纵深防御原则部署你的防控机制外,每个系统事先设计、反复演练失效时的应急预案至关重要。其中保证系统可用性的降级方案,不能牺牲安全性是首先需要考虑的。

5、适用性原则

安全注定要提高成本。然而好的安全性设计,以及应用适当的技术,是能够有效降低这种成本

6、开放性设计

不要自创算法。尤其是像加密、认证等关键的安全方案


3.美团安全架构评审模型

在这里插入图片描述

安全架构评审的产出主要包含下面文件:

安全需求分析

安全需求应该作为非功能需求在应用开发早期提出,并在应用设计和实现中得到实现,安全需求主要包括:

1️⃣ 安全目标综述

依据应用的核心功能,对应用的整体安全目标进行描述,说明应用处理的关键资产,这些资产面临的风险以及安全防护的要求。安全需求描述例子:系统存储的用户姓名、手机号等个人信息,在存储、传输过程中必须得到保护,一旦防护失效,导致大批量泄漏会直接影响用户资产乃至导致公司声誉、业务收到严重影响;数据库root权限一旦泄漏,将导致所有数据泄漏,或者被删除。

2️⃣ 通用安全需求

  • 身份认证的安全需求
  • 会话安全需求
  • 权限控制安全需求
  • 日志审计安全需求
  • 数据加密安全需求
  • 网络以及其他隔离安全需求
  • 基础设施安全需求
  • 安全编码相关需求

架构review

架构评审主要目的是准确、详细的还原应用系统的原貌。首先要有一个整体的架构图,具体的架构图可以依据应用的复杂度分层次给出。

1、逻辑架构图

以服务为粒度画出应用的内外部组件以及相互间的访问关系。对于复杂的系统还要给出更深层次的详细架构图,可以细到微服务,或者单个集群的单个主机,包含所有的中间件如负载均衡、消息队列等。

在这里插入图片描述

2、应用场景的数据流图

应用场景要尽量全,不仅要涉及日常使用场景,还需要从服务注册、接入到使用乃至注销变更等生命周期的所有场景都覆盖。

在这里插入图片描述

3、识别关键技术

除了画出架构和数据流图,还要列出系统各个组件使用的技术、模块,包括但不局限于操作系统、数据库和其他中间件存储组件,给出技术清单。对于内部依赖的组件,要求必须经过评审;对于外部组件,要求必须进行过扫描和安全配置评审,确保没有漏洞。

4、识别关键资产

形成系统处理的数据清单,并明确它的生成、传输、存储是否加密,访问控制是否到位。明确这些数据的密级,以及保护需求。这里要注意,除了业务数据、访问系统的密码、加密的密钥等数据凭证需要作为最核心的资产首先要标示出来。

形成应用的资产清单,从域名、微服务ID、主机集群、IP地址,域名,使用的各种组件清单。此外,还包括应用的研发、项目资源,如代码仓库,制品库,系统镜像。

5、安全防护配置记录

主要审查以下几项: 安全防护机制是否覆盖所有的访问入口和资源?防护技术采用的算法和具体实现是否存在缺陷?是否有明确的安全策略,配置是否进行过审计?尤其要注意自创的算法和实现方案,往往容易出现漏洞。

具体的防护机制需要采集的信息有:

  • 认证系统相关信息

  • 权限控制系统相关信息

  • 加密方案以及实现机制

    ▸包括密码和凭据的生成,保存方案

    ▸业务敏感数据的存储加密方案

    ▸传输通道的加密方案

  • 日志审计和监控方案

  • 网络隔离方案

攻击面分析和威胁建模

安全架构分析的核心,就是威胁建模。对于威胁建模,SDL两个问题制约了它的发展:第一个是太重了,流程化的东西太过繁琐、僵化。面对微服务、DevOps等小、快、零的开发模式明显头重脚轻,无法集成到产品的流水线当中;第二是太追求傻瓜化,和微软其他软件理念一样,希望教给一个小白都可以完成安全评审,忽略了安全系统中的复杂性和专业性。

对于简化的威胁建模过程主要分攻击面分析(过程)和威胁列表(结果)两部分:

攻击面分析

1、信任边界识别

常见信任边界:

  • 网络边界:常用的有Internet、办公网、开发测试网、生产网,或安全生产网(Security Zone)
  • 应用、服务边界:不论是微服务还是单体架构,服务往往会形成自己的集群,服务内部相当于一个可信区,内部组件可以自由访问
  • 主机边界:主机通常是服务的载体,也是服务实现的原子单位
  • 用户边界
  • 租户、项目逻辑边界:对于SaaS层服务,用户资源是共享在一个公用的集群,并没有明显的物理边界,实际的边界是通过基于认证和权限的访问控制隔离的

2、攻击入口识别

每一个数据流入、流出的入口点就是攻击入口。你需要在每一个数据入口点对应的信任边界识别有哪些必要的防护机制缺失,就能识别出漏洞,生成威胁列表了。把缺失的防护机制补上,就相当于修复了

威胁列表

威胁列表是整个安全架构评审中重要的产出。具体字段和描述如下:

●  威胁ID●  威胁描述▸某某资产对象,在某过程中,未做XX防护或者xx防护缺失,导致XX信息泄漏。●  威胁分类▸有多种分类方法•身份认证•日志审计•权限控制•流量加密•静态或者存储加密•账户、凭据保护•服务鉴权•特权账户或服务保护•网络隔离●  威胁等级▸两个因素: 产生的影响和触发的容易程度,可以参考DREAD模型▸值:高中低●  威胁来源▸这块结合整个安全评审上下文,重点是反映漏洞发现能力的指标•架构评审•代码审核•安全测试•外报和渗透测试●  威胁状态▸跟踪威胁进度•创建•已确认(代码确认、测试确认、人为确认)•修复(未验证)•修复(已验证)●  修复方案▸通用问题,需要启动安全控制项目,本字段做项目-漏洞关联•更新代码、配置(快速修复)•解决方案修复(指明解决方案ID)

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

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

相关文章

迎接国庆,我上线了第一款小程序

最近花了些时间,写了一个 “国庆头像” 小程序。正好快国庆节了,于是分享一下我的这个 “Starstick星点贴纸” 小程序,顺便简单讲讲以及其中的设计、开发、上线过程。 小程序的界面是这样的: 🔮背景 今年中秋前夕&am…

房产销售系统

文末获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于房产销售系统当然也不能排除在外,随着网络技术的不…

开发一套ERP 第二个生产版本

库存管理第一个生产版本 Okay 进入测试 嘿嘿,搞完了,剩下的就是细测慢调了 下一版本可以内置sqlite 数据库来操作这些数据表,sqlite 也支持 trigger 的功能

Weiss 机器人电动夹爪,重塑工业自动化精密操作

在当今的自动化进程里,Weiss高精密电动夹爪扮演着重要的角色。Weiss公司位于德国,其精心研制的高精密电动夹爪专为工业机器人与协作机器人打造。 Weiss 高精密电动夹爪的控制方式独具特色,与传统的一些夹爪相比,Weiss电动夹爪在处…

【JVM虚拟机】面试经典八股文(应届生必看)

目录 1.JDK、JRE、JVM三者关系? 2.谈谈JVM的理解? 3.JVM执行字节码的过程?(执行方式) 4.JVM的组成是什么? 5.什么是类加载机制? 6.什么是双亲委派模型? 7.JVM内存模型 8.堆区的…

Android 实现中英文切换

在开发海外项目的时候,需要实现app内部的中英文切换功能,所有的英文都是内置的,整体思路为: 创建一个sp对象,存储当前系统的语言类型,然后在BaseActivity中对语言进行判断; //公共Activitypubl…

Qt-练习1(事件循环)

一、练习要求 1、使用QT的IO读取文件; 2、以QSlider为基础,写一个进度条,显示文件读取的进度; 3、给QSlider布置qss样式,qss文件像css文件一样,分离出来。 二、源码 全部源码 源码目录: 1.1 、m…

解决Clang 18+不能链接GCC14编译的库的问题

前面笔者的博文MSYS2 MinGW64使用Protobuf新版本踩坑,有提到使用最新的Clang 19.1.4版本在MinGW下无法正常链接使用了Protobuf 28.3的项目,因为MinGW下的项目默认都是使用GCC来编译的,所以如果开发者使用Clang编译器,必然会出现链…

城市内涝监测预警系统解决方案-智慧排水

成因分析 气候变化 受全球气候变暖导致大气水循环加快,环流不稳定性增加,进一步引发极端降雨事件受城市热岛效应、雨岛效应的影响,强降雨常集中于城市且雨量多,强度大且雨量多。 排水系统不完善 城市发展快,城市防洪排涝工程&a…

Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算

前言 这段代码的目标是使用 随机森林分类器(Random Forest Classifier) 来进行二分类任务,并基于每个数据子集计算 ROC 曲线(Receiver Operating Characteristic Curve)以及 AUC(Area Under Curve&#xf…

【JAVA练习】力扣1232.缀点成线

题目: 解题思路: 直线上面的点满足公式:, 如果所有点在一条直线上,即任意两点的斜率相同,由于计算斜率存在精度的问题,可以将除法等价于乘法。 等价于 class Solution {public boolean che…

【SKFramework框架核心模块】3-12、网络请求模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…

C# 反射(Reflection)

文章目录 前言一、反射的优缺点(一)优点(二)缺点 二、反射的用途(一)查看特性(attribute)信息(二)审查集合中的各种类型并实例化(三)实…

Jdk配置、maven配置、gradle配置、Java开发常用的依赖库

一、配置JDK环境变量: 1. 安装 JDK 首先确保已经安装了 JDK。如果还没有安装,可以从 Oracle 官网 或者 AdoptOpenJDK 下载并安装合适的 JDK 版本。 我建议下载这个:https://adoptium.net/zh-CN/temurin/releases/?oswindows&archx64&…

【AI系统】FBNet 系列

FBNet 系列 本文主要介绍 FBNet 系列,在这一章会给大家带来三种版本的 FBNet 网络,从基本 NAS 搜索方法开始,到 v3 版本的独特方法。在本节中读者会了解到如何用 NAS 搜索出最好的网络和训练参数。 FBNet V1 模型 FBNetV1:完全基于 NAS 搜…

二十三、Linux可视管理之webmin和bt运维工具

1、webmin 基本介绍 Webmin 是功能强大的基于 Web 的 Unix/linux 系统管理工具。管理员通过浏览器访问 Webmin 的各种管理功能并完成相应的管理操作。除了各版本的 linux 以外还可用于:AIX、HPUX、Solaris、Unixware、Irix 和 FreeBSD 等系统安装webmin&配置 …

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程

聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程 系统采用FastAdmin框架独立全新开发,安全稳定,系统支持代理、商户、码商等业务逻辑。 针对最近一些JD,TB等业务定制,子账号业务逻辑API 非常详细,方便内置…

Transformer真的是机器人技术的基础吗?

生成式预训练Transformer(GPT)被吹捧为将彻底改变机器人技术。但实际应用中,GPT需要庞大且昂贵的计算资源、冗长的训练时间以及(通常)非机载无线控制,诸多限制之下,GPT技术真的实用吗&#xff1…

使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(2)

接《使用脚本语言实现Lumerical官方案例——闪耀光栅(Blazed grating)(纯代码)(1)》 一、添加分析组 1.1 代码实现 #添加分析组 addanalysisgroup(); set("name", "grating_R"); set("x", 0); set("y", 2.5*um); addanalysisgrou…

【Java】异常处理见解,了解,进阶到熟练掌握

各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 大家好我们今天来学习Java面向对象的的抽象类和接口,我们大家庭已经来啦~ 目录 1.(throws和throw)我们不管这个异常&…