菜单
紫色方块

安全开发生命周期 (SDL)

分享该页面

2022 年 5 月

安全漏洞在整个计算机行业内已受到广泛认知,对于需要确保其所用产品安全性的客户来说,安全漏洞也备受重视。为此,NetApp 开发了安全开发生命周期 (Secure Development Lifecycle, SDL),这是一种用于评估潜在漏洞并对其做出响应的产品开发标准。

NetApp SDL 根据行业最佳实践和标准定义了一个严格的流程,产品团队可以按照此流程来评估安全性并规划安全产品的发布。该过程从最初的产品计划(在编写一行代码之前)开始,然后一直延伸到产品发布后的监控阶段。

NetApp 安全开发生命周期 (SDL) 简介

NetApp 实施的 SDL 是一个合理且可重复执行的 6 步流程(如下图所示),负责构建 NetApp 产品和服务的团队可以遵循此流程。在整个产品开发过程中,NetApp 团队可以执行这一系列明确且预定义的活动,以确保产品安全可靠。NetApp 可以根据 SDL 流程了解产品存在的风险,评估产品团队对完整 SDL 的遵从程度。

产品安全小组可为产品团队提供 SDL 最佳实践、IT 支持流程以及安全专业知识。产品团队可以实施 SDL 流程和策略,以交付安全的产品。SDL 要求已适当解决所有已知漏洞,包括第三方组件漏洞。

NetApp 的 6 步 SDL 流程

NetApp 的 6 步 SDL 流程
security chart

SDL 基础:安全培训和倡导者

在 NetApp SDL 流程中,首先要通过培训和任命安全倡导者在我们的产品团队中建立安全意识和积累专业知识。

安全培训

安全培训

NetApp 需要对参与产品交付的人员进行安全培训。安全培训包括有关当前威胁、安全开发技术、漏洞以及安全问题解决方法的培训。本培训针对学员(产品经理、开发人员、QA 等)的角色进行量身定制,旨在帮助他们建立对产品安全的认知,并将安全实践融入到工作中。

NetApp 要求每年开展一次安全培训,用于沟通产品安全方面不可避免发生的变化。NetApp 还提供内部论坛以及参与商业活动的机会,用于帮助个人提高安全知识水平。

安全倡导者

安全倡导者

安全倡导者是 NetApp 产品团队中具有安全意识的专业人员,他们在组织中推广安全开发最佳实践和 SDL,同时在大体上推动对产品安全的采用和理解。每个倡导者都接受了深度安全培训,尤其是了解了包括 NetApp SDL 在内的安全最佳实践。虽然主要目标是向开发团队注入安全领导力,但这些倡导者还充当产品安全小组的主要联系人,负责监控产品团队对 SDL 的执行情况。

SDL 6 步流程

NetApp SDL 流程的第一步是评估安全性,然后是发布合规性和测试计划。之后,对产品安全问题和解决方案进行全面评估,并验证是否已解决任何识别到的漏洞。最后由产品安全事件响应团队 (Product Security Incident Response Team, PSIRT) 开展沟通或记录风险并执行监控活动。

1 评估安全性

1 评估安全性

在 SDL 流程的这一步中,有三个接触点:审核产品安全基线、威胁建模和规避,以及审核供应链生态系统。所有这些都是在设计开发的早期,在开发或实施任何代码之前应用。

审核产品安全基线。产品安全基线是所有 NetApp 产品的一系列可接受的最低安全级别。它源自安全标准,例如 ISO/IEC 27001 以及对 NetApp 企业和政府客户做出的合同承诺。审核流程确立了产品团队根据每个要求评估其产品时可以遵循的一系列步骤。然后,他们会制定计划,为产品添加任何缺少的基线功能。

威胁建模和规避。威胁建模用于在早期发现功能、组件或产品中的安全缺陷。它使产品团队能够以结构化的方式考虑其设计中存在安全性隐患。然后,团队可以更有效地识别安全漏洞、确定风险并制定适当的规避措施。 

值得信赖的供应商计划。供应商计划的目标是确保我们的战略供应商生态系统能够始终如一地保证行业的最高安全级别。通过该计划,NetApp 可以评估参与 NetApp 产品开发的战略供应商,包括新供应商和老供应商。这个审计环节可帮助产品团队验证是否将 SDL 活动包括在供应商开发、制造和支持流程中。此外,NetApp 还可以通过它来确定我们从这些供应商采购的组件是否符合我们的标准。

