1. 方案概述
软件或系统的生命周期贯穿从需求产生到最终报废的完整过程。这一过程体现了软件工程的核心思想,即分阶段、循序渐进。在每个阶段中,需明确任务目标、执行相应工作、完成审核验证并形成文档,以便交流、备查和追溯,最终提升系统的质量与安全性。
在生命周期中,各阶段的工作遵循“需求分析 ─ 功能设计 ─ 实施开发 ─ 测试验证 ─ 上线发布”的循环推进模式:
- 需求分析:全面收集与确认系统需求,特别是功能性需求和安全需求,形成需求文档,作为后续设计的依据;
- 功能设计:结合需求,进行架构设计、功能模块划分和安全设计,包括威胁建模与安全策略的制定,产出详细设计文档;
- 实施开发:根据设计文档进行系统开发,严格遵循安全编码规范,并开展阶段性代码审核;
- 测试验证:对系统进行功能测试、安全测试(如漏洞扫描、渗透测试)和性能测试,确保符合预期;
- 上线发布:在测试通过后,完成系统的部署与上线,同时制定并实施运维监控和安全加固方案。
各阶段之间相互依赖,后一阶段的工作以确保前一阶段产出结果的正确性与完整性为前提。通过上述模式,生命周期各阶段的安全保障贯穿始终,形成闭环管理。
2. 方法论
应用开发生命周期安全管理以生命周期的架构为基础,对系统开发全过程中的安全操作进行了系统化概括、补充和完善。通过这一要求,将安全设计、安全编码、安全测试和安全事件响应等传统安全技术与活动有机融合到开发生命周期的关键阶段
通过全生命周期的安全管理,不仅有效降低了人员、环境和业务逻辑中的信息安全风险,还提升了系统开发的安全性、合规性和整体质量。
3. 步骤内容
3.1. 需求分析
3.1.1. 识别关键安全目标
通过识别关键安全目标,能够更好地将业务需求、产品设计和安全保障相结合,确保软件在满足功能需求的同时具备必要的安全性,全面应对业务风险与合规挑战。
- 识别关键安全目标的方法
识别关键安全目标可以通过以下两项实践完成:
- 业务需求整理
对业务部门的最原始需求进行全面梳理与归纳,总结其对产品功能实现的明确要求。同时,结合实际场景,将业务需求中的隐含安全性需求明确化,为后续安全分析奠定基础。
- 业务需求安全分析
基于整理后的业务需求,深入分析其潜在的安全要求,将业务逻辑与产品实现的安全关注点提炼为关键安全目标。
- 关键安全目标的分析维度
对业务需求的关键安全目标分析可从以下三个方面展开:
(1)业务需求的考虑:根据业务部门对产品功能的要求,分析其可能涉及的安全需求,例如:客户账户信息的保护:确保敏感信息的保密性和完整性;交易操作的防篡改与可追溯性:设计操作审计与权限控制机制。
(2)行业需求的考虑:结合行业监管部门对业务的合规要求,明确其安全需求。例如:金融行业需遵守反洗钱(AML)及客户身份识别(KYC)要求;
(3)安全实践的考虑:参考国内外主流安全框架与标准,设计产品安全策略。例如:等级保护2.0中的访问控制、通信加密等技术要求;
3.2. 功能设计
3.2.1. 威胁建模
(1)威胁建模的核心目标
威胁建模的核心在于根据业务功能识别和理解风险,通过深入分析每个业务功能背后的威胁和可能的攻击场景,推动开发团队在实现业务功能的同时融入安全功能。
- 业务与安全协同:确保风险管理的决策与业务过程紧密协调,实现功能与安全的有机结合;
- 主动防御设计:在设计阶段预防潜在威胁,降低系统开发后期漏洞修复的成本。
(2)基于STRIDE的结构化方法
威胁建模采用STRIDE威胁模型(Spoofing、Tampering、Repudiation、Information Disclosure、Denial of Service、Elevation of Privilege)进行威胁分析,是一种结构化的方法,帮助开发团队系统地识别不同类型的安全威胁:
序号 | 威胁 |