devops_通过DevOps确保强大而有效的信息安全

devops

DevOps是一套原则和实践,致力于改善开发和运营团队之间的沟通和协作。 这些做法已受到希望开发可靠的技术解决方案的技术专家的欢迎,这些解决方案可确保可靠性并易于升级。 DevOps的最初重点是帮助开发人员和运营专业人员更有效地进行交流和合作,但是其他利益相关者(例如质量保证,测试和信息安全(InfoSec)团队)也同样重要。 本文介绍了如何使用DevOps最佳实践来使您的信息安全性强大而有效。

为什么信息安全是DevOps的关键部分

DevOps在使开发人员和运营部门更有效地协同工作方面非常成功。 借助DevOps,运营团队可以获得所需的信息,以了解如何建立有效而可靠的应用程序构建,打包和部署过程。 信息安全组与操作组具有许多相同的要求。 此外,InfoSec需要获取他们需要的信息,以确保整个系统安全可靠。 正如DevOps帮助开发和运营有效地协同工作一样,DevOps也帮助开发和信息安全也更加有效。 持续部署一直是DevOps中的一项重要实践,并且侧重于通过自动构建,打包和部署来自动化部署管道。 通过在开发生命周期的早期提供评估和解决安全问题的平台,信息安全可以从部署管道中显着受益。 有效的安全性应始终始于对所涉及风险的评估。

DevOps可以帮助解决的安全风险

作为软件或系统开发工作的一部分,需要理解并解决风险。 在开发过程结束时,不能仅将安全性添加到系统上。 (有关构建安全软件的更多信息,请参见本文底部的“相关链接”。)从开发生命周期的一开始就需要在设计和开发系统时考虑安全性。 DevOps提供了必要的结构来帮助解决创建任何复杂技术系统时固有的许多安全风险。

安全漏洞可能是各种情况的结果。 例如,C和C ++系统中的编码实践不充分可能导致缓冲区溢出情况,从而使恶意攻击者获得具有程序特权的命令提示符。 攻击者已使用缓冲区溢出攻击来获得对系统的控制,甚至有效地获得root特权。

由于组件之间的接口中的身份验证和授权等安全控制不充分,可能会导致运行时问题。 问题的一个常见来源是在部署期间应用了错误的权限。

另一个值得关注的领域是确保部署正确的代码。 部署过程中的错误会被恶意攻击者利用。

接口之间的配置问题可以被试图渗透系统的黑客利用。 一旦系统受到威胁,不充分的安全控制将使识别未经授权的更改和执行取证以确定因错误或恶意意图而更改的内容变得更加困难。

InfoSec很少在开发过程的早期就具有技术专长和足够的测试环境来进行有效的安全性测试。 许多组织也无法从头开始配置服务器并根据需要部署应用程序,这一限制意味着响应安全漏洞的人员通常很难准确地了解哪些代码已被泄露以及如何消除威胁。

这些风险太普遍了。 它们导致许多系统中断,从而影响了主要的银行和交易系统,甚至影响了交易交易所本身。 如果我们不能在项目结束时简单地添加安全性,那么我们如何从一开始就构建安全的系统呢?

有效的源代码管理以构建安全的系统

质量管理专家W. Edwards Deming明智地指出,质量必须从一开始就建立起来。 DevOps依靠有效的源代码管理来创建构成部署管道的自动化构建,程序包和部署脚本。

有效的源代码管理包括:

  • 版本控制系统
  • 可靠地使代码基线化的能力
  • 使用流和组件对软件体系结构建模的技术
  • 支持代码中的多个变体。

在版本控制系统中包含所有源代码,InfoSec可以扫描代码中的漏洞。 强大的版本控制系统还使安全分析人员能够通过对组件结构以及组件之间的接口进行建模,从而了解系统的构造方式,而这些组件通常是恶意攻击的目标。

DevOps和部署管道有助于有效创建和配置测试环境,该环境可用于评估和测试组件之间的接口中的漏洞。 通过提供用于自动化测试的平台,可以识别需要解决的安全问题,及时提供强大的测试环境可以增强安全性。 一旦在代码中发现问题,就可以将它们作为缺陷或变更请求加以解决,并在其整个生命周期中进行跟踪,以确保已解决已确定的风险。

强大的源代码管理解决方案可以通过提供一组工具和过程来帮助管理应用程序生命周期,这些工具和过程可以帮助驱动整个开发过程,从选择正确的需求到管理在系统投入生产时发现的缺陷。 跟踪需求和缺陷是基于任务的开发的重要方面。

