CyberArk Glossary >

什么是 DevOps?

DevOps一词用于描述将软件开发(Dev)和IT运营(Ops)结合在一起并提高组织快速交付应用程序和服务的能力的一系列文化理念、实践和工具。

使用DevOps方法,可以频繁交付新的应用程序功能。弹性的基础架构通过自动扩展流程来满足激增的需求,这些流程可以扩展新的计算资源(虚拟机或容器)并根据需要部署更多应用程序实例。组织只需为所需的计算量付费。

全世界许多企业组织都在转向敏捷和DevOps方法,以消除功能和管理壁垒,并使变更管理、配置管理和部署流程自动化。DevOps最终可以帮助组织缩短产品上市时间、提高产品质量、消除效率低下、加速数字化转型以及更快地响应客户需求。

什么是CI/CD?

通过合并开发和运营并推动智能之间的更多协作,DevOps可以更加贴近业务目标,缩短开发周期。使用持续集成(CI)时,开发人员每天多次将代码更改合并到存储库中,并将更改自动集成到构建中。持续交付(CD)的方法要求代码始终处于可部署状态,以便可以随时通过触摸按钮将其部署到生产中。

DevOps安全挑战

尽管有很多优势,DevOps仍会带来新的风险和文化变化,以及传统的安全管理解决方案和实践通常无法解决的安全挑战。这些传统方法通常太慢、太昂贵或太复杂,无法支持自动化软件交付和部署到云中或作为容器。这些挑战包括:

DevOps中使用的特权凭据是网络攻击者的目标。DevOps环境中最大的安全挑战之一是特权访问管理。DevOps流程需要使用功能非常强大但极易受到网络攻击的人机特权凭据。

  • 人类访问:通过高速流程,DevOps从业人员需要跨开发和生产环境的特权访问。
  • 机器访问:在自动化流程中,机器和工具需要特权(或权限)提升来访问资源,而无需人工参与。示例包括:
    • 自动化工具:Ansible、Puppet和Chef
    • CI/CD工具:Jenkins、Azure DevOps和Bamboo
    • 容器管理工具:Docker和Linux容器(LXC)
    • 容器编排工具:Kubernetes、Red Hat OpenShift、Pivotal、Cloud Foundry

Tier 0资产(例如Ansible和Jenkins)可以访问许多其他工具使用的凭据。

一旦攻击者获得特权凭据,他们就可以完全访问DevOps管道、敏感数据库、甚至可以访问组织的整个云。攻击者意识到了这一点,并越来越多地转向寻找特权凭据,包括密码、访问密钥、SSH密钥和令牌,以及其他类型的秘密,例如证书、加密密钥和API密钥。攻击者可以在DevOps环境中利用不安全的凭据,从而导致加密劫持、数据泄露和知识产权遭到破坏。

开发人员专注于速度,而非安全性。DevOps团队专注于更快地生成代码,因此经常在安全团队的权限范围之外采用不安全的做法。这些做法可能包括在应用程序和配置文件中保留嵌入式秘密和凭据,在没有足够仔细检查的情况下重新使用第三方代码,采用新工具而不对潜在的安全问题进行评估,以及对DevOps工具和基础架构的保护不足。

以工具为中心的机密信息管理方法会造成安全漏洞。DevOps工具通常具有一些用于保护机密信息的内置功能。但是,这些功能无法促进互操作性,也无法在工具、云和平台之间安全地共享秘密。DevOps通常会结合各个工具的内置功能来管理秘密。 由于无法以一致的方式监视和管理机密信息,因此该方法可能难以提供充分保护。

在组织中启用DevOps安全的步骤

以下是组织通常要采取的步骤,以实现广泛的DevOps安全,同时解决特权访问的风险并与DevOps文化和方法保持一致:

  • 将安全策略实例化为代码。DevOps的基石是“基础架构即代码”(有时称为不可变基础架构)概念,以取代手动管理和配置服务器及软件的传统模型。通过将此概念应用于安全(以代码形式实例化和管理安全策略),组织可以消除人工密集型且容易出错的配置过程。
  • 确立职责区分。DevOps团队应明确定义不同的角色和职责:
    • 开发人员应专注于创建应用程序以取得业务成果。
    • 运营应专注于提供可靠且可扩展的基础架构。
    • 安全性应着眼于保护资产和数据以及降低风险。

可将各组之间的交互写入书面的安全策略中。例如,开发人员创建安全策略,声明其应用程序或服务需要哪些特权。然后,安全人员检查并批准安全策略,运营人员确保按预期部署应用程序。

  • 将安全性集成到CI / CD实践中。在DevOps中,安全性通常是事后才想到的,并且在过程中的执行时间过晚(如有)。然后,解决漏洞所需的可能的实质性紧急更改将导致延迟发布。具有前瞻性的组织正在使用看板等先进的工作流计划和管理工具来进行建模、加速开发和消除低效率。此外,安全团队越来越多地将应用程序分解为微服务,以简化安全性检查和更改。
  • 采取主动的安全方法。 在应用程序的整个生命周期中,都应采取严格的安全措施以减少漏洞、改善安全状况并降低风险。良好的DevOps安全卫生习惯包括:
    • 全面解决安全要求和潜在漏洞holistically,因为攻击者可能只需要利用一个漏洞就可以执行任务。
    • 降低特权在构建自动化工具中的集中度,并确保代码存储库不会泄露秘密。
    • 将机器和人员使用的机密(密码、证书、API密钥、令牌和SSH密钥)保存在安全、高度可用的存储库中——远离源代码,且不要存储在开发人员笔记本电脑和用户可访问的存储系统中。定期轮换机密,以最大程度地减少曝光。
    • 应用最小权限原则,以确保机器和人员只能访问他们绝对需要的资源。
    • 为正常使用模式建立基线以检测异常,以便追踪恶意用户并且不能窃取凭据。
    • 通过记录凭据的使用方式来划分责任。例如,对于人类用户,请考虑会话的击键或视频记录。
    • 为每台计算机提供唯一的身份,以便审核和监视对秘密的访问。
    • 运行漏洞扫描并进行渗透测试,以改善网络安全状况。
    • 对开发人员进行安全威胁和最佳实践方面的教育。
    • 促进安全和开发团队之间的紧密合作与协作。
  • 自动化安全流程。DevOps使用自动化来加速应用程序生命周期管理并消除人员等待时间。同样地,DevOps安全性应利用自动化来最大程度地减少人机交互和手动干预。例如,通过自动轮换秘密(密码、密钥、证书),组织可以防止攻击者长时间访问DevOps工具、访问密钥或系统。如果检测到泄露,也可以相应地使用自动安全程序。例如,特权会话可以在识别到安全漏洞后自动终止,并自动轮换凭据。

了解有关DevOps安全性的更多信息

其他术语表条目