2.5 DevSecOps框架与模型的建立
DevSecOps的推动与实施是一个系统化的工程项目。正如前文所述,其内容包含了文化、流程、组织结构、技术等多方面的协作。DevSecOps的最终目标是引入一套框架,解决持续快速交付和信息安全之间的矛盾。这也预示着DevSecOps的实施除了要有完善的实施方案,还需要一套完整且体系化的框架与模型给予基础支撑。框架本身可以是一种工具,可以帮助人们解决如何去运作一个项目,还可以帮助人们评估一个方法或一个团队在当前阶段的有效性,并分析下一步需要获得哪些能力以促使DevSecOps的能力更加成熟。
我们可以从三个维度来考虑DevSecOps框架的建立,一是DevSecOps的运营模型,二是DevSecOps的实现模型,三是DevSecOps的成熟度模型。一个框架,三个模型,三个角色,三个阶段,可视为实施DevSecOps的最佳实践之一。
2.5.1 DevSecOps的运营模型
顾名思义,运营模型(图2-11)就是我们对DevSecOps运营过程的计划、组织、实施和控制。可以将DevSecOps当中所涉及的参与方归类为三大类角色,即开发团队、信息安全团队和DevSecOps负责人。
图2-11 DevSecOps的运营模型
1. 开发团队
开发团队(Development Team)的职责包括:
1)将DevSecOps工具集成到CI/CD流水线中,自动生成交付与安全漏洞扫描报表。
2)接受DevSecOps培训,从而掌握足够的信息安全知识去修补扫描出来的信息安全漏洞。
3)与DevDecOps负责人合作建立DevSecOps文化和意识。
4)实现产品的持续快速交付。
2. 信息安全团队
信息安全团队(Cyber Security Team)的职责包括:
1)向开发团队提供DevSecOps工具支持。
2)向开发团队提供DevSecOps培训的支持。
3)向开发团队提供信息安全咨询。
4)根据DevSecOps成熟度模型的评估对产品安全质量把关。
3. DevSecOps负责人
DevSecOps负责人(DevSecOps Champion)的职责包括:
1)搭建DevSecOps工具平台以帮助团队实现自动化。
2)负责推广DevSecOps文化和帮助开发团队建立DevSecOps意识。
3)连接开发团队和信息安全团队。
4)将从开发团队收集到的问题反馈给信息安全团队,并将信息安全团队提供的方案传递给开发团队,形成一条健康的回路。
5)解决基础的信息安全问题。
三类角色在工作当中需要互相协作,通过不断地磨合来发现与解决问题,以实现产品持续快速又安全的交付。开发团队是实施DevSecOps的责任主体,负责技术的实现与产品的快速安全持续交付。信息安全团队是DevSecOps的催化剂,负责提供工具与配套的培训及解决方案,实现对产品安全质量的控制。DevSecOps负责人是桥梁,负责连接开发团队和信息安全团队,并且作为开发团队的“安全专家”,具备基础的安全问题解决能力。
值得一提的是,DevSecOps负责人在整个运营模型中处于关键的位置,其发挥的作用不言而喻。往往该角色由开发团队当中某位成员担任,也可由数个开发团队组成的业务线中的某位成员担任。该成员不一定需要是团队中技术水平最好的,但他需要深刻理解DevSecOps方法论的奥义,了解文化背景及其所面临的挑战,熟悉流程且需要一定的基础信息安全知识。根据以往的案例经验,信息安全团队可以对被选定的DevSecOps负责人开展集中式的专项培训,以帮助其提高对安全工具的熟悉与信息安全基础知识的积累。
2.5.2 DevSecOps的实现模型
将整个DevSecOps的方案实施比喻为建造一幢摩天大楼,运营模型的建立为DevSecOps接下来的实施工作起到了基础支撑的作用,那么对DevSecOps的整个实施方案的过程进行拆分,分步实现DevSecOps中所涉及的各要素的实现模型,则是在此基础上逐步修建DevSecOps这个摩天大楼主体的过程。我们可以采取三步走的方法来制定这一实现模型。
1. 第一阶段:引入DevOps与应用安全工具
1)搭建DevOps工具平台,实现自动化和对整个流程的有效管理。
2)将各类DevSecOps工具集成到CI/CD流水线中,实现自动化交付与安全漏洞扫描。
3)建立DevSecOps度量体系,生成并公开交付状态与信息安全漏洞报表。
4)团队中DevSecOps负责人角色设立。
2. 第二阶段:DevOps与信息安全知识、能力的培训
1)DevOps工具和应用安全工具的教学。
2)给开发团队进行敏捷培训。
3)在线信息安全培训。
4)团队DevSecOps负责人专项能力的提升。
3. 第三阶段:DevSecOps意识文化和流程的建立
1)建立DevSecOps意识和文化。
2)实现基于DevSecOps框架的持续快速又安全的交付流程。
3)实现开发团队、DevSecOps负责人与信息安全团队的协作。
4)将DevSecOps负责人培养成“安全专家”。
第一阶段重点在于实现DevSecOps技术手段,将各类工具嵌入到CI/CD流水线,并实现初步的快速安全交付可视化。第二阶段重点在于人员的能力提升,包括开发人员、DevSecOps负责人及任何与DevSecOps实施相关的人员,帮助他们熟练掌握各类工具,让他们具备初步的信息安全问题解决能力。第三阶段重点在于培养团队的DevSecOps文化和意识,打造开发团队内部的DevSecOps专家,通过流程的不断优化以实现产品持续快速又安全的交付。
2.5.3 DevSecOps的成熟度模型
如何评估一个DevSecOps团队是否实现了预期的目标,如何帮助成熟度水平不高的DevSecOps团队提高他们的成熟度,又如何确保一个DevSecOps团队快速交付的产品是安全可靠的呢?相信它们是大家心里共同的疑问,其实,这也是DevSecOps成熟度模型建立所要解决的三个核心问题。
说到成熟度,合理的分级是模型的关键,是建立成熟度模型的第一步。建议从以下几个维度来对成熟度的分级进行综合考量:
1)DevOps工具链平台的建设。
2)DevSecOps工具的集成与使用情况。
3)团队组织架构情况。
4)团队工作方式(敏捷或者瀑布)。
5)团队成员的知识储备与问题解决能力。
6)开发团队、DevSecOps负责人与信息安全团队的协作能力。
7)产品交付质量与安全水平。
结合以上维度的分析,设立等级卡点,梳理出合理的成熟度等级。第二步即根据不同的成熟度等级设立对应的产品交付流程。可以遵循成熟度越高的团队相对应的流程可以简化,以帮助DevSecOps团队实现快速安全的交付;成熟度越低的团队则所需要其他方面介入的流程会越多,包括质量审核、安全审查等。同时信息安全团队在不同成熟度的DevSecOps团队中所投入的工作比例也根据等级做出相应的调整。
但是,一次成熟度评估的通过并不意味着该DevSecOps团队在未来的交付工作中能够持续维持该水平。因此,结合不同成熟度的周期性的度量在确保产品的持续快速又安全的交付上能够起到关键作用。
本章不会针对表2-4所示内容进行详细展开说明,仅为读者在成熟度模型的建立上给予参考。更多关于成熟度模型的内容与案例,包括不同成熟度等级的团队所对应的交付流程,我们将在第8章中详细阐述,并结合度量平台的建立进行深入分析。
表2-4 DevSecOps成熟度模型参考