概述
DevSecOps 代表开发、安全和运营。它是一种文化、自动化和平台设计方法,将安全性集成为整个 IT 生命周期中的共同责任。
DevSecOps 与 DevOps
DevOps 不仅仅是开发和运营团队。如果您想充分利用 DevOps 方法的敏捷性和响应能力,IT 安全还必须在应用程序的整个生命周期中发挥综合作用。 为什么?过去,安全的角色在开发的最后阶段被隔离到特定的团队。当开发周期持续数月甚至数年时,这并没有那么成问题,但那些日子已经过去了。有效的 DevOps 可确保快速且频繁的开发周期(有时为数周或数天),但过时的安全实践甚至会破坏最高效的 DevOps 计划。 现在,在 DevOps 的协作框架中,安全是端到端集成的共同责任。这是一种非常重要的心态,它导致一些人创造了“DevSecOps”这个术语来强调在 DevOps 计划中建立安全基础的必要性。 DevSecOps 意味着从一开始就考虑应用程序和基础架构的安全性。它还意味着自动化一些安全门,以防止 DevOps 工作流程变慢。选择合适的工具来持续集成安全性,例如商定具有安全功能的集成开发环境 (IDE) ,可以帮助实现这些目标。然而,有效的 DevOps 安全需要的不仅仅是新工具——它建立在 DevOps 的文化变革之上,以尽早整合安全团队的工作。
DevOps 安全性是内置的
无论您将其称为“DevOps”还是“DevSecOps”,将安全性作为整个应用程序生命周期不可或缺的一部分一直是理想的选择。DevSecOps 是关于内置安全性的,而不是作为应用程序和数据外围的安全性。如果安全性仍然处于开发管道的末端,那么采用 DevOps 的组织可能会发现自己又回到了他们最初试图避免的漫长开发周期。 在某种程度上,DevSecOps 强调需要在 DevOps 计划开始时邀请安全团队和合作伙伴来构建信息安全并制定安全自动化计划。它还强调需要帮助开发人员在编写代码时考虑到安全性,这一过程涉及安全团队共享对已知威胁(如内部威胁或潜在恶意软件)的可见性、反馈和见解。这也可能包括对开发人员的新安全培训,因为它并不总是更传统的应用程序开发的重点。 内置安全性到底是什么样的?对于初学者来说,一个好的 DevSecOps 策略是确定风险承受能力并进行风险/收益分析。在给定的应用程序中需要多少安全控制?不同应用的上市速度有多重要?自动执行重复任务是 DevSecOps 的关键,因为在管道中运行手动安全检查可能非常耗时。
DevOps 安全是自动化的
要做的事情:保持短期和频繁的开发周期,集成安全措施以尽量减少对操作的干扰,跟上容器和微服务等创新技术,同时促进通常孤立的团队之间更紧密的协作——这对任何组织来说都是一项艰巨的任务。所有这些举措都是从人的层面开始的——从组织协作的来龙去脉——但 DevSecOps 框架中这些人为变化的促进者是自动化。 但是要自动化什么,以及如何自动化?有书面指南可以帮助回答这个问题。组织应该退后一步,考虑整个开发和运营环境。这包括源代码控制存储库、容器注册表、持续集成和持续部署 (CI/CD) 管道、应用程序编程接口 (API) 管理、编排和发布自动化以及运营管理和监控。 新的自动化技术帮助组织采用更敏捷的开发实践,它们还在推进新的安全措施方面发挥了作用。但自动化并不是近年来 IT 格局发生变化的唯一因素——容器和微服务等云原生技术现在是大多数 DevOps 计划的主要部分,而 DevOps 安全性必须适应它们。
DevOps 安全性专为容器和微服务而构建
容器支持的更大规模和更动态的基础架构已经改变了许多组织开展业务的方式。正因为如此,DevOps 安全实践必须适应新形势并与特定于容器的安全准则保持一致。 云原生技术不适合静态安全策略和清单。相反,安全性必须在应用程序和基础设施生命周期的每个阶段都是持续的和集成的。 DevSecOps 意味着从端到端将安全性构建到应用程序开发中。这种与管道的集成需要一种新的组织思维方式,就像它需要新的工具一样。考虑到这一点,DevOps 团队应该自动化安全以保护整体环境和数据,以及持续集成/持续交付流程——一个目标可能包括容器中微服务的安全性。 通过此网络研讨会系列获得有关整个容器应用程序堆栈和生命周期安全性的专家观点。
环境和数据安全
- 使环境标准化和自动化:每项服务都应该拥有尽可能少的特权,以最大限度地减少未经授权的连接和访问。
- 集中用户身份和访问控制功能:严格的访问控制和集中式身份验证机制对于保护微服务至关重要,因为身份验证是在多个点启动的。
- 将运行微服务的容器与彼此和网络隔离:这包括传输中的数据和静态数据,因为两者都可能代表攻击者的高价值目标。
- 加密应用程序和服务之间的数据:具有集成安全功能的容器编排平台有助于最大限度地减少未经授权访问的机会。
- 引入安全 API 网关:安全 API 提高授权和路由可见性。通过减少暴露的 API,组织可以减少攻击面。
CI/CD 过程安全
- 为容器集成安全扫描器:这应该是将容器添加到注册表的过程的一部分。
- 在 CI 过程中自动化安全测试:这包括将安全静态分析工具作为构建的一部分运行,以及在将它们拉入构建管道时扫描任何预构建的容器镜像以查找已知的安全漏洞。
- 将安全功能的自动化测试添加到验收测试过程中:自动化输入验证测试,以及验证身份验证和授权功能。
- 自动化安全更新,例如已知漏洞的补丁:通过 DevOps 管道执行此操作。它应该消除管理员登录生产系统的需要,同时创建一个记录和可追溯的变更日志。
- 自动化系统和服务配置管理功能:这允许遵守安全策略并消除手动错误。审计和补救也应该自动化。