夜雨聆风学习资料网

ARTICLE · 1089740

软件开发生命周期安全

软件开发生命周期安全

Waterfall / Agile / DevOps / DevSecOps、成熟度模型、运维与变更管理、集成产品团队

应用必须从第一天起就被设计、规划得既可用又安全。本章回答两件事:用哪些开发方法论 确保应用达到最低安全水平,以及如何判断供应商 的开发流程是否达标。开发项目与应用数量增长飞快,定期更新与打补丁是保持相关性的关键;跨职能/集成产品团队与变更管理则让应用在整个生命周期内保持可用且安全。考试重点:模型特征对比(Waterfall vs Agile)、DevSecOps 的 shift-left、CMMI/SAMM 分级。

01 · 安全开发流程与四大方法论

要做出安全的软件开发项目,先要有安全的开发流程 :合理规划与收集软件需求、架构与设计、编码、测试、发布与维护。当今在用的框架包括 Waterfall、Agile、DevOps、DevSecOps ,它们为开发安全软件提供结构化路径。快速分辨:Agile 是增量式方法论,重在客户协作与反馈——它正是为解决「最终交付物不合客户期望」的不满而生,让客户更多参与(例子:客户要 App 打印两个点,开发方没让客户参与就按水平排印,而客户想要垂直的——参与每阶段就能早发现早解决)。Waterfall 是顺序式方法,需求收集、设计、实现、测试、维护逐阶段推进,每阶段完成才能进下一阶段,客户未被包含在每个步骤中、容易不满。DevOps 是融合开发(Dev)与运维(Ops)的一组实践,缩短 SDLC 时间、持续交付高质量软件;DevSecOps 把安全实践贯穿整个 SDLC,是 DevOps 的延伸。

02 · Waterfall:六阶段顺序模型

Waterfall 是顺序式(sequential)开发:一步一步推进,前一阶段完成后才能开始下一阶段,很难返回已完成的阶段 。它诞生于改善软件开发项目定价可预测性 的诉求——终端用户希望事先知道项目花多少钱以便做预算。六个阶段:

1. Requirements 需求 :从客户收集需求,包括目标与项目约束。

2. Design 设计 :设计整体架构与组件接口——识别系统组件、交互与整体结构。

3. Development/Coding 开发/编码 :编写项目代码。

4. Testing 测试 :验证系统满足第一阶段需求,含单元测试、集成测试、回归测试。

5. Deployment 部署 :部署到生产——安装、配置、培训用户。

6. Maintenance 维护 :处理新增需求——用户用起来发现要加功能,或出问题要打补丁。

Waterfall 简单直接,适合定义清晰的项目 ;但不够灵活、抗拒需求或技术变更,因为难以回到早期阶段,不适合需求不断变化的项目(如边做客户测试边按反馈调整的 App)。它的测试阶段是验证「按计划工作」,而不是测试客户满意度。

考点: Waterfall 六阶段顺序与「难回头」特征是送分题;关键词=sequential / 定价可预测 / 适合 well-defined 项目 / 客户后期才见成品。

03 · Agile:迭代、冲刺与持续反馈

Agile 强调迭代开发、频繁交付、持续改进 :软件工程是复杂过程,最好拆成小而可控的块。相对 Waterfall 的优点:①灵活性 ——随项目推进调整计划以适配需求变化或意外情况;②更快交付可工作的软件 ——在称为 sprint(冲刺) 的小周期里持续交付可工作的增量给客户(每个 sprint 通常数周,结尾产出「可发货的产品增量」),支持持续反馈与迭代改进;③更可能产出高质量软件 ——开发过程中持续测试与改进。Agile Manifesto 强调个体与互动重于流程与工具 、客户协作、响应变化。

