Connect(); 2016

第 31 卷,第 12 期

此文章由机器翻译。

ALM 和 DevOps - 使用 Rugged DevOps 提升安全性和交付产品

通过 Jean-marc Prieur, ,Sam Guckenheimer;2016

安全性可以是一个可怕的主题。根据 Microsoft 安全性智能报告 (bit.ly/2drid6a)、 上一年的报告计算机 17.9%遇到安全威胁。和紧急性来保护是比以往更高版本。造成威胁是几乎总是天或更少,如果不分钟或更少,Verizon 中查找其"2016年数据破坏调查报告"(vz.to/2dnpNk8)。

通常是让人察觉的冲突 DevOps 实践,其目的在于速度,并强调完整性的安全做法。不一定存在冲突。事实上,许多供应商一直在使 DevOps 管道更加安全。这是向 Rugged DevOps 移动的一部分。本文讨论了通过 Visual Studio Team Services (VSTS) 市场上最新可用的四个扩展。

让我们来举 Rugged DevOps 管道的概述 (请参阅 图 1)。

Rugged DevOps 工作流
图 1 Rugged DevOps 工作流

Rugged DevOps 管道的目标是允许开发团队能够快速而又不中断操作通过将不需要的漏洞引入转。有关实现 Rugged DevOps 的团队的案例研究,请参阅"DevOps Handbook"(IT 革命 Press,2016年) 通过基因 Kim Jez 谦卑一章 22 Patrick Debois 和 John Willis (bit.ly/2dUXJW3)。

程序包管理

就像一个团队使用版本控制作为单个事实来源当前的源代码,则可以作为二进制组件的唯一源依赖程序包管理器。通过使用的二进制程序包管理,开发团队可以创建不仅本地缓存的已批准的组件,但也使此持续集成 (CI) 管道的受信任的源。包管理 — — 现在,在 VSTS 和即将到 Team Foundation Server (TFS) — 是不可或缺的组成部分组件工作流。从 Visual Studio 市场均提供了包管理扩展 (bit.ly/1VLXIzG)。

OS 组件角色

开发人员在目前,大大提高工作效率比以往任何时候,由于可重复使用的开放源代码软件 (OSS) 组件的广泛的可用性。现在有了实用的方法要重复使用,请在 Windows 和.NET 核心和 Node.js 等的 Linux 上的可用运行时。一次工作效率的重用 OSS 附带风险被重复使用的依赖关系将安全漏洞。例如,thesnyk.io 服务声明其用户 76%由于它们使用的 Node.js 包的版本的应用程序中查找安全漏洞。 

在 OS 世界中,有是新概念,有时也称为软件组合分析 (SCA) 所示 图 2。所涉及的方案如下︰

作为开发人员或开发组长,当我使用操作系统组件,创建一个依赖项或使用依赖关系,我想要为︰ 开头以避免任何旧漏洞或许可证滥用; 正确版本验证他们实际上是正确的二进制文件的此版本;在发布管道中,验证以确保它们正确并保持可跟踪物料清单; 的二进制文件出现一个漏洞,立即收到通知并可以更正并重新以防止任何安全漏洞或从被重复使用的软件许可证滥用的自动部署。

安全地创建开放源依赖项
图 2 安全地创建开放源依赖项

现在提供了用于管理操作系统使用 VSTS 和 TFS 的服务的两个供应商为 WhiteSource 和 Veracode。在 Visual Studio 应用商店中具有可用扩展。 

解决方案特别推荐︰ WhiteSource 扩展 VSTS 和 TFS

对于使用外部软件包小组,WhiteSource 扩展专门介绍开源安全性、 质量和许可证符合性的问题。在其中大多数违反目标已知组件中的已知的漏洞的世界里,这是使用开放源代码的基本安全机制。我们将讨论某些功能。

