本文来源:about.gitlab.com
译者:极狐(GitLab) 市场部内容团队
❔ 灵魂拷问:
你的安全测试,能否跟上现代软件开发模式的步伐?
GitLab 预测到,2023 年企业会将更多的时间和资源投入到持续的安全左移上,是时候完成从 DevOps 到 DevSecOps 的演变了。
详情请戳👉:重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势
本文将继续讨论为何现代软件需要新的应用程序安全方法——DevSecOps。
在传统研发模式中,安全,往往在软件开发生命周期的后期才被介入。当代码不可避免地返回给开发人员修复时,就增加了成本和时间。
DevSecOps 将安全集成到完整软件开发生命周期中,是一种将研发、安全和运营/运维融合在一起的软件开发方法。
DevSecOps >> Dev+Sec+Ops
与传统流程相比,DevOps 将研发和运维融合在一起,以此来提高软件开发和交付的效率、质量及安全性,而更加灵活的软件研发周期,将为企业及其客户带来更多竞争优势。
DevOps 可以描述为在保证研发速度前提下,让多个角色良好协同,一起构思、构建和交付软件。DevOps 实践能够让研发 (Devs) 和运维 (Ops) 通过自动化、协作、快速反馈以及持续改善四个方面来加速软件交付。
尽管 DevSecOps 只是在 DevOps 中间嵌入 Sec 字样,但其产生的效果大于 Dev + Sec + Ops 的总和。
DevSecOps 是 DevOps 的演进,通过工具和方法来保护和监控实时应用程序的部署,将应用程序安全实践融入软件开发的每个阶段,包括新的攻击面,诸如容器和编排器,必须要与应用程序本身一起监控和保护起来。
DevSecOps 工具通过自动化安全流程,创建让研发和安全团队双双受益的流程,进而打破 “部门墙” 并改善协作。通过将安全嵌入到软件开发流程中,始终确保快速研发和迭代过程的安全,在不牺牲质量的情况下提高效率。
💡 什么是应用程序安全?
应用程序安全是使用软件、硬件和过程方法来保护应用程序免受外部威胁。现代方法包括安全左移,或在软件研发早期发现并修复安全漏洞,以及通过安全右移在生产环境中保护应用程序的基础设施即代码的安全。
保护软件开发生命周期本身是一项能力要求。这种将安全高效整合进研发和运维流程中的安全构建方式,让你从 DevOps 演进到 DevSecOps。而一个端到端 DevOps 平台可以很好地实现这个目标。
DevSecOps 基本要求,自动化+协作+策略保障+可见性
被奉为 DevOps 圣经的书籍——《凤凰项目》中描述了自动化、一致性、度量和协作的重要性。DevSecOps 方法同样也是应用这些技术来打造软件,同时在整个过程中嵌入安全功能,而不是在一个单独的、孤立的过程中开展安全保障措施。
尽管研发和安全团队都能够发现漏洞,但是通常需要研发人员去修复这些漏洞。让研发在编写代码的同时发现并修复漏洞,是非常有意义的。不仅仅是安全扫描,而是在正确的时间、正确的背景即上下文,将结果及时反馈给正确的人,以便快速采取行动。
DevSecOps 的基本要求包括自动化、协作以及策略保障和可见性。
自动化
GitLab 2022 年 DevSecOps 调研报告显示,大多数 DevOps 团队定期运行静态应用程序安全测试(SAST)、动态应用程序安全测试(DAST)或者一些其他的常规安全扫描,但仅有不到三分之一的开发者能够在他们的工作流中获得这些结果。很多团队在改进这一现状,大部分安全专家表示,他们的 DevOps 团队正在执行安全左移,47% 的团队实现了完全测试自动化。
协作
安全漏洞报告和修复策略的单一可信源,为安全和研发团队提供了急需的透明度。它可以简化周期、减少摩擦和不必要的工具转换。
策略保障
每个企业对于风险的认知都不同。安全策略将反映了什么对于企业来说是正确的,而企业必须要遵守的监管要求,也将对企业采取何种安全策略产生影响。与自动化携手并进,策略保障可以确保企业的安全和合规策略的有效性。
可见性
一个端到端的 DevSecOps 平台,可以让审计员有一个清晰的视角来审视软件研发生命周期从头到尾的变更情况,诸如变更时间、人员、范围以及变更原因等。利用单一可信源,还能够让企业更早地了解应用程序风险。
实践 DevSecOps 有何收益?
主动发现及修复漏洞
与安全滞后的传统研发不同,DevSecOps 在软件开发生命周期早期就嵌入安全。
在整个研发流程中,通过审核、扫描以及测试代码中的安全问题等方法,团队可以在引入外部依赖或代码被发布至客户之前,主动识别安全问题并立即修复它们,提升客户体验。
更快地发布更安全的软件
如果直到项目末期才发现安全漏洞,研发需要在最后一刻争先恐后地修复问题,很可能导致项目交付延期。
但是在 DevSecOps 模式下,研发人员可以在编码时发现和修复漏洞,促进研发人员编写安全的代码,并减少反复的安全审核次数。这不仅可以帮助组织更快地发布软件,还可以确保软件更安全和更具成本效益。
与现代软件研发模式保持同步
客户及业务团队都要求软件快速发布、安全可靠。为此,研发团队需要采取新的协作方式和安全措施,包括自动化安全测试、CI/CD 以及漏洞补丁等。
DevSecOps 就是通过改善研发、安全和运维团队之间的协作来提升组织效率,让团队腾出时间聚焦在更具业务价值的工作上。
DevSecOps 适合您的团队吗?
DevSecOps 的收益非常明显:速度、效率、协作。但您怎么知道 DevSecOps 是否适合您的团队?
如果您的团队正在经历以下任何一个挑战,那么 DevSecOps 或许是一个不错的选择:
1. 研发、安全及运维团队是仓筒式的,相互孤立。如果研发和运维与安全问题是隔离的,就不可能构建安全的软件;如果安全团队不参与研发过程,就无法正确识别安全风险。DevSecOps 将团队聚集在一起,共同改进流程和分享想法。通过这个改变,组织甚至能看到员工满意度和留存率的提升。
2. 较长的研发生命周期难以满足客户和业务团队的诉求。安全可能是拉长研发生命周期的主要原因。而 DevSecOps 在软件研发生命周期的每一个阶段都实现了安全,这意味着研发流程中不需要特意停下来进行安全测试就可以建立坚固的安全防护,加速了软件研发速度。
3. 正在上云(或者正在考虑)。迁移到云上通常意味着引入新的研发流程、工具及系统。是时候让流程更快、更安全了,而 DevSecOps 可以轻松地实现这一切。
如何创建 DevSecOps 文化?
DevSecOps 转型可以帮助组织实时应对安全威胁,但变革不是一蹴而就的。正确的思维意识与实现这一飞跃发展的工具集同样重要。希望以下 5 步法,可以帮助您和您的团队快速拥抱 DevSecOps:
1. 请记住,安全和安全专业人员是非常宝贵的资产而不是瓶颈或障碍。不要忽视这个事实:在研发流程中,越晚发现安全问题,其修复难度越大,成本越高。
2. 小步快跑。通过小量、频繁提交代码,将更快检测到安全漏洞。
3. 人人贡献。建立这样一个规范:每个人都可以对代码及流程添加评论和给出改善建议。鼓励团队中的所有人提交变更,开启良好协作,让每个人对于流程改进充满责任感。
4. 随时准备接受审计。确保团队的每个人都了解合规的重要性,并建立收集和更新合规信息的规范。
5. 对全员进行安全实践培训。通过提供详细的安全指南和实践培训,提升开发和运维团队的安全意识和知识。