Agile 的缺点:团队不断调整计划,比 Waterfall 更难管理,时间线更难把控。关键特征速记:迭代开发 (sprint 通常 2–4 周,每 sprint 末交付可工作增量);增量开发 (全程交付而非最后一次性交付,用户早反馈常反馈);自组织团队 (自定目标、流程与工作,高度自治→生产力提升);协作 (与利益相关方紧密收集需求、成员间紧密合作,保证按时按预算);持续改进 。常见框架:Scrum、Kanban、极限编程 XP 。Agile 已成为许多项目的首选,适合易变需求或需快速开发的项目。注意:Agile 与 Waterfall 都不是「天生不安全」,但也都不是以安全为优先 设计的——这正是 DevSecOps 登场的理由。

04 · DevOps 与 DevSecOps(shift-left)

传统角色分离(开发写码、运维部署)造成交接瓶颈。DevOps 把开发与运维合入一个框架,靠紧密协作与自动化 贯通 SDLC(规划→编码→测试→部署→运维),成果是持续集成与持续交付(CI/CD) 。核心原则:协作(开发、运维、客户全程协作);CI/CD(频繁合入中央仓库+自动化部署);自动化(构建/测试/部署去重、降错、提效);基础设施即代码 IaC (借虚拟化与容器把计算机/网络硬件当代码供给);监控与反馈(持续监控应用、对照基线追踪指标);Agile 实践(迭代增量、频繁发布、反馈环)。常用工具:版本控制(Git)、CI/CD(Jenkins、Travis CI)、配置管理(Ansible、Chef、Puppet)、容器化与编排(Docker、Kubernetes)、监控日志(Prometheus、ELK 栈)。

安全警示: 单一个人对流程拥有完全控制,违反了职责分离(SoD)原则 ——用 RBAC、代码评审、变更管理 来缓解。

DevSecOps ,又称 shift-left security(左移安全) ,把安全集成进整个 SDLC:安全不是事后补,而是一开始就是核心考量;安全从集中团队扩散为所有产品交付职能的责任。落地方案:在 CI/CD 流水线里集成安全扫描,防止漏洞进入生产——从静态分析 (审查源代码)到动态分析 (代码运行时测试)。工具示例:SonarQube (静态应用测试)、Burp Suite (动态应用测试)。此外 DevSecOps 也是文化转变:把软件设计得更安全,重视跨职能的安全最佳实践教育与意识。

易错点: DevOps 单人全控流程 → 违反 SoD;DevSecOps=shift-left,安全前置;静态=看源码(SonarQube),动态=运行时测(Burp Suite)——别把工具对应错。

05 · 成熟度模型:CMMI 与 SAMM

SDLC 要在效率、安全、市场契合度等互相竞争的要求间求平衡:过度强调安全可能得到「极安全但难用」的产品;只平衡体验与安全却不管交付时间,产品可能慢到失去竞争力。团队从不成熟(混乱、意外频出)走向稳定高效的过程可以用成熟度模型 度量。两大流行模型:较通用的 CMMI(Capability Maturity Model Integration,能力成熟度模型集成,取代了早期的 CMM) 与专攻软件安全的 SAMM(Software Assurance Maturity Model) 。

CMMI 五级| 含义


1\. Initial 初始| 没有已定义的流程

2\. Repeatable 可重复| 已定义流程并能一致地重复

3\. Defined 已定义| 已定义流程并能度量绩效

4\. Managed 已管理| 已定义流程并能控制绩效

5\. Optimized 优化| 已定义流程并持续改进绩效

CMMI 不是告诉组织该用什么流程的规定性模型,而是让组织自定义随时间改善安全的流程框架;它提供路线图与最佳实践,业界用它产出更高质量更安全的软件——招标(RFP)常要求开发商持 CMMI 3 级或以上认证,以确保最低限度的安全开发流程被遵循。