连续检测到中的所有打开源组件软件 WhiteSource 扩展 (bit.ly/2dEMCC0) 将自动检测所有的开放源代码组件 — 包括及其可传递的依赖关系 — 每次运行生成。这意味着您可以根据您运行的最后一个生成分钟内,生成全面的清单报告 (请参阅 图 3)。它还使您的安全、 DevOps 和法律团队了解您的组织的软件开发过程的完整可见性。

WhiteSource 组件清单
图 3 WhiteSource 组件清单

上打开源安全漏洞和他们解决了警报 WhiteSource 当发现新的安全漏洞时,自动将生成警报,并提供目标的修正指南 (请参阅 图 4)。这可能包括修补程序、 修补程序、 相关的源文件和甚至建议,以更改系统配置,以阻止攻击的链接。 

WhiteSource 检测到的易受攻击的组件
图 4 WhiteSource 检测到的易受攻击的组件

自动强制实施打开源安全和许可证法规遵从性策略 根据公司的策略,WhiteSource 自动批准、 拒绝或触发手动批准过程每次新的开放源组件添加到内部版本。开发人员可以根据的参数,如安全漏洞严重性设置的策略、 许可证类型或库的年龄。只要开发人员尝试添加一个有问题的开放源代码组件时,该服务将发送警报,算做构建失败。

为了搜索联机存储库,例如 GitHub 和 Maven 中央,WhiteSource 还提供了创新性浏览器扩展插件。即使之前选择一个新组件,开发人员可以看到其安全漏洞、 质量和许可问题,并且它是否适合公司的策略。

解决方案特别推荐︰ VSTS 的扩展插件︰ 增强静态代码分析程序 (SCA)

HPE 安全增强 SCA 提供静态分析测试通过 VSTS 和 TFS 的应用程序安全 (bit.ly/2dEWEOW)。这使得软件安全性无缝帮助开发人员查找前面的 DevOps 生命周期的安全漏洞的编码过程的一部分。

增强 SCA 提供了一套全面的软件安全分析工具搜索的安全方面的编码规则和准则的冲突。开发组和安全专业人员利用它来分析应用程序的安全问题的源代码 (请参阅 图 5)。增强 SCA 标识的软件安全漏洞的根本原因并提供了准确、 风险排名结果与代码行的修正指南。

Visual Studio 团队服务生成任务 HPE 安全增强 SCA
图 5 Visual Studio 团队服务生成任务 HPE 安全增强 SCA

增强在请求还提供了应用程序作为一项服务 (SaaS) 的安全性。增强点播任务自动静态和动态扫描将请求提交到应用程序 SaaS 平台 (请参阅 图 6)。执行静态评估项目上载到 Fortify 点播。对于动态评估 Fortify 按需使用应用程序的预配置的 URL。

HPE 安全增强上需漏洞检测
图 6 HPE 安全增强上需漏洞检测

平衡速度和深度

在过去,安全扫描时通常执行也许只是一次每个发行"over 墙上"活动。这将创建一种可怕模式安全专家们找到大批问题在完全开发人员何时将其忽略,并释放大多数压力下的时间。Rugged DevOps 致力于使所有质量活动 — 其中也包括安全性 — 持续、 自动。

所有扩展此处所述完全可以扫描团队的源代码。有多个点来集成扫描到团队的工作流。

拉取请求 (Pr) 是开发运营团队提交更改的方式。之前 PR,开发人员需要能够查看代码更改的效果并确信它们将合并正确和不引入新的问题。在开发运营流程中,每个 PR 是通常很小,合并是连续的因此代码的 master 分支可以保持最新。理想情况下,开发人员可以检查之前提供的安全问题WhiteSource 简化此操作用于验证其二进制指纹; 的依赖项Checkmarx 提供的更改,为增量扫描并且 Veracode 具有开发人员沙箱的概念。这些方法允许开发人员将它们提交之前进行实验性更改。

同样,CI 需要优化速度,请向开发团队的任何生成中断的即时反馈。一样的 PR 流动,速度也相当快的扫描时它可以并应该集成到 CI 生成定义。扫描失败可以中断生成,并且可以立即修复安全问题要将生成恢复为绿色。

