写点什么

从 DevOps 中可供安全借鉴的五项经验

  • 2017-02-03
  • 本文字数:3665 字

    阅读完需:约 12 分钟

关键点

  • DevOps 提高了速度并扩张了规模,让安全团队面临着新的挑战。
  • 安全从业人员必须将 DevOps 原则引入他们的工具和工作流,以便跟上现代应用交付的步伐。
  • 安全解决方案应该使用 DevOps 所热衷的模块化、自动化和可扩展的技术进行构建和部署。
  • DevOps 的概念,比如标准化配置、不变的基础设施以及镜像系统等都有助于减轻安全问题的复杂性。
  • DevOps 风格的透明性和问责制是确保在安全团队内进行有效合作的关键。

因为 DevOps 对于现代企业的重要性与日俱增,安全从业人员必须问问自己,他们可以从这种文化转变中学习到什么。DevOps 是组织想法、过程和软件工具的交融,它已经帮助一些世界上最大的公司提高了劳动生产率,实现了更快的产品交付,并以极快的速度提供了更高质量的产品。一些企业,比如 Netflix、谷歌、亚马逊等都是高绩效、敏捷组织的例子,它们认定 DevOps 是它们数字业务成功的基础。

具有有效的 DevOps 实践的公司明白:在今天的技术驱动、赢家通吃的竞争格局下,一个企业的成功往往取决于其不断学习、创新并更快地提供前沿的、客户满意的产品的能力。同时,这也为其他的公司内部门提出了挑战,比如安全。更快速和方便地发布分布式应用程序会大大地增加企业的风险,如果相应的安全问题不能以与它们部署和扩展相同的速度得到解决。安全工作流、工具和运维必须不断改变以便跟上变化。

最近,权衡 DevOps 速度与现有安全要求的需求已经催生了一个名为 DevSecOps 模型。DevSecOps 基于“安全问题,人人有责”的原则。它强调应用程序开发人员可以怎样把安全检查与他们的集成和部署流水线构建到一起。但DevSecOps 对运行时的安全性关注得比较少,而这却是企业应用程序和数据最容易受到攻击的时候。运行时的安全性包括应用程序正在运行时可能遇到的所有类型的威胁,并且它包括一些功能,比如攻击检测、事件响应和政策执行。现在这些功能很大程度上仍然依赖于孤立的工具和手动的工作流程。此外,运行时的安全性不能,也不应该是整个企业中的每个人的责任——相反,这些事情最好是由安全从业人员进行处理。

除了将安全功能构建到DevOps 的工作流程中,安全团队应该评估他们如何可以将DevOps 的原则整合入他们的工具和流程之中。这里有五个DevOps 的做法,供安全从业人员参考。

构建模块化系统

DevOps 理念的关键是构建小团队可以很容易管理的系统。许多由 DevOps 团队使用的工具和方法都非常喜欢用模块化方式组装的应用程序。这样的应用程序例子包括微服务架构 Docker 等容器技术、以及 12 要素应用程序方法论等。微服务使开发人员能够专注于优化自己的应用程序部分,这些应用程序通过 API 与其他系统对接。这简化了开发、集成以及部署。

安全课堂:今天的安全团队要应对的是混杂拼凑起来的几十种安全工具,而且彼此之间还难以整合到一起。用模块化的方法构建安全系统将大大降低运维的复杂度、时间以及整合和管理这些解决方案的成本。安全从业人员应该寻找新的工具,这些新工具使用与实现模块化应用的程序开发相同的框架。使用 Docker 容器中运行的微服务进行交付的安全可以很容易地分布在整个应用程序的集群,并且由 Kubernetes Mesosphere DCOS 或者 Docker Swarm 等系统管理。这意味着安全工具可以作为另一组应用程序融入进来,而且可以和受它们保护的应用程序一起进行自动化和管理。

依赖于自动化和可扩展性

DevOps 的首要目标是实现更快的速度和敏捷性,以便更好地服务客户。团队实现这一目标的方法是通过对高水平的自动化和可扩展性的设计,来使基础设施完全可编程。例如, Netflix 公司一直专注于将公司的整个软件发布平台自动化,以便它可以按需要在几分钟内扩展到成千上万的服务器上,确保客户总是可以访问到他们想要的内容。自动化还有额外的好处,那就是减少人工操作错误的可能性,而这正是导致巨大花费的服务中断或频繁停机的原因。

