Microsoft 安全开发生命周期(SDL)

在开发安全软件时,安全和隐私绝不能事后考虑,必须制定正式流程,以确保在产品生命周期的所有阶段都考虑它们。 Microsoft 的安全开发生命周期 (SDL) 将所有软件产品的开发和操作中嵌入了全面的安全要求、技术特定工具和强制性流程。 Microsoft 的所有开发团队都必须遵守 SDL 流程和要求,从而生成更安全的软件,减少和减少严重的漏洞,同时降低开发成本。

安全开发生命周期过程。

Microsoft SDL 由七个组件组成,包括五个核心阶段和两个支持安全活动。 五个核心阶段是要求、设计、实现、验证和发布。 其中每个阶段都包含强制性检查和批准,以确保正确满足所有安全和隐私要求以及最佳做法。 两个支持的安全活动(培训和响应)分别在核心阶段之前和之后进行,以确保它们得到正确实施,并且软件在部署后保持安全。

培训

所有 Microsoft 员工都必须完成一般安全和隐私意识培训,以及与其角色相关的特定培训。 新员工在受聘时会提供初始培训,在 Microsoft 的整个就业过程中,需要每年进行一次进修培训。

开发人员和工程师还必须参加角色特定培训,以便随时了解安全基础知识和安全开发的最新趋势。 还鼓励所有全职员工、实习生、临时员工、分包商和第三方寻求高级安全和隐私培训。

要求

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

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

Design

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

威胁建模图。

威胁建模过程首先定义产品的不同组件,以及它们在关键功能方案中(如身份验证)中彼此交互的方式。 数据流创建 (DFD) 的关系图,以直观地表示使用的关键数据流交互、数据类型、端口和协议。 DFD 用于识别威胁并确定威胁的优先级,以便针对添加到产品安全要求的缓解措施。

服务团队使用 Microsoft Threat Modeling Tool创建威胁模型,使团队能够:

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

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

实现

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

验证

在发布任何书面代码之前,需要进行多次检查和批准,以验证代码是否符合 SDL、满足设计要求以及是否没有编码错误。 手动评审由审阅者与开发代码的工程师分开进行。 职责分离是此步骤中的一项重要控制措施,可最大程度地降低代码被编写和释放导致意外或恶意伤害的风险。

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

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

如果手动审阅者或自动化工具发现代码存在任何问题,则系统会通知提交者,要求他们进行必要的更改,然后再提交代码以供审阅。

此外,内部和外部提供商定期在 Microsoft 联机服务上进行渗透测试。 渗透测试提供了另一种方法来发现其他方法未检测到的安全漏洞。 若要详细了解 Microsoft 的渗透测试,请参阅 Microsoft 365 中的攻击模拟

发布

通过所有必需的安全测试和评审后,不会立即向所有客户发布版本。 在 SDP () 的安全部署流程中,生成将系统地逐步发布到越来越大的组(称为环)。 SDP 环通常可定义为:

  • 圈 0:负责服务或功能的开发团队
  • 圈 1:所有 Microsoft 员工
  • 圈 2:Microsoft 外部的用户,他们已将其组织或特定用户配置为使用目标发布通道
  • 环 3:子阶段的全球标准发布

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

响应

所有 Microsoft 服务在发布后都会进行广泛记录和监视,使用集中式专有近实时监视系统识别潜在的安全事件。 若要详细了解 Microsoft 的安全监视和安全事件管理,请参阅 安全监视概述Microsoft 安全事件管理