为什么 DevOps 需要和安全相结合?

在云服务的帮助下,企业能够在运营与管理层面获得灵活性、可扩展性以及易用性等诸多优势。

此外,云服务还使 IT 团队能够通过持续集成 / 持续部署(CI/CD)的方法实现应用程序与功能的快速交付。为了充分发挥云服务的功能特性,目前众多组织正在努力转向 DevOps 这一新的开发与交付理念。

速度是 DevOps 中最重要的组成部分之一,它使得组织能更好地响应客户与市场需求,同时持续提供创新产出。将 DevOps 作为一门重要的功课,组织将能够更从容地实现新功能与修复程序的迭代与部署,并快速将其交付至用户手中。

虽然 DevOps 强调速度,但其对安全性也同样给予高度重视。当然,必须承认的是,速度的急剧提升确实会给整个组织在云环境中对严格安全状态的恪守立场产生负面影响。

这就要求我们将 DevOps 与安全需求(SecOps)结合起来。目前二者虽然能够共存,但之间确实存在一定程度的紧张关系,甚至是冲突。

然而,安全与 DevOps 的对抗并不一定是零和游戏。事实上,我们需要的是一种能够将快速 CI/CD 需求与云安全控制及策略相结合的有效方法,从而高效运行数据与资源,同时保障业务流程安全可靠。

以下三项关键实践,在 DevOps 与 SecOps 的流程乃至思维方式的整合中发挥着至关重要的作用:

一、将安全性嵌入开发流程

某些组织采取预设的安全方法;他们将安全事务视为待办清单上的一系列条目,借此定期审查错误与漏洞。对于采用云服务的现代企业而言,这种陈旧的作法有可能无法及时跟上新漏洞的出现速度。

因此,我们必须将安全工作带入组织文化中,并将其视为整个 IT、产品以及工程流程中的必要组成部分。

除了在代码与资源层面采用安全控制的最佳实践外,各团队还必须在系统的生产运行环境中构建自动安全检查机制。

另外需要强调的是,即使在设计之初就充分考虑应用程序与系统的安全问题,同时在整个开发流程中贯彻适当的安全评估,我们仍有可能遭遇计划之外的配置变化,进而导致未能及时发现重要安全事故。

为了保障安全,企业必须对生产系统进行持续的安全与合规性监控。

二、将自动化机制全面引入安全体系

DevOps 的存在能极大提升生产效率;但另一方面,严格恪守安全原则会极大影响生产效率水平。

随着云部署与应用程序开发的快速推进,应用程序功能、配置以及工作负载每天都在发生持续变化,这意味着我们根本不可能以手动方式及时采用适当的安全性调整。

因此,将自动化机制全面引入安全体系就变得非常有必要。大多数开发人员已经熟悉脚本、编码以及复杂性简化等自动化概念,事实上云环境中的安全性保障也完全可以通过相同的方式实现。

安全功能与代码不同,对其进程的管理可以通过脚本及 API 访问进行,而非依赖于特定工具集。

目前,云环境正持续利用微服务架构及 DevOps 支持开发与部署流程,因此安全事务中的诸多工作也获得了可编程能力。

我们可以对集成与部署流水线进行轻松调整,充分利用自动化质量保证与安全控制机制支持现有开发工作流程。

此外,随着更多资源被添加至云环境、更多连接因素融入应用程序,我们也应利用自动化方案对直接影响组织安全态势的设置、策略、控件、签名以及其它元素进行持续观察,同时及时进行测试与修复。

三、达成共识

要将 DevOps 与安全工作结合起来,相关团队必须经历一场影响深远的文化变革;我们必须引导双方彼此结合,在协作的同时继续保持各自团队的独立性与积极性。

我们的目标,应该是在开发人员、运营团队、IT 管理者、QA 与安全、开发与管理等所有层面推行安全控制与最佳实践,同时继续尊重快速开发、部署与迭代等目标。

只有不同群体彼此之间理解对方的目标,才能从自身角度出发支持自己乃至对方的工作流程。

这听起来似乎很简单,但事实证明,事业的成功离不开参与各方彼此之间的同理心与顺畅沟通。这也要求我们建立起有效交流及敏捷的工作环境,使得各团队能够不断改进现有流程与运营方式。

此外,应当考虑利用正确的激励措施与 KPI 对不同群体提供激励,引导他们认同并支持这种新的 DevOps/ 安全运营集成方式。

从设计层面来看,云环境天然具有动态属性。但在其中多种多样的工作负载、令人眼花缭乱的连接阵列以及不断增加的表面区域之下,云环境始终坚持着同一项目标——助力代码开发并提供安全保障。

激进的时间表与截止日期往往迫使员工无视安全纪律,而在全面连通、快速变化的云环境中,安全漏洞将成为企业无法承受的致命软肋。因此,要想取得商业成功,企业必须建立起良好的流程与技术体系,从而有效保护各类关键资产与数据。

英文原文:

DevOps and Security…Because it Makes Sense