研发安全:如何让研发的产品更加安全,最早是由微软提出,过程中涉及到了从需求到投产投产的各个阶段,每个阶段都有不同的安全活动。
安全开发框架可参考:
研发项目的一般过程:
研发安全的一般过程如此:
1、培训——安全培训:主要是提升研发人员或者全员的安全意识,各企业可以根据自己的情况进行分级、分层的培训,没必要为了培训,对着产品经理、项目经理讲漏洞原理及修复方案、讲加解密的数学知识和实现方式,可以更多的讲解漏洞造成的危害和加解密对于产品安全的保障。对此培训模式可以采用如下形式:
2、需求——安全需求:解读外界标准、规范从而形成自己的内部标准和规范,针对产品的功能需求针对性提出对应的安全要求,明确开发的每个产品、服务和功能都有明确定义的安全和隐私内容,是安全能指导后续的设计。开发团队可根据产品的数据类型、已知威胁、最佳做法、行业法规和要求来定义这些最终要求内容。同样可以采用威胁建模方法进行,该方式需产品的数据流向熟悉掌握,从而形成如下数据流图,落地实现可采用威胁建模工具来实现,绘制完数据流图之后工具会自动完成威胁建模分析,从而输出安全需求内容。
对上述数据流图进行分析建模,用户端是外部实体,面临的威胁类型有:仿冒(S)、抵赖(R),请求和响应为数据流,面临的威胁类型有:篡改(T)、信息泄露(I)、拒绝服务(D)威胁,处理过程有所有六种(STRIDE)威胁,存储过程有篡改(T)、信息泄露(I)、拒绝服务(D)威胁等,对于安全需求来说增加认证、日志审计等需求来做到防篡改、防止信息泄露、防止出现拒绝服务等。用如下表格来展示
元素 | S | T | R | I | D | E |
---|---|---|---|---|---|---|
外部实体 | ✓ | ✓ | ||||
数据流 | ✓ | ✓ | ✓ | |||
处理过程 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
存储过程 | ✓ | ✓ | ✓ | ✓ |
3、设计——安全设计:通过定义好安全需求之后,需要进一步通过技术语言完成产品不同组件的交互方式,同样通过威胁建模方式,对每个元素遇到的安全需求通过安全缓解措施来降低风险的出现,如对上述安全需求采用如下方式来实现安全防护:
威胁类型 | 安全需求 | 安全设计 |
---|---|---|
仿冒 | 认证 | 登入认证、SSO |
抵赖 | 日志审计 | 安全日志、审计 |
篡改 | 完整性保护 | 签名保护 |
信息泄露 | 保密性 | 加密技术 |
拒绝服务 | 可用性 | 热备、过滤 |
权限提升 | 授权认证 | ACL、用户管理、权限控制 |
4、实现——安全编码:通过代码方式来实现安全设计内容。期间可汇总通用安全设计形成安全开发组件供后续研发人员使用,过程中也可提供代码安全检测工具及系统实现对代码的安全检查。
5、验证——安全测试:通过需求的检查验证是否存在安全风险,安全验证是一种最重要的手段,可最大限度的发现产品中存在的风险和安全问题,过程中可能采用自动化或者手工方式进行,期间可产生自动化检测的模型,结合白盒代码方面产生如下内容:
6、发布——安全发布:经过必须的安全测试和评审后,进入到发布阶段,可采用灰度发布方式进行,保证系统的安全稳定运行
7、响应——安全响应:如上面图示所示,通过队内部流量监控或者外部上报方式,实现对安全事件的检测和分析
原文始发于微信公众号(YY的黑板报):研发安全思考与落地
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论