SDL

Posted by shentanli on September 23, 2020 ·

作为开发团队的一员,虽然默认会按照SDL的流程来开发,但是没有明确基本的术语,这里来补充下。

安全开发生命周期SDL全称security development lifecycle,为了低成本的开发软件并满足合规要求。这一软件开发过程集成到开发的每个阶段:需求分析、设计、编码、测试和维护。

核心原则:攻击面最小化,基本隐私,权限最小化,默认安全,纵深防御,威胁建模

其中基本隐私确保开发者设计软件时履行法律规定与义务。

威胁建模方法之一的STRIDE按照绘制数据流图、识别威胁、提出缓解措施和安全验证的步骤将安全考虑集成到软件开发中。该建模方法明确不同的威胁:仿冒Spoofing,篡改Tampering,抵赖Repudiation,信息泄露Information disclosure,拒绝服务Denial of service和权限提升Elevation of privilege。在绘制数据流图时也可对照识别、明确不同元素的威胁,针对不同的威胁,给出标准缓解措施,同类应用可直接应用:仿冒——kerberos认证与数字签名,篡改——完整性校验,抵赖——强认证与审计,信息泄漏——加密与访问控制,拒绝服务——访问控制列表与过滤,权限提升——输入校验、用户组管理和访问控制列表。

SDL属于安全运营的一部分,安全运营贯穿产品研发、业务运行和漏洞修复等环节。SDL从源头降低安全风险。

实战经验准则:

  • 与项目经理充分沟通;
  • 规范公司的立项流程,确保所有项目通知到安全团队;
  • 树立安全部门权威;(安全这一点还是需要坚定的支持)
  • 将技术方案写入开发、测试手册中;
  • 给工程师培训安全方案;
  • 记录所有安全bug,激励编写安全代码。