一次,持续交付 (CD) 需要全面。在 VSTS,CD 通常通过跨环境,或通过可以计划的其他生成定义进度生成输出任一版本定义管理 — 可能每日-而不是触发与每个提交。在任一情况下,定义可以执行较长的静态分析扫描 (请参阅 图 7)。可以扫描完整的代码项目,并且任何错误或警告评审脱机而不会阻止 CI 流。

生成定义可能会触发静态分析扫描代码的源代码
图 7 生成定义可能会触发静态分析扫描代码的源代码

解决方案特别推荐︰ VSTS 的 Checkmarx 扩展

VSTS 的 Checkmarx 扩展插件 (bit.ly/2dVyuDg) 允许开发人员不仅扫描所有源代码,而且还可以只需都扫描新的或修改代码。此增量的扫描功能是 CI 环境中的开发人员的主要推动者,因为它可以扫描时间从几小时减少到只有几分钟。

分析完成后,Checkmarx 提供了一个简洁的报告,详细列出 VSTS 项目摘要页上,这样,开发人员以解决并减少漏洞扫描生成的代码的安全状况 (请参阅 图 8)。

Visual Studio Team Services 生成报表与 Checkmarx 扫描结果
图 8 Visual Studio Team Services 生成报表与 Checkmarx 扫描结果

Checkmarx 还提供了开发人员提供"最佳修复位置",以尽可能减少修正的时间。这包括数据数据流关系图,该值指示在代码以处理在一行代码中的数据流中的多个漏洞的理想位置的可视图表 (请参阅 图 9)。

Checkmarx 最佳修复位置中的数据的流图
图 9 Checkmarx 最佳修复位置中的数据的流图

使用规则自定义,开发团队还可以修改现有漏洞检测预设查询以增强检测和准确性。Checkmarx 描述简单的 C# 语法中的规则。

安全代码只是一部分的图片

安全代码都是有必要,但并不足够,以实现 Rugged DevOps。Verizon"2016年数据违反智能报告"清楚地技术熟练的罪犯使用危害它们的目标的多个攻击媒介。除了保护您的代码,则需要保护凭据和机密。具体而言,仿冒网站变得更复杂。

有几个团队应该用于保护自己,我们将讨论的操作实践。

身份验证和授权 使用多重身份验证,即使跨内部域并在实时管理,例如 PowerShell 只是足够管理 (JEA),以防止特权提升 (aka.ms/jea)。如果一组凭据被盗,为不同用户帐户不同的密码将限制造成的损害。

使用 CI/CD 释放管道 执行此操作以重新生成基础结构,以便发布管道和节奏也可以包含损坏。如果代码与 Azure 资源管理器管理基础结构或使用 Azure PaaS 或类似的服务,则管道会自动创建新的实例和销毁它们,让攻击者没有地方可以隐藏在您的基础结构 (bit.ly/2dEY5wR)。VSTS 将加密在管道中,机密信息和其他凭据一样,应轮换的密码。

拥有管理权限, 这样做可以安全使用基于角色的访问控制的管道,就像您的源代码。要控制哪些用户可以编辑生成和发布定义将用于生产。

动态扫描 这是测试与已知的攻击模式运行的应用程序的过程。例如,OWASP Zed (bit.ly/1fjloVy) 是一个流行的开放源动态扫描程序检查该 owasp.orgtracks 所依据的主要安全漏洞。提供动态扫描服务,以及两个伙伴 HPE 安全性和 Veracode,这篇文章所述。

监视生产 这是关键的 DevOps 实践。用于检测入侵与相关的异常的专用的服务被称为安全信息和事件管理。Azure 安全中心重点介绍与 Azure 云相关的安全事故 (bit.ly/2dzcj5r)。

解决方案特别推荐︰ VSTS 的 Veracode 扩展

Veracode 应用程序的安全平台是 SaaS 使开发人员能够自动扫描安全漏洞的应用程序。 Veracode 提供静态的应用程序安全性测试 (SAST) 动态应用程序安全性测试 (DAST) 和 SCA,允许开发团队能够评估第一方代码和安全风险度的第三方组件 (请参阅 图 10)。

