DevSecOps 安全即代码基础指南
在过去十年里我们见证了越来越多的企业开始或已经采用云技术,这也意味着云安全的重要性也越来越高。当谈及安全威胁,McKinsey 的一篇文章表明,云上大多数漏洞都是由于配置错误导致而非外部攻击造成底层云基础设施损坏。因此,从开发初期就拥有正确安全配置比构建一个安全独立的系统更靠谱、更有效。而实现这的最好方式就是安全即代码(Security as Code)。
什么是安全即代码 (SaC)
安全即代码(SaC)就是在软件开发的早期阶段将安全融入 DevOps 工具中,使其成为工作流程的重要组成部分。这能够帮助开发人员更早识别代码中易受攻击的部分,并引入相应的安全措施来规避相应安全风险。由于安全即代码在开发工作开始时已经在流程中发挥作用,因此企业无需将开发和安全分离,这也有助于企业提高开发效率。因为将安全融入到开发过程中,从而产生了 DevSecOps。
SaC 与持续交付
持续交付(Continuous Delivery)是在短时间内将所有对软件所做的更改交付给用户的能力。因此,将安全嵌入此过程是非常必要的。实施 SaC 有很多好处,主要体现在以下三个方面:
高效: SaC 通过消除人工干预造成的问题改进了软件开发过程,它进一步加快了流程,由于安全已嵌入开发过程中,实现了无缝的安全工作流程。
降低风险: 由于软件开发是一个广泛的过程,因此安全控制是整个软件开发生命周期 (SLDC) 要考虑的一个十分重要且相当困难的问题。这就是为什么通过 SaC 将安全嵌入开发阶段可以降低泄露风险的原因。
业务支持: 云架构是大多数企业及其运营的核心。良好的云安全是加速软件和部署过程的核心。这就是 SaC 的用武之地,它可以帮助企业在不影响安全性的情况下有效地将其应用程序推向市场。
为什么 SaC 对 DevSecOps 很重要
SaC 的目的是为了让安全人员和开发人员达成同频共识。开发人员能够在开发过程中展示开发结果,同时也允许他们在开发过程中纠正问题,这种交流有助于形成一个持续的反馈循环。
通过 SaC,开发人员可以在安全和低影响故障的环境中测试所有新的代码,还可以将自动化安全扫描和测试集成在开发过程中,以便后期在所有项目中重复使用。通过将安全扫描集成到开发人员现有的工具和流程中,把安全注入开发过程,能够有效降低部署时间且保证开发过程不会中断。此外,SaC 还能够帮助开发人员识别漏洞。需要注意的是,开发人员需要接受相应的安全培训和教育才能够在发现漏洞后进行相应的修复工作。
SaC 的 7 个要素
DevOps 的目标是在不影响安全性的情况下尽快完成应用程序开发并交付,而通过 DevSecOps 将安全嵌入流程中能帮助实现安全开发高效交付。让我们看看在实施 SaC 时要注意的 7 个要素。
1. 定义安全要求
在开发开始时有预定义的安全要求(predefined security requirements)十分重要。比如 OWASP (Open Web Application Security Project)主动控制这样的安全模型应该在开发阶段实施,开发人员就能在开发过程中有规范的安全实践进行参照。
2. 检查代码依赖
在开发和构建应用程序时,代码之间必然会有错综复杂的依赖关系。依赖关系图(dependency graph)能够帮助开发人员深入了解代码库的每个部分,以及不同组件如何协同工作,帮助开发人员更好地识别和修复相应问题。
3. 为代码选择正确的安全工具
将安全工具集成到 SLDC 时需要考虑两个问题:安全工具集成到开发流水线的难易程度是怎样的? 这些工具如何能最好地帮助开发和安全团队无缝协作?安全工具的集成和功能必须是自动化的,这样开发人员就不需要花费额外的时间来启动扫描并验证其发现。安全工具还必须提供速度和准确性,确保不会出现误报。最后,安全工具应该能够实时识别、修复和防御漏洞,同时也能够解决开源中的风险。
4. 建立 DevSecOps 文化
由于开发和安全都是业务驱动,因此双方必须在建立和维护 DevSecOps 文化的同时承担共同的责任。建立良好的 DevSecOps 文化最重要的部分是相互尊重。安全和开发必须尊重彼此的工作,并齐心协力无缝工作。安全工具必须也是开发工具,并应根据必要的目的和要求进行集成。
5. 自动化安全测试
在开发期间的任何安全测试需要自动化,以匹配快节奏的 DevOps 环境。由于开发过程中不断有新的代码注入,安全控制十分必要,因此使用自动化安全测试工具在整个 SDLC 中不可或缺。这样有助于提供自动安全分析,帮助开发人员优先考虑首先修复哪些代码问题。
6. 进行威胁建模
威胁建模是一个可以识别安全要求和威胁的过程。它有助于衡量应对威胁所需的安全工作,并确定相应补救措施的优先级顺序。威胁建模通过识别应用程序设计中的缺陷来加强组织的安全架构,它有助于评估新的攻击形式。因此,在开发过程开始之前进行威胁建模是关键的。
7. 定期检查代码安全实践
企业的安全框架不仅有助于安全策略的实施,还有助于制定定期评估会议,以测试所实施策略是否有效。定期审查 SaC 实践,来了解其是否运作良好以及是否需要进行更改。
版权声明: 本文为 InfoQ 作者【SEAL软件供应链安全】的原创文章。
原文链接:【http://xie.infoq.cn/article/bd3e84d41e6ea636879009a7a】。文章转载请联系作者。
评论