SAMM 由开源组织 OWASP 创建,帮组织用 SDLC 框架改善软件安全,适合各种规模与行业、也可用于第三方开发。理念:软件安全人人有责 。五级:1 Awareness 意识(提升组织内软件安全意识)→ 2 Basic protection 基础防护(实施基础安全控制保护软件资产)→ 3 Managed processes 受管流程(在 SDLC 中建立并管理安全流程)→ 4 Continuous improvement 持续改进(提升软件安全态势)→ 5 Advanced practices 高级实践(威胁建模、安全架构等)。OWASP 还配套提供自评估工具、改进指南与可实施的安全控制集。

考点: CMMI 五级口诀「Initial → Repeatable → Defined → Managed → Optimized」,每级=定义/重复/度量/控制/持续改进;SAMM 由 OWASP 出品、聚焦软件安全、五级以 Awareness 起步、终到威胁建模/安全架构。

06 · 运营与维护(O&M)

O&M 阶段在软件发布到生产之后,通过软件维护与支持确保应用继续满足用户需求:缺陷修复、性能改进、适配新需求或新环境。典型活动:

* Monitoring 监控 :审计软件性能与安全,确保表现符合预期。

* Troubleshooting 故障排除 :问题出现即解决——根因分析、开发并实施解决方案。

* Patching 打补丁 :尽快修复安全漏洞,使应用维持最低安全水平。

* Upgrades 升级 :部署新功能、改进性能。

* Training 培训 :通过手册、培训课或在线教程教用户使用软件。

* Support 支持 :提供邮件或电话支持解答应用问题。

O&M 的主要挑战:软件环境不断变化、难以及时跟进;成本高(监控、排障、补丁、升级、培训、支持);安全与易用的两难 ——安全方案让软件更难用,易用性改进又常引入漏洞。有效管理要靠:提前规划确保资源、用自动化 降本降复杂度、制定沟通计划 (支持人员联系方式+问题报告指引)、持续识别改进点并实施。

07 · 变更管理(Change Management)

组织永远在变:新电脑、新员工、新应用。在软件项目里变更管理同样关键——一处变更会牵动全局 :加一个新功能可能要求改数据库模式、更新用户界面、改 API、加测试。变更管理流程典型八步:

1. 识别变更需求 (Identifying):利益相关方或项目经理发起——客户想要新功能甚至一个补丁。

2. 评估变更影响 (Assessing):变更可能改善产品却引入漏洞,或弄坏别的功能。

3. 制定变更管理计划 (Developing):含目的、范围、影响、受影响用户、沟通、培训、测试与实施规划。

4. 沟通变更 (Communicating):确保信息清晰、简洁、有信息量。

5. 培训 (Training):确保利益相关方理解变更及其影响。

6. 测试变更 (Testing):确认无负面影响且达到预期结果。

7. 实施变更 (Implementing):受控有序地实施;准备「回滚(rollback) 」计划以防意外结果。

8. 监控变更 (Monitoring):确认按预期工作、对项目无负面影响。

08 · 集成产品团队(IPT)

Integrated Product Team(IPT) 是一支多学科团队,集体负责交付一个既定软件项目,用于复杂开发项目的评审与决策。大规模项目中 IPT 可包含开发者、测试员、UX 设计师与产品经理,协作确保新功能无缝集成;面对「如何处置重大安全漏洞」这类关键决策时,IPT 评审各种方案、评估影响,在保住项目时间线的同时选出最佳缓解路径。要点:

* 强调全员参与 :用户、客户、管理层、开发者、承包商都在协作论坛中;可设于项目层,也有监督级 IPT(OIPT)与工作级 IPT(WIPT)。

* 多诞生于结构化系统工程方法论,聚焦理解每个利益相关方的需求。

* 多学科角色聚在一起 → 沟通更顺、协作更易 → 决策更优、解决问题更快;确保客户需求全程被满足 → 客户忠诚、成本下降、创新涌现。

* 代价:要求改变工作方式——跨职能协作影响会议、需求文档与关键阶段签署,在习惯传统层级结构的组织中可能被感知为拖延与障碍;靠培训与良好管理化解。