2 发布计划

2 发布计划

在 SDL 流程的这一步中,有两个接触点:制定合规性和安全性测试计划。

SDL 合规性计划。通过合规性计划,产品团队可以定义将要在特定发行版本中执行的可接受的安全级别,并确定他们将如何为满足这些标准负责。尽早建立这些级别有助于团队了解与安全问题相关的风险,在开发期间发现和修复安全缺陷,并在整个项目中应用 SDL 标准。

安全性测试计划。安全性测试计划将安全性测试案例集成到测试策略中,从身份验证和授权到保护空闲数据或传输中数据,涵盖了安全性的方方面面。通过创建并执行将修复已发现问题也纳入进来的安全性测试计划,有助于在产品发布之前发现潜在安全问题并予以彻底解决。

3 识别并解决安全问题

3 识别并解决安全问题

在 SDL 流程的这一步中,有六个接触点:通过安全代码审核识别安全错误、静态和动态应用程序安全性测试、对已知漏洞进行运行时扫描、模糊测试以及扫描第三方软件中的漏洞。

静态应用程序安全性测试。在编译之前,产品团队可以使用此测试来扫描源代码,以发现代码中的潜在关键缺陷、安全弱点和漏洞。此测试会在每个项目的构建过程中使用一组挂钩,还会使用一系列报告工具(例如错误跟踪和代码审核)来标记产品缺陷。开发人员负责对发现的任何问题进行分类和修复。这样有助于避免发行版本中出现问题,例如,可支持性挑战增加、内存损坏、系统崩溃甚至是远程执行代码。

安全代码审核。安全代码审核是一种用于在开发早期发现安全错误,然后再提交到版本控制中的技术。它有助于确保代码不会受到任何明显的安全弱点的影响,例如通用弱点枚举 (CWE) 标准中阐述的特定代码模式。安全代码审核依赖于从静态应用程序安全性测试和威胁建模中获得的洞察力。

动态应用程序安全性测试。产品团队可以通过对已完全编译的软件执行此测试来确定运行时问题,从而在测试或暂存环境中测试集成和运行代码的安全性。扫描活动包括配置要测试的 Web 应用程序以方便扫描,然后针对该应用程序运行扫描工具。这些扫描可以发现范围十分广泛的漏洞,包括可能使应用程序容易受到跨站点脚本编写或 SQL 注入的影响的输入和输出验证问题。它们还可以帮助识别应用程序的配置错误和其他特定问题。

漏洞扫描。为了识别开发中的 NetApp 产品中所存在的常见和已知安全漏洞,NetApp 通过使用签名和配置检查来遵循标准流程。 

模糊测试。为了发现安全漏洞,模糊测试这种自动化运行时测试技术可将格式错误或半格式错误的数据引入协议接口,以识别非预期结果。NetApp 产品团队使用的模糊测试工具支持执行自动化黑盒模糊测试的协议特定测试套件。此测试可以确定诸如不符合 RFC 等问题。模糊测试通常与动态应用程序安全测试结合使用,在测试代码时,它是开发冲刺的一部分。 

第三方软件扫描。扫描第三方软件(或软件组成分析)有助于管理使用第三方组件带来的安全风险。它可以创建内置于我们产品中的开源软件和第三方组件清单。扫描会标记那些可能存在法律和安全问题、且需要先修复这些问题产品才能发布的组件。这样可以快速识别已知漏洞,并使产品团队能够制定解决这些漏洞的计划。可以连续进行扫描,因为可能会随时报告新发现的漏洞。

4 验证

4 验证

产品团队发现并解决安全性问题后,可以验证实施的更正。

5 传达风险

5 传达风险

在 SDL 流程中传达风险涉及评估、沟通和解决在 SDL 先前接触点中发现的风险。它可能涉及渗透测试、正式报告或制定特定于产品的事件响应程序等步骤。

6 监控

6 监控

产品安全事件响应团队 (Product Security Incident Response Team, PSIRT) 负责协调和管理对漏洞(无论是公开报告还是公司内部报告)的调查,以及 NetApp 的响应(包括与调查和规避相关的公告)。产品团队从其团队中指定一名接触点人员来与 PSIRT 协调工作。

返回顶部

To edit this Page SEO component





Drift chat loading