2.1 组织重构
组织架构通常依据责任领域来划分。企业在将确保基础设施的安全与否视为应用安全问题时,需要重新考虑如何构建更合适的组织架构。更具体地说,企业需要考虑是否要改变安全团队的责任范围。当前,安全实践更注重对开发者的授权,这使得对安全团队的要求也发生了变化。
为了评估云原生安全组织架构,企业可以参考最常见的团队结构:核心应用安全团队,安全工程团队,以及较新的产品安全团队、DevSecOps团队,以此作为搭建云原生安全组织的参考架构。
1.核心应用安全团队
首先,在原有的组织架构基础上,保持应用安全团队的职责范围不变,并不断地进行调整和更新。核心应用安全团队的任务是,确保应用程序代码、业务逻辑及正在使用的开源库的安全。同时,核心应用安全团队常用的工具涵盖了以下几种:静态应用安全测试(SAST)、动态应用安全测试(DAST)、交互式应用安全测试(IAST)。这三种自动化应用安全测试工具可以找出自定义代码中的漏洞,此外,软件组成分析(SCA)工具可以找出有漏洞的开源库。
核心应用安全团队应经常开展安全教育和培训,并进行有奖漏洞信息征集。有时,核心应用安全团队也可能使用RASP或WAF工具进行运行时应用保护。核心应用安全团队成员需要拥有安全编码能力,并具备运行审计和安全代码审查的经验,需要掌握良好的代码开发知识,以便更好地与开发人员进行配合。
一个核心应用安全团队的主要优势是具有行业经验。从组织的角度来看,大多数行业都会认为传统的应用安全团队与现代的核心应用安全团队类似,但实际上现代的核心应用安全团队的工作模式已经变得更加有利于开发。传统的应用安全团队通常会将团队中的某个人指定为多个开发团队的合作伙伴,以促进更好的协作。公司通过各种安全激励培训计划,帮助应用安全人员在开发团队中传授更多的安全专业知识。虽然核心应用安全团队的职责范围大多没有变化,但在团队内部传播、培训实践方法上是一种新的、有效的尝试。
2.安全工程团队
在现代开发环境中,安全流程的自动化是关键。快速的CI/CD开发没有为流程的人工审查留出时间,而是需要进行自动化安全测试。此外,开发人员不是安全专家,他们只有少量的时间用在安全流程上,因此需要有嵌入式的安全工具,辅助开发人员完成安全检测。构建和运行安全工具并非易事,特别是在大型组织中,不同开发团队的需求差别很大。为了提高自动化水平,一些组织建立了专门的安全工程团队,专注于建立内部工具和整合外部工具。
安全工程团队由软件工程师组成,他们对安全有一些了解,并且像一个完整的DevOps工程团队一样运作,他们通常要开发、部署和操作安全工具,并使用与其他工程团队相同的方法运行流程和管理产品。如果工作量不是很大,那么这部分工作通常交付给核心应用安全团队完成。然而,尽管大家都属于安全工程团队,但不同的安全工程师在职责上存在很大差异,比如有些人可能是软件工程师,有些人则是安全专员。
安全工程团队是真正提升自动化流程效率的高效团队,是与可靠性工程师(SRE)团队平行运行的团队。事实上,在相当多的情况下,工程团队的范围已经扩大并覆盖到构建和运行安全工具。这也是一个让软件工程师进入安全工程团队的好方法,不仅有助于安全工程团队解决人才短缺的问题,而且还能在团队中引起更多的开发上的共鸣。
3.产品安全团队
产品安全团队也是安全团队的一种模式。这个团队的职责范围更广,不仅包括编写应用程序代码,还包括所有与产品相关的安全内容。
容器和IaC技术是由相同的开发人员编写自定义代码并使用相同的方式和工具来实现安全状态的。为了支持这种变化,安全应用团队需要支持工程师这样做。这种团队的责任范围更广,他们通常将自己称为产品安全团队。
产品安全团队的职责扩大意味着其在软件开发生命周期内负责更多工作,包括深度参与生产、部署、运营,这会使产品安全团队的部分职责与更注重运营的云安全团队的职责重叠。在实践中,云原生开发意味着云安全同时受到开发和运营两个团队的影响,而产品安全团队则负责前者。需要注意的是,许多核心的应用安全团队职责范围正在扩大,选择使用一些解决方案来扫描容器镜像的漏洞并审计IaC文件,这日益成为应用安全团队的职责范围。
此外,产品安全团队正在参与到面向用户的产品安全功能的实现中来。随着用户对安全的认识不断提高,许多产品都希望建立专门的安全功能,并通过这些功能打造差异化产品。判断安全功能是否有价值,往往基于他们对安全的理解,产品安全团队的一个重要职责,就是与产品经理(PM)加强合作,这也在应用团队和安全团队之间的关系中发挥着重要作用。安全控制是降低风险的手段之一,降低风险意味着它可以帮助产品增加收入。增加收入是两个团队的共同目标,而且这个目标比降低风险更明确,更容易获得成功。
产品安全是一个新职务,目前还没有明确的定义。行业人士的一种普遍看法是:产品安全的目标是改善产品的安全状况,并在内部向开发团队说明客户的安全需求。在一些云原生组织中,产品安全是首席安全官(CSO)的主要职责范围,而在另外的一些组织中则将负责人员命名为首席产品安全官(CPSO)。
4.DevSecOps团队
DevSecOps旨在将安全嵌入程序核心的开发和运维工作中,DevSecOps团队与DevOps团队的责任差别很大。通常情况下,DevSecOps实际上是一个云安全团队,专注于应用程序运营及保证运行时的安全。有时,DevSecOps团队更像平台,其职责类似于安全工程团队。这些团队的共同点是,他们都是为了实现安全,不同点是,DevSecOps的目标是改变保障安全的方式。无论其职责如何,DevSecOps团队始终将自己视为变革的推动者,他们拥护自动化和云计算,支持工程安全解决方案比运行审计更重要,目的是让开发和运营团队能够自行确保他们的工作安全。
企业需要确保核心应用安全团队、安全工程团队、产品安全团队、DevSecOps团队之间建立紧密的合作关系。因为他们都需要了解应用程序是如何开发、测试、部署的,以及在流程中使用了哪些工具,以便他们能够利用有效的方式提高这些流程的安全性。