Skip to content

Latest commit

 

History

History
81 lines (68 loc) · 4.13 KB

sdl.md

File metadata and controls

81 lines (68 loc) · 4.13 KB

定义

安全开发生命周期(Security Development Lifecycle,SDL)

定义: SDL是专注于软件开发安全保障的流程.

作用

  • 应用安全 - 帮助开发人员构建更安全的软件 将设计、代码等的漏洞减到最少.
  • 项目安全 - 引入解决方案 避免项目风险.
  • 用户安全 - 保障用户的安全与隐私.
  • 降低成本 - 尽早发现并解决漏洞 降低开发成本.

安全风险暴露模型

项目研发生命周期中的风险暴露模型

  • 需求阶段 - 缺少必要的安全需求介入 导致缺少必要的安全设计
  • 设计阶段 - 缺乏安全考虑 导致系统架构上的后期难修复的安全缺陷
  • 研发阶段 - 研发人员缺少安全意识 导致代码存在安全漏洞
  • 测试阶段 - 缺少安全测试覆盖 导致无法提前发现安全漏洞
  • 部署上线 - 攻击者通过各种手段发现并利用攻击面 进行入侵

SDL全程 - 介入研发流程

  • 安全培训
  • 安全需求
  • 安全设计
  • 研发安全
  • 安全测试
  • 渗透测试(线上环境)
  • 应急响应

SDL实践

  • 1.安全培训
    • 安全意识培训 - 提升项目人员的信息安全意识. 安全是每个人的工作. 开发人员、产品经理等 必须了解安全基础知识.
    • 安全技术培训 - (线上视频 题库+在线答题平台) 给研发同学推行安全编码规范. 给运维同学推行配置安全规范.
    • 安全制度宣贯 - 安全管理
    • 资料下发 - 提供安全资料以供研发同学 运维同学 等项目人员学习、自查
  • 2.安全需求 与 安全设计
    • 作用 : 定义安全需求的最佳时间是在"初始设计和规划"阶段. 从设计上规避系统安全缺陷. 不断更新安全需求, 以应对 功能的变化 和 威胁态势的变化.
    • 管理 : 落实到研发责任人 保证系统设计遵守安全设计规范checklist
    • 影响安全需求的因素包括(但不限于)
      • 法律要求
      • 行业要求
      • 企业内部标准
    • 安全设计
      • 设置最低的安全标准. 必须定义安全质量的最低可接受水平, 并使工程团队对达到该标准负责. (有助于团队了解与安全问题相关的风险, 在开发过程中识别和修复安全缺陷, 并在整个项目中应用标准.)
      • 提供"安全特性"(secure features)给工程团队
        • authentication - 身份认证设计解决方案 (统一SSO接入系统 验证码的形式与强度)
        • cryptography - 加解密 (定义和使用密码学标准. 根据场景选择不同强度的算法.)
        • logging - 日志
        • 权限安全设计解决方案 (鉴权设计参考 避免垂直越权、水平越权)
        • 关键操作安全设计方案 (支付、密码重置等)
        • ...
    • 安全评估 (硬编码 弱口令 配置文件参数...)
    • 隐私风险评估
    • 进行"威胁建模"(Threat Modeling) 分析攻击面 已知威胁. 威胁建模可以应用于 组件/应用程序/系统 级别. 更快地确定漏洞与威胁的风险.
    • "第三方组件"的安全风险
  • 3.研发安全
    • 使用经过验证的开发环境(代码仓库...)
    • 通过IDE插件实现实时代码检查并提醒(不安全函数、语言特性及框架可能引发的安全缺陷等)
    • 静态分析 (Static Analysis Security Testing,SAST) - 基于语义分析等.
    • 动态分析 (Dynamic Analysis Security Testing,DAST) - 把扫描集成到CI/CD流水线. (the continuous integration / continuous delivery pipeline)
  • 4.安全测试
    • 作用: 应用上线前的安全测试,提高应用安全的测试覆盖率.
    • 方法: 黑盒渗透测试 + 白盒代码审计
  • 5.线上安全评估
    • 作用 : 完全模拟攻击者,通过任何可能的攻击路径进行安全自测,并提供修复/防御方案.
    • 基础环境的安全评估CheckList
    • 应用层的安全评估CheckList
    • 信息管理层面的安全评估CheckList
    • 安全产品部署(WAF IDS...)
  • 6.应急响应
    • 确定业务资产,创建并执行应急响应计划(SRC),收集漏洞与情报.
    • 作用: 第一时间感知漏洞,对受影响的资产进行处置与防御. 尽量减小对业务造成的影响.

参考

https://www.microsoft.com/en-us/securityengineering/sdl/practices