经过了凤凰网以及完美世界开发工作的锻炼,对于安全开发工作有了一些很好的认识,下面总结一下过去的经验和教训。
对于安全开发一定要有一套成熟度模型,例如公司刚开始做的时候定义的级别可以低一些,可做的事情要少一些。但是随着熟练程度的增加以及大家对于安全开发的理解的加深,逐步加深高级别的安全成熟度模型。
下面就简单介绍一下我心中的成熟度模型的相关控制,未分级大家可以依靠公司自己的特性来进行补充。
1. 管理安全控制
1.1 建立安全职责,目标就是组织中都明确自己的职责和责任
工作内容:
a) 组织安全机构组织架构图例如信息安全委员会等等,这里一定要注意安全机构一定级别足够的高,例如属于董事会或者CEO下面
b) 文档化安全角色,职责,责任以及授予什么样的权限
1.2 管理安全配置
工作内容:
a)系统中所有软件的更新记录,保证出现问题可以很快的追踪到相对应的版本以及回退
b)系统中所有问题的bug记录以及安全问题记录这样可以很好的知道现有系统所存在的风险
1.3 安全意识、培训
工作内容:
a) 安全意识、培训的内容的有效性
b)跟踪用户对于培训和意识课程的理解
c)培训以及安全意识课程的资料收集,一定要来源与内部,当然也可以来源于外面的安全事件
1.4 管理安全列表
工作内容:
a) 收集维护以及各个系统的日志
b) 敏感资产的详细清单
c) 安全控制失效的原因以及解决方案
1.5 风险评估
工作内容:
a) 识别安全运维过程中的风险
b) 识别安全开发过程中的风险
c) 定义组织内统一的安全度量标准
2.协调组织内的安全角色
2.1 定义协调的最终目标
工作内容:
a) 信息共享的途径,例如安全部门一定要建立漏洞管理数据库保证研发、运维部门第一时间得到这些信息,最重要的是要得到他们的相应,从这些响应中得到相对应的流程,进而推动了安全部门的地位,最重要的是保证了安全问题第一时间得到修补。
b) 各个部门定义安全员,这样做的目的可以让他们在内部帮我们推动安全相关流程。
2.2 协调机制
工作内容:
a) 一定要定期或者非定期的进行安全沟通,这样做的目的是第一时间得到他们对安全的理解和认识,如果他们出现错误的认识我们要及时的进行更正,让他们可以按照我们的想法走
b)一定要注意跟外部安全专家以及安全公司的交流,这样做可以第一时间得到最新的安全漏洞以及安全解决方案
3. 组织内部建立安全监控
3.1 事件记录
工作内容:
a) 一定要记录到每个安全事件的详细内容,这样做可以形成组织内部的问题管理库。组织第一次发生事件的时候可能马慌脚乱,但是有了这样的过程发现同样问题的时候可以很好的得到第一时间解决
b) 安全事件的详细分析以及归纳,目的是分类安全事件形成相对应的响应团队。
3.2 级别安全突发事件
工作内容:
a) 一定要事先定义好突发事件的清单,这样做的目的是防患于未然。
b) 根据上面的清单来列出相对应的突发事件的响应手册
c) 突发事件的逐级报告,有的部门怕担责任隐瞒事件的危害,这样做的危害非常大,高层不了解安全危险,他就不能做好很好的决策。
3.3 定义检查安全防御措施
工作内容:
a) 定期检查WEB安全防御措施
b) 定期检查操作系统安全措施
c) 定期检查网络安全措施
d) 定期检查人员安全措施
3.4 突发事件响应内容
工作内容:
a) 系统优先恢复的列表,重要的系统得到DDOS或者其他重要攻击的时候先要恢复那些列表。
b) 应急响应计划,定义突发事件的响应计划,定期非定期进行演练。
4. 安全组提供相对应的安全建议
4.1 提供安全编码建议
工作内容:
a) 安全设计原则,安全编码规范以及威胁建模、威胁树分析
b) 定义安全体系架构以及查找对应的信任关系,着重注意信任关系,因为信任关系是最容易出现问题的地方
4.2 提供安全运维指南
工作内容:
a) 安全加固手册
b) 安全流程风险分析以及对应的解决方案
4.3 识别安全需求
工作内容:
a) 根据需求文档得到安全需求列表
b) 注意隐私保护以及法律法规的限制
c) 实现统一的安全防御措施,这里主要目的是针对一类问题进行统一的处理
5. 验证
5.1 验证安全编码漏洞
工作内容:
a) 利用owasp ASDR进行威胁分析,同时编写对应的安全测试手册
b) 利用上线前检查来测试相对应的风险
c)测试框架类安全例如Spring,Struts以及zendframework以及其他相关的MVC架构
5.2 验证系统安全漏洞
工作内容:
a) 利用相对应的框架来进行系统安全漏洞检查,例如OSSTMM,ISSAF等框架
5.3 验证网络漏洞
工作内容:
a) 利用相关的测试工具来进行验证网络漏洞
由于安全开发的工作非常多,所以我只是大概写了一些关键点,这些关键点展开的话工作量那是相当的大啊,所以保证一个软件或者WEB程序的安全运行绝非一朝一夕简简单单的。