微软 SDL 安全研发生命周期详解

news2025/2/24 21:01:45

微软SDL(Security Development Lifecycle)是一种安全软件开发的方法论,它强调在整个产品开发过程中融入安全考虑因素。SDL 是一个动态的过程,包括多个阶段和活动,以确保产品的安全开发、测试、部署和运行。Microsoft 要求所有开发团队都必须遵守 SDL 流程和要求,从而获得更安全的软件,并降低开发成本,减少严重漏洞。当前多数大型企业都借鉴SDL构建了适应于企业内部的安全研发流程。

1. SDL概览

开发安全软件时,安全和隐私从来都不应是事后才考虑的,必须制定一个正式的过程,以确保在产品生命周期的所有时间点都考虑安全和隐私。 Microsoft 的安全开发生命周期 (SDL) 将全面的安全要求、特定于技术的工具和必需流程嵌入到所有软件产品的开发和运营中。

在这里插入图片描述

微软 SDL 由上图七个部分组成(可简称 5 + 2 ),包括五个核心阶段(蓝色圆圈标注的中间5个阶段)和两个支持安全活动(黑色圆圈标注的两个端点):

  • 5个核心阶段:分别是要求、设计、实现、验证和发布。 每个阶段都包含强制性的检查和审批,以确保所有安全和隐私要求以及最佳做法得到妥善解决。
  • 2个支持活动:即培训和响应。分别在核心阶段之前和之后进行,以确保它们得到正确实现,并且软件在部署后保持安全。

Microsoft 的所有开发团队都必须遵守 SDL 流程和要求,从而获得更安全的软件,并降低开发成本,减少严重漏洞。

2. SDL的安全目标

  • 降低产品或服务的安全漏洞率
  • 降低可能发生的安全漏洞的严重程度
  • 在产品研发阶段就消除潜在的安全风险
  • 建立企业整体安全开发规范和流程
  • 将安全开发规范固化在开发工具中
  • 建立安全能力中心,快速响应安全事件

3. SDL安全能力提升路线图

3.1. PPDR安全自适应过程

PPDR是Prepare、Protect、Detect及Response的简称,具体如下:

  • Prepare(评估):现状调研
  • Protect(保护):保护体系建设
  • Detect(检测):检测和监控体系建设
  • Response(响应):应用响应体系建设

在这里插入图片描述

3.2. SDL能力提升路线

在这里插入图片描述

3.2.1. 第一阶段:研发安全现状调研及差距分析

SDL 评估旨在确定企业在开发过程中的安全和隐私需求, 分析任何差距, 并向企业提供建议。评估23项功能, 涵盖 SDL 中的17种实践。
在这里插入图片描述

3.2.2. 第二阶段:安全研发流程落地实施

微软的安全研发流程落地实施主要涉及如下五个关键点:

  1. 根据企业安全能力差距分析,进行安全培训体系建设、知识库建设、合规支撑工具建设,安全团队建设
  2. 应用安全架构评估、威胁建模:比如建立威胁消减知识库,帮忙安全SE做安全架构设计。
  3. 自动化的安全功能点检查工具、自动化的发布过程,和安全工具自适应:比如CodeQL静态代码检查工具,可以自动检测开发者提交的PR,及时发现安全问题。
  4. 自动化的Web漏洞设,检查工具引入和建Fuzz工具引入,内网渗透和KALI的引入
  5. 建立快速应急响应团队、明确响应人员角色职责

若要详细了解以上五个关键落地指导,可参阅附件《微软SDL安全研发生命周期介绍》(访问密码:6277)

4. SDL具体内容

4.1. 培训

所有 Microsoft 员工都必须完成一般安全意识培训和适合其角色的特定培训。 初始安全意识培训在员工时提供给新员工,在 Microsoft 的整个工作期间都需要进行年度刷新培训。

开发人员和工程师还必须参与特定于角色的培训,让他们了解安全基础知识以及安全开发的最新趋势。 还鼓励和提供所有全职员工、实习生、特遣队工作人员、分包商和第三方的机会,以寻求高级安全和隐私培训。

涉及的培训内容主要如下图所示:
培训地图

4.2. 要求

Microsoft 开发的每个产品、服务和功能都从明确定义的安全和隐私要求开始;它们是安全应用程序的基础,并告知其设计。 开发团队根据产品将处理的数据类型、已知威胁、最佳做法、法规和行业要求,以及从以前的事件中吸取的经验教训等因素来定义这些要求。 定义后,将明确定义、记录和跟踪要求。

软件开发是一个持续的过程,这意味着关联的安全和隐私要求在整个产品的生命周期中发生变化,以反映功能和威胁环境的变化。

4.3. 设计

定义安全性、隐私和功能要求后,软件的设计就可以开始。 作为设计过程的一部分,将创建威胁模型,以帮助根据风险识别、分类和对潜在威胁进行评分。 对软件进行更改时,必须在每个产品的生命周期内维护和更新威胁模型。