安全课堂:安全的任务是减轻对业务的攻击的风险和影响。实现自动化能够更快地进行检测,这给了安全团队更多的时间来优化响应和恢复。随着新的应用程序不断地在云上快速部署和扩展,攻击面也可以很快地扩展,并且不断变化。数以千计的微服务应用程序可以在几秒钟内被启动或破坏,留下可视性和数据收集的差距。为了减少潜在的攻击,同时保留现有的开发工具,安全工具必须基于自动化和可扩展性来构建,以适应这样的新应用交付模式。将运行时安全生命周期自动化也减少了攻击者可能利用的配置错误的可能性,有助于减少安全事故。依靠传统的、分散的、手动的安全流程已经不够了。

使用标准化的配置

在 DevOps 中,团队利用一致的基线配置操作可以更容易地帮助识别操作问题。团队以运行服务需要的基础图像、应用程序和依赖性等形式来打包“基础设施即代码”。这确保了系统是相同的并且可复制,以趋向更好的运维条件。监测到的内容与标准化配置之间的差异让运维人员能够迅速定位和解决问题。将基础设施视作“不可变的”,使得运行中的系统永远不会被重新配置,这种做法正日益成为一项最佳实践,采用Docker 等应用程序容器技术为这项实践提供了便利条件。新系统已经整合了任何需要的变化,它简单地取代了运行中的系统。这种方法可以让团队很容易就停止有问题的系统,并且在同一时间重新发布,进入可预知的、良好的状态。

安全课堂:安全团队差不多都能实施被认可的安全配置、分析鉴定和进行潜在问题分析等。这些标准化的配置都将对应于正常的系统活动。偏离正常设置的运行时活动可用于识别异常或恶意攻击模式,这些模式反映了实时的攻击或折衷的指标。当检测到这样的活动时,安全团队可以将基础设施视为不可变的,快速停止受影响的系统,并运行起新的、未受影响的系统,而不必处理修补生产系统带来的复杂性。

保持可审计的“真实数据来源”

DevOps 文化通过变更跟踪和版本控制技术来促进跨团队的协作,以便保持充分的透明度,改进变更管理,并简化系统恢复过程。对配置的修改都被记录下来,以获得一些详细信息,比如变更是什么时候发生的、谁请求进行变更以及变更的影响等。通过使用这种方法,开发和运维都可以对应用程序和基础设施的完整生命周期获得更深入的了解,这有助于促进更好的跨职能团队之间的沟通,以及更高的可靠性。

安全课堂:安全团队应该确保他们使用工具去收集来自所有系统的全面的数据,以保证可操作的“真实数据来源”是随时都可以得到的。现在大部分数据要么是孤立的,要么聚集在一个集中的SIEM (Security Information and Event Management,安全信息和事件管理)系统中,没有进行必要的建模来让它们具备可操作性。即使是在治理和合规性等需要审计线索的情况之外,捕捉对所有规则和配置、还有安全策略的变化,这有助于简化安全团队内的协作和问责制。安全从业人员平时可以每个人都专注于运行时安全生命周期的具体部分,从配置仪器到取证等等,但当出现安全事件的时候,他们仍然可以更容易地采取协调行动。

利用有镜像的、有主备的部署

蓝绿部署方法是经常被团队用来尽量减少停机时间的方法。这种技术使用两套相同的生产环境,即在任何给定的时间里,一套生产环境是在线服务的,另一套处于备用状态。新版本只在备用系统中进行测试。一旦变更得到了验证,就将启用备用系统,并将在线服务系统切换到备用状态。如果在验证过程中遇到任何未预料到的错误或运维问题,团队都能够安全地将最新版本回滚,无需对在线系统作出任何更改。

安全课堂:安全团队也可以应用相同的技术来为管理和安全更新打补丁。他们可以在把补丁发布到在线生产环境中之前,先在镜像系统对它们进行测试。比如,一些操作系统供应商现在使用了双重主备根分区来简化补丁管理,以在必要情况下,使系统具备安全回滚版本的能力。这还有额外的好处,那就是保证了更高的系统可用性,这从属于保密性、完整性和可用性(Confidentiality, Integrity, and Availability, CIA )的安全管理框架。安全团队可以利用这种方法来观察补丁的稳定性和有效性,这对生产环境很重要。他们可以在实施大规模发布之前就已经确保完全修复了安全问题。

结论

