自2009年被首次提出以来,DevOps尽管许多企业坚称自己已经迭代了很多次,但所涵盖的内容已经迭代了很多次。DevOps以中心为中心,但很少有人能真正准确地理解它的含义。前提是没有正确的实践,DevOps不可能谈论团队和企业的价值。
全面普及后,DevOps它可以加快部署速度,降低故障率,提高恢复能力。所有这些都将帮助团队甚至企业创造周期更短、适应性更强、质量更好的产品。但这也给了我们新的问题——如何整合安全考虑?
DevOps与DevSecOps有什么区别?
敏捷框架、一次构建/到处运行的开发方法、一切都是代码、自动化、沟通与合作DevOps五个核心组件DevSecOps重点是以符合安全要求的方式扩展DevOps核心组件。通过拆分,我们可以检查哪里适合插入安全元素,从而实现软件的安全。
(1) 敏捷框架——敏捷方法是软件开发的生命周期(SDLC)主要内容。与瀑布式开发方法相反,敏捷开发更注重短周期和小变化的结合,以确保企业能够对客户反馈做出快速反应。敏捷框架在加快开发周期方面确实表现良好,但往往受到操作和安全要求的限制。开发人员希望将操作和安全工作交给支持工具,并专注于提高开发人员的行动速度。
总之,敏捷框架在提高运行效率方面取得了良好的效果;但重点是开发本身,所有的操作和安全元素都成为事后考虑的元素。
(2) 一次建造,到处运行——容器技术让SDLC更上一层楼。容器作为一项真正的颠覆性技术,使开发人员能够独立于操作资源进行编码、构建、操作和测试。如今,由于开发人员不必专注于设置操作环境,他们可以更多地关注测试、安全和扩展。使用容器技术,一切都可以自由Dockerfile适应并实现到处运行。在提交最终镜像之前,开发人员不需要联系操作;但在整个过程中,操作仍然存在,并在不知不觉中为开发人员提供支持。
虽然这种开发和操作之间存在隔离,但容器本身仍然是一项重大成就,容器的有效性离不开编排工具的指导,如Kubernetes。Kubernetes使企业能够有效地管理、扩展、观察和接入容器。Dockerfile抽象的需求是可以管理和扩展的明确对象。这种声明抽象要求开发人员与运营商沟通,然后有效地使用它Kubernetes。随着时间的推移,双方的沟通将逐步升级,最终将安全问题纳入其中。
(3) 自动化——在不影响开发速度的情况下,向开发人员提供直接反馈,实现自动化DevSecOps关键是。单元测试、代码分析和镜像扫描已经成为可以轻松添加到连续集成中(CI)管道的常用工具应立即通知开发人员进行必要的修改。在开发团队的合作下,这些变化可以迅速集成到现有的管道中。运营和安全团队应该明白,他们提供的自动反馈机制越早,开发人员就越早适应这种新的合作模式。
在新工具和最佳实践的帮助下,安全团队可以为开发人员提供稳定、安全的基本镜像,从而不断提高代码质量。安全团队还可以在管道中引入自动检查机制,监控所有包括权限改进的行为YAML文件、未匹配网络策略的命名空间或者存在漏洞及风险的容器镜像。
(4) 一切都是代码——Kubernetes其他编程语言的声明性质大大提高了基础设施和应用程序的可重用性和可理解性。YAML文件将帮助团队准确理解容器如何发挥预期作用。时钟时间、卷挂载和secret注入等一切行为都可通过这个文件及注释进行观察。这种方法还让代码成功呈现为文档的形式,以供随时进行版本控制并实现迭代变更。
但即使有最新和最好的工具,如果你不能正确地记录和编目具体的问题,所有的努力都可能是徒劳的。如果没有清晰的文档,就很难跨团队分享经验和教训。在尝试新的管道配置时,团队的经验和教训很可能对其他团队有决定性的指导作用。因此,请使用代码和版本控制系统来充分显示变更,并允许各方进行讨论。否则,随着单一团队的快速发展,知识共享系统将崩溃,团队之间很难进行充分的沟通。
(5) 沟通与合作——如果团队和个人之间没有充分的沟通,所有的代码、应用程序和安全变化都将毫无意义。IT部门最常忽视的沟通要点之一是对意图的明确解释。
DevOps与DevSecOps很难充分发挥其所有潜力的核心原因之一是,相关行动的意图往往没有得到各方的正确理解。安全团队不妨碍开发工作。他们只是在完成自己的工作,确保应用程序的安全。虽然开发团队也关心安全,但他们面临的头号问题总是如何在有限的时间内顺利启动新功能。
企业必须努力弥合团队之间的差距,专注于吸取教训,鼓励合理的尝试失败,并设定实际的后续目标。从文化的角度来看,这种变化通常是由高级管理层自上而下推动的。在重视这种方法的企业中,开发、运营和安全团队将愿意讨论哪些意图更合理和不合理,并愿意从另一方的角度考虑问题。
DevSecOps将要去哪里?
总而言之,DevSecOps提出以下要求:
- 要求在快速迭代的软件开发生命周期中建立嵌入式自动安全检查机制
- 可重用的开发环境有相同类型的安全控制机制
- 版本控制CI管道
- 管道变更以组织或团队职能范围为边界,以改善事件发生后的安全调查流程
- 完善的说明文档,最好通过声明实现安全即代码
- 鼓励创新,接受由此产生的失败文化
DevSecOps它代表了一种文化变化,其背后的思维方式变化并不局限于任何特定的工具。当然,我们也应该尽可能多地使用支持合作解决问题的工具,包括确保它具有良好的可移植性、可观察性和简单易懂的解释文档。最重要的是获得团队的主导地位,以建立可以跨团队共享的上下文材料。
相信结合各种成功案例和理论潜力,DevSecOps这波不断发展的浪潮最终将成为我们手中的有力武器。