安全团队如何更好地支持软件工程团队协作

本文从CISO视角探讨安全团队如何理解工程团队动机、平衡安全目标与业务需求,通过施加建设性压力将安全实践融入开发生命周期,并建立可持续的风险管理机制。文章包含具体协作策略与漏洞优先级管理方法。

安全团队如何更好地支持软件工程团队

作为科技公司的CISO,我的职责包括赋能软件工程团队以维护产品的安全态势。尽管各方都认同安全的重要性,但安全团队与工程团队的不同目标往往导致协作困难。基于我作为安全负责人(现任职Axonius)和产品经理(现任职务前)的经验,分享以下将安全融入软件开发周期的建议。

理解团队动机

要与软件团队有效协作,首先需要理解他们的世界观:什么因素驱动他们?公司为本季度、年度及长期目标设定了哪些激励措施?他们认为哪些因素关乎职业成功?安全团队需要将工作目标与这些驱动力对齐。

产品团队主要受业务目标驱动,例如交付需求功能、获取客户和实现营收。在这些动机下,安全问题容易被降级处理,特别是在临近发布截止期时。这与安全团队的关注点形成对比——后者聚焦于降低风险、确保合规、事件响应和赢得客户信任。

理解工程团队的动机能帮助安全专业人员保持理性,例如当他们困惑为何安全关切未获即时响应时。这也有助于在适当时机以恰当方式提供安全指导。

平衡彼此职责

由于角色和目标差异,工程团队与安全团队常从不同视角看待同一目标。这种差异具有积极意义,能让双方形成制衡。

例如在支持公司用户增长时,工程和产品管理团队可能思考"开发哪些新功能能吸引更多用户?",而安全团队则会关注"新功能将如何扩大攻击面?"。

虽然所有团队的工作最终都服务于公司业务目标,但我们承担不同职能。应当相互平衡,避免过度安全(可能拖累业务)或工程冒进(可能带来不可接受的风险)。

施加支持性压力

安全团队对安全编码原则和风险缓释的关注,应与产品工程团队的软件目标和营收目标保持平衡。安全团队可通过向其他团队施加压力来帮助公司平衡这些目标,具体包括:

  • 指出超出风险容忍阈值的实践
  • 提供专业指导
  • 督促团队履行安全责任

要建设性地施加压力,安全专业人员需要深入理解产品经理和软件工程师的工作语境。这意味着不仅要掌握专业术语,还要研读相关路线图计划和迭代详情,并参与优先级排序和架构决策的讨论。

安全团队常需识别并报告自研代码或第三方依赖的漏洞。在此过程中提供支持意味着:尽可能在开发早期(如代码提交和构建阶段)发现问题——越早发现,工程师修复的成本和干扰就越低。

施加安全压力通常涉及:

  1. 对漏洞进行优先级排序
  2. 推动工程团队及时修复 关键是要避免用无关紧要或不准确的发现淹没开发人员。优先级评估时,我们不仅要考虑漏洞严重性(如自动化扫描结果),还需综合评估可利用性和业务关键性等因素。应通过上下文分析和更细致的风险评估,确定哪些安全缺陷应优先修复。

必须认识到产品代码库总会存在某些漏洞并携带一定风险。在决定可接受的残余风险水平时要保持务实,与开发人员共同制定SLA:既允许按时交付,又能在发布后合理时间内修复最高风险问题。通过多个发布周期逐步提升安全性,往往比追求每个版本都完美无缺更可持续。

持续学习软件安全实践

想了解更多关于产品安全的思考,可观看我与Nir Valtman和Simon A. Wenet录制的Seeding AppSec播客节目。本文内容汲取了我们讨论的精华。

最后更新于2023年10月5日

关于作者
作为Axonius的CISO,我主导安全项目以赢得客户信任。同时担任SANS Institute的Faculty Fellow,为事件响应人员开发和提供培训课程。25年的网络安全从业经历使我能够创建推动业务增长的实际解决方案。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计