当今时代,各种规模的企业都在寻求更高的敏捷性和更快的速度,以加速数字化改造。通过采用DevOps,应用程序开发人员能够专注于自己最擅长的事情:创建和发布新软件。安全从业人员也应该继续专注于他们做得最好的事情:把攻击者阻挡在外。正如DevOps 的出现满足了新的业务需求一样,我们也需要安全领域内的新方法来应对由DevOps 推动的世界的挑战。这些新的安全方法自己必须与依赖于模块化、自动化、标准化、可审计性和镜像系统的DevOps 实践整合起来。通过将这五项DevOps 原则应用于新工具和新的工作流程,安全能够成为企业重要优势,有助于企业在今天快速变化的市场中获得成功。

作者简介

Wei Lien Dang是 StackRox 公司的产品副总裁。StackRox 公司是一家安全公司,它正在构建一个新的平台来为现代企业中的应用程序提供保障。此前,他是 CoreOS 公司的产品主管,并曾就职于亚马逊公司网络服务、Splunk 公司和 Bracket Computing 等公司,担任安全和云基础设施产品等高级产品管理职务。

阅读英文原文 Five Lessons Security Can Learn from DevOps

2017-02-03 16:032056
用户头像

发布了 152 篇内容, 共 71.3 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

面试官:如何保证本地缓存的一致性?

王磊

Java 面试

“无法打开应用,因为Apple无法检查其是否包含恶意软件“解决方法

Rose

苹果电脑重装系统教程

Rose

如何自定义Safari的起始页

Rose

精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(中)

洛神灬殇

Java 后端开发 JDK 动态代理 CGLIB 动态代理 2024年第十一篇文章

喜讯!矩阵起源子公司通过“国家高新技术企业”认定,引领数据库行业科技创新!

MatrixOrigin

数据库 分布式 云原生 MatrixOrigin MatrixOne

让 K8s 更简单!8款你不得不知的 AI 工具-Part 1

SEAL安全

开源 AI Kubernetes

替代关系型数据库 MAX 聚合函数的思路

alexgaoyh

MySQL 替代 聚合函数 最新数据 自关联

复杂经济时期下的企业财务规划战略

智达方通

全面预算 情景规划 企业财务规划 财务规划

APP加固原理与作用

苹果电脑Mac教程:如何开启任何来源选项

Rose

软件测试/测试开发/全日制/测试管理丨Appium Inspector

测试人

软件测试

【年后跳槽必看篇-非广告】老生常态之Spring AOP/IOC 实现原理

派大星

Java 面试 跳槽

运行Adobe应用提示非正版This non-genuine Adobe app has been disabled soon如何解决

Rose

adobe

2024年的第一场 MatrixOne Meetup 来啦!

MatrixOrigin

数据库 分布式 云原生 MatrixOrigin MatrixOne

解决苹果无线鼠标、键盘或触控板无法被 Mac 识别的方法

Rose

FCPX 插件无法使用?|Final Cut Pro X 插件不能使用出现叹号的解决办法

Rose

​万界星空科技MES系统如何进行产品的质量管理

万界星空科技

质量管理 MES系统 制造业 mes 制造业生产管理系统

我想做一款软件产品,应该怎么做?

天津汇柏科技有限公司

创新创业 产品原型设计软件

ByConity 社区回顾|ByConity 和开发者们一起展望未来,携手共进!

字节跳动数据平台

开源数据库 ByConity

使用Local Persistent Volume 部署有状态工作负载

华为云开发者联盟

Kubernetes 开发 华为云 华为云开发者联盟

第三方 Cookie 被禁用?企业该如何实现用户精准运营和管理

Authing

Cookie Authing 用户运营

从前端角度浅谈性能 | 京东物流技术团队

京东科技开发者

云厂商是什么意思?2024年知名云厂商有哪些?

行云管家

云计算 云服务 行云管家 云厂商

京东ES支持ZSTD压缩算法上线了:高性能,低成本 | 京东云技术团队

京东科技开发者

KaiwuDB × 风电企业 | 高性能、低成本、释放数据价值

KaiwuDB

数据库 解决方案

AI遇上传统文化,文心一言上央视带来跨时空访古体验

飞桨PaddlePaddle

人工智能 深度学习

Parallels Desktop 17 安装Windows 11 教程 附激活工具

Rose

Acrobat Pro DC 2023如何插入附件?Acrobat Pro DC添加附件方法

Rose

苹果电脑应用程序无法打开提示不明开发者或文件损坏的处理方法

Rose

数据采集在制造业中的应用场景

万界星空科技

数据采集 MES系统 设备管理 万界星空科技 生产管理

从DevOps中可供安全借鉴的五项经验_安全_Wei Lien Dang_InfoQ精选文章