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安全事件管理