DevOps最佳实践,可实现强大而有效的信息安全

以下各节描述了来自DevOps原则的建议,以帮助构建信息安全性:

与开发,运营和信息安全团队合作

信息安全团队很少具备足够的技术专业知识,以了解复杂系统中固有的常见安全漏洞。 正如DevOps改善开发与运营之间的通信一样,DevOps还通过允许信息安全团队全面了解整个应用程序以及其构建,打包和部署方式,从而为信息安全团队提供支持。 这些知识可以帮助InfoSec保持相关且有效的重点。 通过了解系统基础架构,InfoSec还可以了解何时破坏了安全性,以及在基础架构本身受到威胁的情况下,确切地需要采取哪些措施来解决安全漏洞。 在许多情况下,使用自动化过程重建服务器非常重要。

使用基于任务的方法开发软件

基于任务的开发涉及创建工作项(例如任务,缺陷和需求),然后将这些工作项跟踪到为开发代码而创建的变更集。 通过跟踪对任务和缺陷的需求,可以避免由于未能实现基本需求而引入的安全问题。

跟踪需求以测试案例也是基于任务的开发的重要方面,因为它可以确保每个需求都得到验证和确认。 这种可追溯性对于防止可能导致安全漏洞的缺陷至关重要。 定义和跟踪工作项有助于管理开发工作的复杂性。 还可以使用代码来帮助促进安全性测试。

自动化应用程序的构建,打包和部署

创建用于构建,打包和部署代码的自动化过程可以以多种方式支持敏捷迭代开发。 自动化的构建过程是持续集成和持续交付的前提条件。 生成过程应将不可变版本ID自动嵌入到生成过程使用或创建的每个配置项(CI)中。 这也是在以下所述的应用程序部署期间应创建加密散列以用于验证的地方。 Sprint里程碑版本可用于测试和验证项目开始时可能无法完全理解的需求。 最重要的是,隐式记录了如何构建每个组件的技术细节,并且可以由感兴趣的利益相关者(包括信息安全)进行审查。 在代码中创建变体有助于应用程序测试,包括检测代码以促进与安全性相关的测试。

使用库检测代码

检测代码涉及使用库运行代码,这些库使扫描运行时代码中的漏洞变得更加容易。 DevOps通过使代码能够被构建,打包和部署到测试机器上,从而识别安全漏洞,从而发挥了关键作用。 为了确保DevOps尽早解决问题,必须在应用程序的整个生命周期中对应用程序的安全性进行分析。 尝试在生命周期的后期修复安全问题比在开发工作中尽早解决这个问题要困难得多。 通过参与整个应用程序生命周期,安全分析人员可以更有效地识别系统中存在的任何问题。

找出最薄弱的环节

就像古老的谚语所说的那样,“一条链只有最薄弱的一环才牢固”。 通过全面了解系统,安全分析人员可以确定特定于特定组件或组件之间接口的问题。 与遗留系统的接口通常是必需的。 它们也是链中最薄弱的环节。 在确定漏洞为风险之后,可以对应用程序进行测试以评估潜在的安全问题。 然后可以采取措施减轻风险并解决安全漏洞。 这些技术在促进早期渗透测试中特别有用。

进行渗透测试

部署管道为创建所需的测试环境以进行渗透测试提供了有效的框架。 借助DevOps,渗透测试可以在整个软件和系统生命周期中进行。 通过改善开发与信息安全之间的通信,DevOps InfoSec团队可以在通常为此目的分配的短时间内设计和执行更有效的渗透测试。 部署管道还使信息安全可以获得有效评估安全漏洞必不可少的技术信息。

以编程方式构建基础架构

安全专家认识到,几乎所有系统都可能遭到破坏,一旦环境被入侵,恶意代码就会泛滥成灾。黑客通常会入侵安全程度不高的系统,然后使用它们来攻击其他更安全的机器。 这些类型的攻击可能仅涉及拒绝服务攻击,然后可以追溯到攻击中使用的计算机。 在拒绝服务攻击中,毫无戒心的受害者可能会发现自己被指控在另一个系统上发动攻击,并被要求解释为什么将他们的计算机用于恶意目的。

当系统受到威胁时,最好的措施是完全清理并重新配置服务器。 DevOps提供了一些出色的过程,可以通过完全自动化的过程将服务器从操作系统构建到应用程序基础。 以编程方式构建基础结构的能力称为基础结构即代码。 DevOps中的这一关键实践通常用于支持基于云的基础架构。 这些技术也被称为敏捷系统管理,这是指DevOps在敏捷开发环境中提供的价值。