Visual Studio Team Services 生成报表与 Veracode 扫描结果
图 10 Visual Studio Team Services 生成报表与 Veracode 扫描结果

Veracode VSTS 扩展 (bit.ly/2dme4Vr) 允许团队将其应用程序的持续、 自动评估配置为从其 CI/CD 管道的生成或发布步骤。此外可以配置的生成或发布步骤将自动停止生成或基于应用程序安全策略,允许开发人员集成安全测试,到完全自动化的 CD 管道的版本。此外,还提供 Veracode"开发人员沙箱"扫描提供结果的单个开发人员的更改之前提交。 

为什么将集成到 DevOps 管道 Security 扫描?

因为它现在是可行的。通过在 VSTS 应用商店中的新扩展,可以使安全扫描连续团队的发布管道的一部分。与不同的是在过去,当扫描已很少,并且生成墙上的权限在发布之前的问题,您可以解决警告和错误发生时。通过解决小批中的安全警告-用每个 PR 或甚至每天都在 — 可以不断地在进程和地址的组件和代码安全性减少的工作量。

为了优化速度,DevOps 提升右侧左移的想法。换而言之,任何值得这样做,都值得尝试连续作为 DevOps 流的一部分。如果进行了更改,使它们和版本他们使用代码。这将创建一个可信源︰ 源存储库和受信任的包管理存储区。只要您更新就更新单个事实来源。

根据该 2016年"状态的 DevOps 报告"(bit.ly/28NI32i) 从 Puppet,高执行者,除了更高的灵活性和可靠性结果,也有更好的安全结果。通过将信息安全 (InfoSec) 目标集成到为 Dev 和 Ops 的日常工作,它们花费 50%修正安全问题更少的时间。如果到 DevOps 管道集成安全性,则可以创建、 测试和部署更新的自动方法。这将缩短您的时间,当新漏洞的发现时,修复。安全更新变得就像其他更新一样,可以遵循相同的自动的流程。

做法使重用安全。时持续扫描包,可以依赖于它们,并知道您不拿起其安全漏洞。此外,当在自然环境中发现了新漏洞,您可以立即收到通知使安全性智能变为可操作。您可以选取新的包版本、 根据需要修改您的代码、 测试和发布 — 而无需等待攻击者能够发现受到攻击的可能性。

通过打破孤岛开发和运营之间启动 DevOps。现在,您可以细分的下一步墙,DevOps 和 InfoSec 之间。而不是构建安全债务,需要予以解决太晚,您可以防止它逐渐扩大到管道。

这些优点组合可帮助您速度更快。通过将安全自动化集成到你的管道,您可以将其用作快捷键。毕竟,不良分子会为简单的目标。如老笑话有这个功能,如果正在使用中森林和玩具熊的露营参与方将显示、 不玩具熊没有,您需要但玩具熊的其他潜在的猎物。


Sam Guckenheimer 适用于 Visual Studio 云服务。 他是敏捷开发实践的三个书籍的作者和电子书中有关 Visual Studio 团队服务迁移到云节奏。与他联系。 samgu@microsoft.com 或在 Twitter 上︰ @samguckenheimer


Jean-marc Prieur 是在 Microsoft 构想和推动传递体验 Visual Studio 中的高级项目经理,Visual Studio 团队服务重点是控制技术债务,包括体系结构分析工具。 与他联系。 jmprieur@microsoft.com 或在 Twitter 上︰ @jm_prieur

衷心感谢以下技术专家对本文的审阅: Amit Ashbel、 Michael 右、 Joanna Rosenberg 和 Maya Rotenberg
Amit Ashbel,Checkmarx,Michael 右高级产品经理-在产品营销总监增强在 HPE 安全性,Joanna Rosenberg 解决方案营销副 Veracode 和 Maya Rotenberg,h e a d 营销部 WhiteSource。