培训

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

1 级培训

[T1.1: 77] 开展意识培训。

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

[T1.5: 37] 提供针对具体职务的高级课程。

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

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

组织通过为担任不同职务的个人按需提供培训,降低学员负担。网上学习显然是首选,它能通过订阅模式随时提供最新知识。但是在线课程必须兼具趣味性与关联性,才能针对担任不同职务的学员达到预期效果。未善加利用的培训不会带来任何变化,新的 IoT 和云架构等热门话题以及游戏化等新的交付风格将比枯燥的政策讨论更能吸引人们的兴趣。对于开发人员而言,可以在需要时直接通过 IDE 同时提供培训,但有时导师讲解的培训可能更适合通过培养新技能(例如代码审查或威胁建模)按需来提供。

2 级培训

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

SSG 通过邀请嘉宾演讲或举行针对先进主题(例如,针对 DevOps 或 AWS 云开发的最新软件安全技术)的特别活动来巩固卫星团队的社交网络。为学员提供咖啡和小吃也无妨。这项工作的目的是提供卫星人员定制培训,使其能够履行其特定的职责,而不是邀请卫星人员召开午餐会或让他们报名参加标准的计算机培训。此外,自愿出席的常设会议也无法获得预期的结果,这种会议等同于建立同志关系,因为会议内容是分享知识和组织效率。面对面的会议即使一年只有一两次,而且有些与会者必须通过视频会议参加,也是迄今为止最有效的形式。

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

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

[T2.8: 28] 创建并利用针对公司历史的材料。

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

3 级培训

[T3.1: 3] 通过课程奖励进步。

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

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

供应商和外包人员接受与员工相同级别的软件安全培训。投入时间和精力帮助供应商在一开始就获得安全权利,比试图在后来(特别是在开发团队已经继续奔赴其他项目之后)确定他们出了什么纰漏容易得多。培训单个承包商要比培训所有外包公司更为自然,而且也是最合理的开始之处。每个在公司软件部门工作的人,不管就业状态如何,都务必要接受适当的培训。

[T3.3: 15] 主办软件安全活动。

组织通过举办以外部演讲者和外部内容为特色的安全活动来突出其安全文化,以此脱颖而出。微软的 BlueHat 和高通的移动安全峰会就是一个很好的范例,因为这两家公司都具有外部演讲者特色,专注于帮助开发人员创作更好的代码。员工受益于听取外部的观点,特别是那些与快速发展的技术领域相关的观点,而组织作为一个整体,则获得展示其安全资质的良机(参见 [SM3.2运行一项外部营销计划])。仅对小型的特定分组开放的事件不会引起整个组织的文化发生预想的变化。

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

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

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

SSG 在公告的劳动时间或正式安排的办公时间为所有人提供帮助。通过为希望解决安全问题的人们充当非正式的智库,SSG 充分利用人们的求教动力,并且强调奖励胜过胁迫的方法才是上策。办公时间可能每周在高级 SSG 成员的办公室中安排一个下午,但也可以安排移动办公时间,根据要求访问特定的产品或应用程序分组,可能会根据正在开发的关键功能及其安全影响排定访问的先后顺序。

[T3.6: 1] 通过确定新的卫星人员。

留意在培训课程、办公时间、夺旗演练、黑客马拉松和其他展示技能和热情的机会中脱颖而出的人员,借此招募未来的卫星人员(例如,拥护者),并鼓励他们加入卫星团队。卫星团队通常始于散布在组织中特定的一群人,他们表现出对于安全的兴趣高于平均水平,或对于新型技术栈和开发方法具有高级知识 (参见 [SM2.3 创建或培养卫星])。主动发现未来成员就向前迈进了一步,创建在软件开发和运营中加快采用安全计划的社交网络。一群热情而熟练的志愿者将比一群被选中的志愿者更容易领导。