在这里插入图片描述
威胁建模过程首先定义产品的不同组件,以及它们如何在关键功能方案(如身份验证)中相互交互。 数据流图 (DFD) 创建,以直观地表示所用的关键数据流交互、数据类型、端口和协议。 DFD 用于识别和确定添加到产品安全要求的缓解威胁的优先级。

在这里插入图片描述

开发人员需要对所有威胁模型使用 Microsoft 的Threat Modeling Tool,这使团队能够:

  • 沟通其系统的安全设计
  • 使用经过验证的方法分析安全设计的潜在安全问题
  • 建议和管理安全问题的缓解措施

在发布任何产品之前,将检查所有威胁模型的准确性和完整性,包括缓解不可接受的风险。

4.4. 实现

实现从开发人员根据前两个阶段创建的计划编写代码开始。 Microsoft 为开发人员提供了一套安全开发工具,以有效实现他们设计的软件的所有安全性、隐私性和功能要求。 这些工具包括编译器、安全开发环境和内置安全检查。

4.5. 验证

在发布任何书面代码之前,需要进行多次检查和批准,以验证代码是否符合 SDL、符合设计要求且没有编码错误。 SDL 要求手动评审由独立于开发代码的人员的审阅者进行。 职责分离是此步骤中的重要控制措施,可确保同一人无法编写和发布任何代码,从而导致潜在的意外或恶意伤害。

还需要进行各种自动检查,并内置于提交管道中,以便在签入期间和编译生成时分析代码。 Microsoft 使用的安全检查分为以下类别:

  • 静态代码分析:分析源代码是否存在潜在的安全缺陷,包括代码中存在凭据。
  • 二进制分析:在二进制代码级别评估漏洞,确认代码已准备就绪。
  • 凭据和机密扫描程序:标识源代码和配置文件中可能的凭据和机密公开实例。
  • 加密扫描:验证源代码和代码执行中的加密最佳做法。
  • Fuzz测试:使用格式错误和意外数据来练习 API 和分析器,以检查漏洞并验证错误处理。
  • 配置验证:根据安全标准和最佳做法分析生产系统的配置。
  • 开源治理 :开源软件检测和检查版本、漏洞和法律义务。

如果手动审阅者或自动化工具在代码中发现任何问题,则会通知提交者,并且在再次提交以供审阅之前,需要对其进行必要的更改。此外,内部和外部提供商定期对 Microsoft 联机服务进行渗透测试。

4.6. 发布

通过所有必需的安全测试和评审后,生成不会立即发布给所有客户。 在安全部署过程( Safe Deployment Process,SDP)中,生成会系统地逐步发布到更大和更大的环。 SDP 环的定义如下:

  • Ring 0:负责服务的开发团队
  • Ring 1:所有 Microsoft 员工
  • Ring 2:Microsoft 外部的用户已将其组织或特定用户配置为位于目标发布频道
  • Ring 3:分阶段的全球标准版本

每个环中的内部版本保留在负载周期较高的适当天数内,但除Ring 3 外,因为已对早期环中的稳定性进行了适当的测试。

4.7. 响应

发布后会广泛记录和监视所有 Microsoft 服务,并使用集中专有近实时监视系统识别潜在的安全事件。

5. 参考

[1] Microsoft Security Development Lifecycle (SDL)
[2] Introduction to Microsoft Online Services security development and operation


在这里插入图片描述

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

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

相关文章

深入理解数据结构第五弹——排序(2)——快速排序

排序(1):深入了解数据结构第四弹——排序(1)——插入排序和希尔排序-CSDN博客 前言: 在前面我们已经讲过了几种排序方式,他们的效率有快有慢,今天我们来学习一种非常高效的排序方式…

小程序AI智能名片S2B2C商城系统:做内容、造IP、玩社群打造私域流量的新营销秘籍

在数字化浪潮汹涌的新时代,小程序AI智能名片S2B2C商城系统正以其独特的魅力,引领着营销领域的新变革。这套系统不仅将人工智能与小程序技术完美结合,更通过创新的S2B2C模式,为企业打开了一扇通往成功的大门。 面对激烈的市场竞争&…

【uniapp】 合成海报组件

之前公司的同事写过一个微信小程序用的 合成海报的组件 非常十分好用 最近的项目是uni的 把组件改造一下也可以用 记录一下 <template><view><canvas type"2d" class"_mycanvas" id"my-canvas" canvas-id"my-canvas" …

设计模式——访问者模式22

访问者模式能将算法与其所作用的对象隔离开来&#xff0c;分离数据结构与访问数据操作。例如 不同访问者 对不同 文件类型&#xff08;要素&#xff09;的操作权限不同。 设计模式&#xff0c;一定要敲代码理解 元素抽象&#xff08;被访问的元素&#xff09; accept 方法实…

【数据结构】单链表的头节点与尾节点

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

Appian发布最新版本:通过AI流程自动化推动业务发展