使用自动化系统来配置和验证操作系统

通过提供自动化过程来配置和验证操作系统是否符合既定的行业安全标准,例如备受尊敬的Internet安全中心(CIS)安全基准,该基础结构即代码可用于实现安全系统,该标准精确定义了操作方式系统应配置。 (请参阅本文底部的“相关链接”以获取到Internet安全中心的链接。)

可以使用CIS规范中提供的指南来完全编写操作系统的设置和安全性配置的验证。 脚本使服务器可以通过自动化过程得到完全配置和支持。 为确保平台可靠且安全,请从完全安全且配置正确的服务器开始。 在准备好服务器基础结构并对其进行验证之后,就该使用相同的原理以安全和可验证的方式部署应用程序库了。 自动化构建过程应确保通过将版本ID嵌入到每个配置项(包括代码组件,配置和属性文件)中,在部署代码后对其进行验证。

应该创建加密哈希,以用于验证应用程序部署。

部署应用程序本身对于提供一个完全安全的,受信任的应用程序基础同样重要,该应用程序不仅可以验证,而且还可以检测安全漏洞,包括未经授权的更改。 构建代码包含用于部署验证的嵌入式版本ID,并使用加密技术识别未经授权的更改,从而确保您可以创建安全的受信任应用程序基础。

提供安全,可信赖的应用程序基础

为了保护受信任的应用程序库,请使用可安全标识确切的二进制代码和所有其他配置项(包括XML和属性配置文件)的过程来构建应用程序代码,以便您可以肯定地证明已部署了正确的代码并确认没有进行未经授权的更改。

这些过程通常利用在应用程序的自动构建和打包过程中首先创建的加密哈希。 部署代码后,可以重新计算哈希值以验证所有代码均已正确部署。

这些相同的过程可用于建立可靠的基准,并识别由于人为错误甚至恶意意图而可能发生的任何未经授权的更改。

从安全,受信任的应用程序基础上进行的工作可确保系统已可靠且准确地部署,并使识别和解决任何可能的安全漏洞变得更加容易。 实施授权的更改后,必须更新基准以记录和跟踪更改。 这些技术在行业标准和框架中进行了描述,包括广受尊敬的ITIL v3框架,该框架为如何构建和维护可靠的服务提供了指导。

依靠标准和框架

标准和框架为如何实施安全可靠的系统提供了专家指导。 这些准则中描述了许多功能和过程,包括监视和跟踪代码基线的能力。 ITIL v3框架描述了服务资产和配置管理(SACM),该服务捕获可以存储在配置管理系统(CMS)中的基线。 这些基线可以由配置管理数据库(CMDB)监控,并向CMS报告差异。 最终媒体库(DML)包含可以作为配置服务器的一部分部署的基准正式发行版。

这些技术,包括使用入侵检测系统(IDS)监视基准的实践,被公认为行业最佳实践。 DevOps方法为实现这些过程提供了自动化和框架。 即使采用最佳的预防措施,也可能发生入侵。 能够检测和响应事件至关重要。

能够及早发现未经授权的更改

当由于人为错误或恶意攻击而发生未经授权的更改时,应立即检测到它们并触发事件响应。 DevOps方法提供了这些过程,以便可以轻松检测到未经授权的更改并在不影响用户的情况下主动对其进行处理。 它们还为立即配置服务器和部署系统以将系统还原到可靠基准提供了基础。 这些技术要求关键利益相关者(包括开发,运营,质量保证,测试和信息安全团队)之间的协作和出色的沟通。

结论

DevOps以专注于帮助开发人员和运营部门更有效地协同工作而闻名。 信息安全以及质量保证和测试团队也是关键的利益相关者,需要在DevOps框架内进行代表。 DevOps有助于改善沟通,并帮助将基本的技术知识从编写代码的开发人员转移到负责确保不中断服务的运营和安全专业人员。 有了DevOps结构,InfoSec可以做出明智的决策,从而有助于保护系统基础结构和应用程序,避免由于意外错误或恶意攻击而可能损害系统的任何意外事件。 保持系统安全有助于防止系统故障,并确保不中断服务。 DevOps方法和部署管道使您的团队能够推出既满足您的业务需求又提供安全可靠的应用程序基础的功能。


翻译自: https://www.ibm.com/developerworks/security/library/d-robust-effective-information-security-devops/index.html

devops

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值