【 3-2 】

软件系统安全开发体系

第3.2章 软件系统安全开发体系

本章内容依据《数据安全工程技术人员(初级)第3模块零基础详细学习教材》整理,系统讲解软件系统安全开发体系。

2.1 安全开发生命周期

软件安全开发要求在立项、需求、设计、编码、测试、上线、运行和退役各阶段加入安全活动。每一项安全需求都应能够追溯到设计、代码、测试结果和运行记录。

阶段基础安全活动初级人员可参与的工作
立项与需求识别数据、用途、角色、接口和风险整理数据处理清单和访谈记录
设计设计认证、权限、加密、日志、备份和异常处理绘制数据流和编制权限矩阵
编码输入校验、权限判断和敏感数据保护使用检查表,协助代码审查记录
测试验证功能、权限、日志、脱敏和恢复执行用例并登记缺陷
上线审批、配置核验、回退准备和验证核对版本、参数、账号和文档
运行监控、补丁、备份、权限复核巡检、告警记录和变更跟踪
退役迁移、归档、删除和介质处置维护退役清单和销毁记录

2.2 安全需求如何写

一条可执行的安全需求应明确对象、主体、条件、动作、结果和记录。模糊表述无法直接测试。

模糊表述可执行需求
保护客户数据普通客服查询客户资料时,手机号仅显示前三位和后四位;完整号码查看需要审批并记录日志。
接口要安全所有接口使用加密传输;调用方使用可轮换令牌鉴权;连续失败达到阈值后触发告警。
做好日志登录、查询、导出、修改、删除和授权记录账号、时间、对象、来源和结果。
备份要可靠用户数据库每日备份,备份加密保存;每季度恢复抽测并记录结果。

2.3 安全需求清单示例

编号对象需求验证方式
SR-01管理后台管理账号启用多因素认证登录时确认需要第二认证因素
SR-02客户手机号普通客服仅查看脱敏值使用客服角色查询页面和接口
SR-03数据导出全量导出需要审批并记录日志普通账号尝试导出,审批后复测
SR-04API无效令牌调用时拒绝访问使用无效、过期和缺失令牌调用
SR-05备份备份可在规定时间内恢复恢复测试并核对完整性

2.4 六项安全设计原则

原则含义例子
最小权限只授予所需的数据、功能和时间客服不能删除数据库表
默认安全未明确授权时默认拒绝新角色初始无导出权限
职责分离审批、操作和审计由不同角色承担管理员不能审批自己的高权限
纵深防御多个层次共同保护网络限制 + 认证 + 字段权限 + 审计
安全可用控制与业务流程协调高风险操作增加审批
可审计关键活动有完整日志记录账号、时间、对象、来源和结果

2.5 输入校验与输出处理

  • 限制字段长度、数据类型、允许字符和必填条件。
  • 使用参数化查询等安全方式访问数据库。
  • 限制上传文件类型、大小和存储位置。
  • 错误信息不直接显示数据库结构、文件路径、密钥或调用堆栈。
  • 接口返回字段按业务需要设置白名单。
  • 日志中避免记录明文口令、完整令牌和完整敏感字段。

2.6 开发环境管理

环境用途数据要求主要控制
开发编码与单元验证模拟或脱敏数据仓库权限、依赖管理、密钥隔离
测试集成和功能测试脱敏数据、最小数据集测试账号、日志隔离、任务后清理
预生产上线前验证受控或仿真数据审批、配置比对、回退验证
生产真实业务运行真实业务数据严格权限、审计、备份、监控和变更
敏感配置:生产密钥、证书私钥、数据库口令和访问令牌不应存放在公共代码仓库、个人聊天工具或普通文档中。

2.7 代码与依赖组件管理

  • 使用组织批准的代码仓库和实名账号。
  • 提交前检查口令、密钥、令牌和真实数据。
  • 记录第三方组件名称、版本、来源和许可证。
  • 按评估、测试、审批和回退流程升级组件。
  • 代码审查关注权限判断、敏感信息、错误处理和日志。
  • 构建发布使用受控账号,限制修改发布包的人员。

本节自测

1. 什么样的安全需求具备可测试性?

2. 默认安全原则在新建角色时如何体现?

3. 为什么测试环境应限制使用真实生产数据?