Appian公司于2024年4月16日在弗吉尼亚州麦克莱恩宣布推出Appian平台的最新版本。此版本引入了Process HQ&#xff0c;这是一个集流程挖掘和企业AI于一体的系统&#xff0c;结合了Appian的数据平台。Process HQ为企业运营提供前所未有的可见性&#xff0c;支持数据驱动的决策和流…

nas如何异地共享文件?

nas异地共享文件是一种通过网络实现不同地区电脑与电脑、设备与设备、电脑与设备之间的文件共享的技术。通过nas&#xff08;网络附加存储&#xff09;设备&#xff0c;用户可以在不同地点的电脑或设备之间快速、安全地共享文件和数据。本文将介绍nas异地共享文件的原理以及它在…

宝塔面板使用docker+nginx+gunicorn部署Django项目实战教程

第一步&#xff1a;创建Django项目 使用pip install django安装创建django项目的依赖在电脑某个根目录下执行django-admin startproject app创建一个名为app的Django项目。目录结构如下: ├── app │ ├── init.py │ ├── asgi.py │ ├── settings.py │ ├── url…

SQL注入作业

目录 一、万能密码和二阶注入测试 1.万能密码 2.二阶注入测试 二、联合查询注入测试 1.判断注入点 2.判断当前查询语句的列数 3.查询数据库基本信息 4.查询数据库中的数据 三、报错注入 1. 报错注入函数EXTRATVALUE 2.UPDATEXML 四、盲注测试 1.布尔盲注 判断数据…

【学习】软件压力测试对软件产品的作用

在信息化高速发展的今天&#xff0c;软件产品已经成为各行各业不可或缺的一部分。然而&#xff0c;随着软件功能的日益复杂和用户需求的不断增长&#xff0c;软件产品的稳定性和可靠性问题也愈发凸显。在这样的背景下&#xff0c;软件压力测试作为软件质量保障的重要手段之一&a…

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测&#xff0…

盗梦攻击:虚拟现实系统中的沉浸式劫持

虚拟现实&#xff08;VR&#xff09;硬件和软件的最新进展将改变我们与世界和彼此互动的方式&#xff0c;VR头显有可能为用户提供几乎与现实无差别的深度沉浸式体验。它们还可以作为一种跨越遥远距离的方式&#xff0c;通过使用个性化的化身或我们的数字代表&#xff0c;促进社…

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来&#xff0c;随着中国旅游业的蓬勃发展&#xff0c;旅游陪同翻译的需求也水涨船高&#xff0c;这些专业的翻译服务者为中外游客搭建起友谊的桥梁&#xff0c;引领他们共同探索中国这片古老而神秘的土地 。那么&#xff0c;旅游陪同翻译英译中难吗&#xff1f;我们如何在众多…

机器学习和深度学习-- 李宏毅(笔记于个人理解)Day 21

Day 21 Self- Attention 选修部分 ​ 学完自适应 再回来看看 Sequence Labling 假如我们现在有一个需要读完全部句子才能解的问题&#xff0c; 那么red window 就需要变得是最大的&#xff08;最长的句子&#xff09;&#xff1b; 其实这里大家有没有想过&#xff0c;这个玩意…

Android Studio历史版本下载地址

https://developer.android.com/studio/archive?hlzh-cn https://blog.csdn.net/crasowas/article/details/130304836

豆瓣影评信息爬取 (爬虫)

代码块&#xff1a; from lxml import etree import requestsheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0 }url_list[] for i in range(0,5):i*20urlsf"https:…

顺序表链表经典算法题

1.链表反转 typedef struct ListNode listnode; struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return head;}listnode* p1 NULL;listnode* p2 head;listnode* p3 head->next;while(p2){p2->next p1;p1 p2;p2 p3;if(p3)p3 p3->next;}…

ubuntu22.04 启用 root登录

1&#xff0c;设置 root密码 普通用户输入如下命令给 root 设置密码 sudo passwd root 根据提示设置密码。 2&#xff0c;允许 root 登录 vim /etc/pam.d/gdm-password 以及 vim /etc/pam.d/gdm-autologin 注释两个文件中如下图所示的代码 3&#xff0c;允许 ssh 方式 ro…

移动端适配之viewport

目录 盒模型&#xff1a;widthcontent&#xff08;padding border&#xff09; class"content-box"内容盒模型&#xff08;W3C盒&#xff09; class"border-box"边框盒模型&#xff08;IE 盒&#xff09; scroll滚动 window浏览器视窗&#xff1a;包括…

IP 和 TCP 抓包分析实验

实验拓扑 实验需求 1、配置IP地址&#xff0c;R1的g0/0口是1.1.1.1/24 &#xff0c;R2的g0/0口是1.1.1.2/24 2、在该链路上开启抓包 3、在R1上ping R2 4、开启wireshark&#xff0c;查看抓取的ping包的内容 5、在R2上开启ftp服务 6、在R1上访问R2的FTP 7、在wireshark查…