* 组建与经营好 IPT 的策略:清晰的愿景、选对成员、持续沟通,以及最重要的——庆祝成功 。

速查表

主题| 必背要点


安全开发流程| 需求收集 → 架构/设计 → 编码 → 测试 → 发布 → 维护;框架:Waterfall/Agile/DevOps/DevSecOps

Waterfall| 顺序式、阶段完才进下阶段、难回头;为定价可预测而生;适合 well-defined 项目;客户后期才见成品

Waterfall 六阶段| Requirements → Design → Coding → Testing(单元/集成/回归)→ Deployment → Maintenance

Agile| 迭代+增量+sprint(2–4 周)+自组织团队+协作+持续改进;框架:Scrum/Kanban/XP;灵活、快交付、质量高

DevOps| Dev+Ops 合一;CI/CD、自动化、IaC、监控反馈;单人全控→违反 SoD,用 RBAC/代码评审/变更管理缓解

DevSecOps| shift-left 左移安全;安全贯穿 SDLC;流水线集成扫描:静态=看码(SonarQube)、动态=运行时(Burp Suite)

CMMI 五级| Initial(无流程)→ Repeatable(可重复)→ Defined(可度量)→ Managed(可控制)→ Optimized(持续改进);RFP 常要 3 级

SAMM 五级| OWASP 出品、聚焦软件安全:Awareness → Basic protection → Managed processes → Continuous improvement → Advanced practices(威胁建模/安全架构)

O&M| 监控/排障/补丁/升级/培训/支持;挑战=环境常变、成本高、安全 vs 易用两难;靠自动化与沟通计划管理

变更管理| 识别→评估影响→制定计划→沟通→培训→测试→实施(含回滚计划)→监控

IPT| 多学科集体负责交付;含 OIPT/WIPT;全员协作→决策优、问题解得快;需清晰愿景+选对人+持续沟通+庆祝成功

回忆测验(合上速查表再答)

### Retrieval Practice

1. Waterfall 与 Agile 的核心区别?答案Waterfall =顺序式,每阶段完成才进下一阶段、难回头,客户后期才见成品,适合定义清晰的项目;Agile =迭代增量、sprint(2–4 周)交付可工作增量、客户协作与持续反馈,适合需求易变的项目。

2. Waterfall 的六个阶段按顺序是什么?答案Requirements(需求)→ Design(设计)→ Development/Coding(编码)→ Testing(测试:单元/集成/回归)→ Deployment(部署:安装/配置/培训用户)→ Maintenance(维护) 。

3. DevOps 为什么可能违反职责分离(SoD)?如何缓解?答案DevOps 让单一个人对流程拥有完全控制 ,违反 SoD;缓解手段:RBAC、代码评审、变更管理 。

4. DevSecOps(shift-left)指什么?静态与动态分析各用什么代表工具?答案把安全从开发之初就集成进整个 SDLC(CI/CD 流水线安全扫描),安全非事后补;静态分析 审查源代码(SonarQube ),动态分析 在代码运行时测试(Burp Suite )。

5. CMMI 与 SAMM 各是什么、五级如何对应?答案CMMI 较通用、CMM 的继承者:Initial→Repeatable→Defined→Managed→Optimized(无流程→可重复→可度量→可控制→持续改进);SAMM 由 OWASP 创建、专攻软件安全:Awareness→Basic protection→Managed processes→Continuous improvement→Advanced practices。

6. 变更管理八步里哪一步要求准备「回滚」计划?为什么?答案第 7 步 实施变更(Implementing) ——实施须受控有序,创建回滚计划以防变更引发意外结果。

下一步

配套速查表:reference/020-ch20-cheatsheet.html

下一篇:第 21 章「软件开发安全控制(Software Development Security Controls)」。

📌 我是你的 CISSP 备考老师。任何不清楚的地方,直接问我(follow-up questions)就好——这是课程设计的一部分。

相关学习资料