综上所述,产品经理要履行相关安全职责,必要的能力和素质是具有较高安全意识,能够理解相关安全基础概念,没有过高的能力门槛,通过一定的安全培训,产品经理完全可以达到相应的能力要求。
八、产品安全研发方法针对目前敏捷开发与DevOps开发普遍落地的情况,安全开发不应固守与瀑布开发相结合的陈旧经验。因为瀑布开发周期长、资源充分,在繁杂的计划活动中安排一些零星的安全活动不会产生明显的延期压力和资源压力。而敏捷开发和DevOps开发要求快速响应用户需求的同时,兼顾开发质量与效率,如果在迭代计划中设置过重的安全开发活动,迭代开发容易失去敏捷特性。
为了将安全开发理念在敏捷与DevOps开发中得到贯彻,建议采用如下原则:
安全开发活动轻量化。轻量化可以通过工具化、自动化来实现,尽量减少人工耗费大和耗时长的安全开发活动;
安全开发活动分散化。将那些短期无法轻量化处理的安全开发活动分解并分散到多个迭代周期中执行;
安全开发活动并行化。将安全开发相关活动与其他活动并行,如渗透测试通常安排在测试的最后一个环节,避免单轮次渗透测试无法覆盖那些并行的修复点,当然渗透测试也可以由多个轮次来弥补这种情况,但通常资源不允许。实际上这种同步修复导致渗透测试覆盖率下降的问题,完全可以通过良好的沟通和团队文化建设进行弥补。
优化现有敏捷开发与DevOps相关的流程与工具平台,使得安全专家能够充分参与项目,提升安全开发沟通效率,快速获取安全反馈;
将安全专家纳入到敏捷开发和DevOps文化建设中来,信息安全人人有责,安全专家可以充分发挥教练员角色和守门员角色,使得团队人人有能力履行自己的安全职责,安全专家在恰当的时机对安全交付物进行质量把控;
提前进行安全基础设施规划与布局,如身份与权限管理系统、SSO系统、加解密平台与SDK、日志分析与监控平台、全流量检测平台等等,使得安全措施标准化、服务化和平台化,降低安全设计与编码的能力门槛,对安全基础设施的测试与验证取代设施所承载应用的大部分安全测试,可以有效消减安全测试工作量。
对于一些安全开发活动的计划安排示例如下:
ID 安全活动名称 迭代执行要求 触发场景与基线示例1 创建产品安全需求名单 一次性执行 产品原型发布之前
2 维护产品安全需求白名单 每迭代执行
3 评审产品安全需求白名单 多迭代执行 重大需求变更或累积变更开发量达到n人天
4 创建产品数据流图 一次性执行 产品原型发布之前
5 建立威胁初始模型 一次性执行 产品原型发布之前
6 维护威胁模型 每迭代执行 重大需求变更或累积变更开发量达到n人天
7 评审威胁模型 多迭代执行 重大需求变更或累积变更开发量达到n人天
8 安全设计评审 多迭代执行 重大需求变更或累积变更开发量达到n人天
9 代码扫描及其报告分析(开发) 每天/迭代执行
10 代码扫描及其报告分析(安全部) 多迭代执行 重大需求变更或累积变更开发量达到n人天
11 深度黑盒安全扫描 每天/迭代执行
... ... ...
上表中“多迭代执行”指的是按照一定要求,间隔多个迭代后执行一次。关于多迭代执行的安全活动需要制订一个执行基线,该基线无标准可参考,需要根据各产品线实际情况逐渐摸索调整。
安全活动的触发场景与基线不是固定的,随着团队安全能力与自动化、工具化程度的提高,多迭代执行的安全活动可能转变为每迭代执行;不是所有识别出来的安全活动都必须执行,一切以控制主要安全风险、不拖迭代项目后腿为基准。通常安全团队会与所有产品经理和项目管理进行多次沟通,提出一个多方基本认可的安全活动触发场景与基线表,供产品经理参考。
九、产品经理获取安全资源支持