软件安全培训

培训一直在软件安全方面发挥重要作用,因为软件开发人员和架构人员起初通常极少了解安全知识。 

1 级培训

[T1.1: 80] 提供意识培训。

SSG 提供意识培训,促进组织培养软件安全文化。培训可能通过 SSG 成员、外部公司、内部培训组织或网上学习提供。无需针对特定受众定制课程内容。例如,所有编程人员、质量保证工程师和项目经理都可以参加同一门“软件安全入门”课程,但是可定制课程方法,明确介绍公司文化,从而改善这项活动。覆盖基础 IT 或高级软件安全概念的一般介绍性课程不会产生令人满意的结果。同样,忽视组织内的其他人员,而只针对开发人员提供意识培训是不够的。

[T1.5: 34] 提供针对具体职务的高级课程(工具、技术栈和缺陷展示)。

软件安全培训不止是要树立意识,还要让学员能够将安全实践结合到自身工作中。培训经过专门定制,涵盖与学员关系最为密切的工具、技术栈、开发方法或缺陷等信息。组织可能为工程师提供四条培训轨道,分别针对架构人员、Java 开发人员、移动开发人员和测试人员提供。针对工具的培训在课程中也很常见。不要忘了,培训对于组织中的许多不同职务都是有用的,包括 QA、产品管理、高管等等。

[T1.6: 26] 创建并利用针对公司历史的材料。

为了使行为发生有力而持久的变化,培训会包括针对公司历史的具体材料。学员在看到自己的问题时,会更有可能了解这些材料与自己工作有何关系,并知道何时以及如何应用他们所学到的知识。其中一种方法是在培训课程中使用公司遭受的值得注意的攻击作为实例。如果培训覆盖开发人员不使用的平台(Windows 开发人员不关心旧的 Unix 问题),或仅与不常用的语言相关的问题示例(Java 开发人员不需要了解 C 语言中的缓冲区溢出问题),则要多加注意。公司历史的情况只有在仍然具有相关性且没有遭到过分审查的情况下,才有助于把培训引导到正确的方向。

[T1.7: 47] 单独按需提供培训。

组织通过为担任不同职务的个人按需提供培训,减轻学员负担。网上学习显然是首选,它能通过订阅模式随时提供最新知识。但是在线课程必须兼具趣味性与关联性,才能达到预期效果。当然,内容陈旧乏味的培训对谁都没有好处,而且诸如移动和云之类的热门话题可能要比一味地讨论政策内容更能吸引兴趣。对于开发人员而言,可以在需要时直接通过 IDE 同时提供培训,但有时导师讲解的培训可能更适合通过培养新技能 (例如代码审查)来提供。

2 级培训

[T2.5: 21] 通过培训和活动增强卫星团队素质。

SSG 通过邀请嘉宾演讲或举行针对先进主题(例如,针对 AWS 云开发的最新软件安全技术)的特别活动来巩固卫星团队的社交网络。提供一些披萨和啤酒也没有坏处。自愿参加的例行电话会议无法完成这项活动,这样是为了建立友好关系,和分享知识或提高组织效率一样重要。面对面的会谈即便每年只举行一两次,也是不可替代的。

[T2.6: 23] 入职培训涵盖安全资源。

招募新员工到工程团队的流程要求新员工完成有关软件安全的培训模块。通用的新员工流程通常包括选择安全的密码并确保不会有人尾随您进入大楼,但可以加强入职培训,涵盖诸如安全编码、SSDL 和内部安全资源等主题。目的是确保新员工参与贡献安全文化。工程组织的离职率通常都很高,而且虽然通用入职模块很实用,但它不能取代及时的更完整的入门软件安全课程。  

3 级培训

[T3.1: 4] 通过课程奖励进步(认证或人事)。

知识本身就是一种奖励,但通过安全课程获得进步也能带来其他益处,例如职业提升。可以确立正式的奖励制度,在人力资源系统中形成一个认证或官方标志;也可纳入不太正式的激励机制,例如在年度审核时作出书面表扬。企业培训部门和/或人力资源部门的参与可以使安全对职业发展的影响更加明显,但 SSG 应该继续监控企业的安全知识,而不是放弃完全 控制或监督。

[T3.2: 8] 为供应商或外包人员提供培训。

投入时间和精力帮助供应商在一开始就获得安全权利,比试图在后来(特别是在敏捷团队已经继续奔赴其他项目之后)确定他们出了什么纰漏更容易。最好的情况是,外包人员获得与内部员工相同的培训。培训单个承包商要比培训所有外包公司更为自然,而且也是最合理的开始之处。当然,务必要对操作您的软件的所有人进行培训,无论他们处于什么就业状态。

[T3.3: 9] 主办外部软件安全活动。

组织通过举办以外部演讲者和外部内容为特色的安全活动来突出其安全文化,以此脱颖而出。微软的BlueHat和高通的移动安全峰会就是此类互动的典型范例。员工从听取外部观点获益,尤其是与日新月异的技术领域相关的视角。整个组织也会因其安全信誉得到展示而从中获益(参见 [SM3.2 运行外部营销项目])。只对某些小型团体开放的活动不会带来预期变化。 

[T3.4: 9] 要求完成年度进修。

参与 SSDL 的所有人每年都必须完成一门软件安全进修课程。员工通过这种进修可以了解最新安全知识,并确保组织不会因员工离职、方法不断改进或部署模式改变而失去焦点。SSG 可能会用半天的时间介绍安全局面的新进展,并讲解政策和标准的变化。进修还可以作为整个公司安全日的一部分推出,或与内部安全会议一同举行,但只有内容最新的进修课程才有用处。

[T3.5: 5] 确定 SSG 办公时间。

SSG 在公告的劳动时间或正式安排的办公时间内为所有求助者提供帮助。通过为希望解决安全问题的人们充当非正式的智库,SSG 充分利用人们的求教动力,并且强调奖励胜过胁迫。可于每周安排一个下午,在一位高级 SSG 成员的办公室设立办公时间。也可以采用巡回办公时间,按申请走访特定产品或应用程序团队。

[T3.6: 3] 通过培训确定卫星。

卫星团队始于散布在组织中的一群人,他们表现出对于安全的兴趣高于平均水平,或对于新型技术栈和开发方法具有高级知识。主动发现这个群体就向前迈进了一步,创建在软件开发中加快采用安全计划的社交网络。其中一种着手方法就是在入门培训课程中或办公时间发现表现突出的人员(参见 [SM2.3 创建并培养卫星])。通常,自愿组建的队伍会比选拔的团队更容易领导。