软件驱动世界,软件开发的要求越来越高。为了按时交付软件,开发和运维工作必须紧密协作,DevOps应运而生。此外,随着安全的重要性日益凸显,DevSecOps
成为很多企业的安全策略。当然,并不会有一个开关,可以将 DevOps直接一键转换成为 DevSecOps。这需要自动化工具组合和长期实践。
软件开发模式正迅速迈向DevSecOps,这使得开发与运维团队得以相互协作,向着“快速交付高质量、高可信的软件”这一共同目标而奋进。新思科技认为,实施DevSecOps是一场文化、流程和技术上的变革,而将安全活动集成到软件开发生命周期(SDLC)中从而实现安全左移是其关键。
中国信息通信研究院发布的《中国DevOps现状调查报告(2022)》显示:36.49%的受访企业尚未开展DevSecOps实践;35.72%的受访企业尚未将安全测试“左移”到需求阶段。这表明DevOps向DevSecOps的演进已经取得了长足进步,但提升的空间仍然很大。
新思科技中国区软件应用安全技术总监付红勋指出:“安全左移涉及文化、流程及技术的优化,涉及一系列管理活动和工程活动的调整,是实现DevSecOps的要点与难点。而实现安全左移则需要把握9大要点,即:以SHIFT
LEFT的方式实现 Shift Left。”
1. Security Awareness
(强化安全意识)。意识是安全左移的土壤。不仅是对研发团队,更重要的是管理层需要充分认识到安全形势的严峻性与复杂性,认识到应用安全是重中之重。获取管理层的支持是安全计划得以落地的大前提。
2. Hierarchical
standards(分层设定标准)。既要尽量在缺陷引入的源头把关、又要不降低CI/CD流水线的速度,要在两者之前取得平衡,就需要沿流水线分层设定安全标准。
3.
Integration(无损融入流程)。安全活动融入研发流程有四个步骤:小范围试点,发现并解决融入后的问题,积累推广经验;流程Owner正式签发;推广与培训;监测流程运转中的问题、及时改进。
4. Feature &
requirement(规划安全需求)。应用安全是开发出来的、也是设计出来的,但首先是规划出来的。安全需求有两种形态:显性需求和隐性需求,后者往往不是客户可以直接感知的功能,但却可以直接提高系统的安全性。
5. Threat modeling in
design(威胁建模设计)。威胁建模即结构化地识别系统所面临的威胁、并制定相应的削减措施。威胁建模是规避设计类缺陷的不二法宝。
6. Learning security in
coding(编码中学习安全)。代码是应用安全的主体。常规培训可以强化安全意识,在编码中结合业务实际的学习则可以积累安全知识。
7. Enabler knowledge
base(构建使能KB)。知识库是安全左移后安全工程活动得以高质量开展的助推器。构建KB除了依靠安全设计、安全组件开发、安全测试技术研究等专项小组的智力外,还需要采购第三方产品作为重要的补充。
8. Full-range security
testing(全程安全测试)。测试是应用安全的保障。全程安全测试对应用安全的价值无可替代,所谓全程就是要做到四个维度的全覆盖:时间维度,需求规划到发布;技术维度,白盒、灰盒、黑盒测试;方法维度,自动、手工(如核心代码的人工安全审查、渗透测试);对象维度,自研代码、开源代码。
9. Tool chain(打磨安全工具链)。工具是应用安全的依托。AppSec测试工具融入DevOps,打磨成适合自身的DevSecOps工具链,这是支撑安全成功左移的关键。理想的DevSecOps工具链的应满足以下特点:无损、自动、智能、可视及开放。
新思科技中国区软件应用安全业务总监杨国梁总结道:“知易行难。DevSecOps不是微小的改变,是对公司文化的真正改变。这需要时间、培训、工具以及拥抱DevSecOps文化的意愿。将安全性集成到DevOps团队的日常工作中可能需要耗费更多时间,但这带来巨大的价值。开发、运维和安全团队将协同工作,以提高交付软件的质量和安全性,从而加快软件交付速度,最终提升客户满意度。”
|