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

微软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


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023天梯赛 L3_2 完美树 【树形DP、01最大/小价值】

完美树 思路 观察发现:如果一颗子树 u u u,它刚好有偶数个节点,那么 0 0 0 和 1 1 1 的染色数量一定相等,如果有奇数个节点,那么 0 0 0 和 1 1 1 的数量一定恰好相差 1 1 1(可能是 0 0 0 多&#x…

OpenHarmony多媒体-mp4parser

简介 一个读取、写入操作音视频文件编辑的工具。 编译运行 1、通过IDE工具下载依赖SDK,Tools->SDK Manager->Openharmony SDK 把native选项勾上下载,API版本>10 2、开发板选择RK3568,ROM下载地址. 选择开发板类型是rk3568&#xf…

高可用集群——keepalived

目录 1 高可用的概念 2 心跳监测与漂移 IP 地址 3 Keepalived服务介绍 4 Keepalived故障切换转移原理介绍 5 Keepalived 实现 Nginx 的高可用集群 5.1 项目背景 5.2 项目环境 5.3 项目部署 5.3.1 web01\web02配置: 5.3.2nginx负载均衡配置 5.3.3 主调度服…

碳实践|手把手教你开展组织碳核算

一、背景介绍 政府间气候变化委员会 IPCC(Intergovernmental Panel on Climate Chang)是世界气象组织(WMO)及联合国环境规划署(UNEP)于1988年联合建立的政府间机构。 IPCC在1997年和2000年分别发布了《1996 年 IPCC 国家温室气体清单指南修订本》和《国家温室气体清单优良作法…

【氮化镓】栅极漏电对阈值电压和亚阈值摆幅影响建模

本文是一篇关于p-GaN门AlGaN/GaN高电子迁移率晶体管(HEMTs)的研究文章,发表于《应用物理杂志》(J. Appl. Phys.)2024年4月8日的期刊上。文章的标题为“Analysis and modeling of the influence of gate leakage curren…

什么是SRE?

什么是SRE? SRE,全称为Site Reliability Engineering,即网站可靠性工程,是一种职能角色,它融合了软件工程和系统管理的技能与实践,旨在通过软件和自动化的方式来提高系统的可靠性、稳定性和扩展性。以下是…

Zabbix自定义模板、邮件报警、自动发现与注册、proxy代理、SNMP监控

目录 自定义监控内容 1.明确需要执行的 linux 命令 2.创建 zabbix 的监控项配置文件,用于自定义 key 3.在服务端验证新建的监控项 在 Web 页面创建自定义监控项模板 1.创建模板 2.创建应用集(用于管理监控项的) 3.创建监控项 4.创建…

JEECG表格选中状态怎么去掉

官网代码(在取消选中状态的时候不生效) rowSelection() {return {onChange: (selectedRowKeys, selectedRows) > {console.log(selectedRowKeys: ${selectedRowKeys}, selectedRows: , selectedRows);},getCheckboxProps: record > ({props: {disa…

【基础】gcc-动态库和静态库的创建和使用-命令

目录 1 动态库的建立使用2 动态库封装过程2.1 编译动态库2.2 使用动态库2.3 命令参数说明 3 静态库封装过程3.1 静态库的封装3.2 静态库的使用 1 动态库的建立使用 首先建立一个头文件,和三个.cpp文件,目的是要把这些文件链接成动态库: 其中…

C#创建背景色渐变窗体的方法:创建特殊窗体

目录 1.让背景渐变色的理论基础 2.让背景渐变色的方法 3.一个实施例 (1)Form1.Designer.cs (2)Form1.cs (3)渐变的蓝色背景 在窗体设计时,可以通过设置窗体的BackColor属性来改变窗口的背…

Golang | Leetcode Golang题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; func searchInsert(nums []int, target int) int {n : len(nums)left, right : 0, n - 1ans : nfor left < right {mid : (right - left) >> 1 leftif target < nums[mid] {ans midright mid - 1} else {left mid 1}}retu…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后&#xff0c;使用命令pip出现错误&#xff1a;zsh: command not found: pip 问题描述&#xff1a; 拉取或者创建新的python项目时&#xff0c;为项目添加了新的解释器&#xff0c;创建啦虚拟环境&#xff0c;但是执行pip命令的时候找不到命…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们&#xff0c;令人振奋的消息来啦&#xff01;本月&#xff0c;我们特地为大家准备了一份特别的粉丝福利&#xff01;只要您轻轻一点&#xff0c;关注我们的公众号&#xff0c;就有机会抽取现金红包&#xff0c;让您的生活多一份惊喜与喜…

游戏前摇后摇Q闪E闪QE闪QA等操作

备注&#xff1a;未经博主允许禁止转载 个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_w…

jenkins修改全局安全配置之后登录错误

教训&#xff08;流泪&#xff09; 事情是这样的&#xff0c;第一次我需要用单点登录集成jenkins&#xff0c;jenkins可以通过插件的方式支持cas协议&#xff0c;我当时也不很懂&#xff0c;经过我学网上的一顿乱配置&#xff0c;jenkis上不去了&#xff0c;虽然这是公司本地环…

【Linux学习】初识shell命令以及运行原理

这里写目录标题 &#x1f680;shell命令以及运行原理 &#x1f680;shell命令以及运行原理 Linux严格意义上说的是一个操作系统&#xff08;如下图所示&#xff09;&#xff0c;我们称之为“核心&#xff08;kernel&#xff09;“ 。 Linux系统的shell作为操作系统的外壳&…

开源大模型Llama 3 横空出世,4000亿参数性能直逼GPT-4

开源大模型Llama 3王者归来!最大底牌4000亿参数,性能直逼GPT-4 扎克伯格:「有了 Llama 3,全世界就能拥有最智能的 AI。」 ChatGPT 拉开了大模型竞赛的序幕,Meta 似乎要后来居上了。 扎克伯格在 Facebook 上发帖:Big AI news today. 借助先进的 Llama 3 模型,Meta 的 A…

STL的stack和queue(三):基于适配器模式的反向迭代器

目录 前言 list的反向迭代器 list.h文件 ReverseIterator.h文件 test.cpp文件 前言 迭代器按性质分类&#xff1a; 单向&#xff1a;forward_list双向&#xff1a;list随机&#xff1a;vector / deque 迭代器按功能分类&#xff1a; 正向反向const list的反向迭代器…

【笔试强训】Day2 --- 牛牛的快递 + 最小花费爬楼梯 + 数组中两个字符串的最小距离

文章目录 1. 牛牛的快递2. 最小花费爬楼梯3. 数组中两个字符串的最小距离 1. 牛牛的快递 【链接】&#xff1a;牛牛的快递 解题思路&#xff1a;简单模拟题&#xff0c;主要是处理⼀下输⼊的问题。 #include <iostream> #include <cmath> using namespace std;…