在DevSecOps过程中引入JFrog Xray的最佳实践

开始在你的组织中实施DevSecOps流程

由扬•Chaysinh

简介

DevSecOps是一种相对“新的”文化,在软件开发生命周期的一部分,开发人员和运维人员都参与处理安全和遵从性问题(SDLC).从集成开发环境(IDE)中的第一行代码一直到将应用程序交付到生产。

实现一个好的DevOps的方法是很困难的,但是正确的开发DevSecOps是一个更大的挑战。DevSecOps具有广泛的范围,是在DevOps过程中集成不同安全实践的哲学。目标是最小化安全漏洞在可持续发展小组委员会的每一阶段。通过最近的SolarWinds漏洞,我们已经看到了有针对性的攻击对大型企业的影响。安全性不是一个孤立的问题,识别漏洞与软件开发密不可分。

开放源码软件(OSS)组件使用的持续增长,使代码库暴露在潜在的隐藏漏洞和许可证遵从性违反中。问题是……您如何在软件开发管道中安全地使用OSS组件,而不将生产代码置于风险之中。使用DevSecOps工具来监视和降低OSS组件中的风险软件组合分析(SCA)

JFrog Xray是软件组合分析(SCA)工具,它监视您的(OSS)包,并就安全性和遵从性提供洞察。它是不可分割的一部分JFrog DevOps平台,它与JFrog Artifactory本机集成,JFrog Artifactory存储和组织所有的软件构件。通过采用这两种解决方案中的最佳方案,您可以为您的软件工件实现安全性、遵从性和可追溯性。

本白皮书将指导您通过在组织中使用JFrog Xray实现DevSecOps流程的最佳实践。它包括以下三个部分:

  1. 通过采用推荐的存储库结构和依赖构建信息,增加JFrog Artifactory内工件的可追溯性。
  2. 通过在JFrog Xray中组织策略和监视来定义安全和许可证遵从行为规范。
  3. 将JFrog Xray集成到您的安全和遵从工作流中。

1.JFrog Artifactory:软件工件追溯

作为一个通用的工件存储库管理器,Artifactory允许您在存储库中组织工件,以便:

  • 在工件的生命周期中监视它们。
  • 了解在构建过程中使用了哪些依赖项版本。
  • 应用安全策略并基于特定的配置文件限制对构件的访问。

为了改善您的工件可追溯性,您需要一个好的存储库结构和构建信息。

库结构

有两种实现存储库组织的常见模式:

  1. 庞然大物构件库:所有团队共享相同的存储库。
    例如:

    • 1针对所有Java团队的远程存储库。
    • 1本地存储库来存储所有Docker映像。
  2. 专用构件库:每个团队都有自己的一套存储库来隔离他们自己的应用程序和依赖项。

下面是这两种模式在工件可追溯性方面的优点和影响。

庞然大物构件库

在开始使用Artifactory时,建议使用此模式。请记住,随着您参与的项目数量的增加,维护和实现工件可追溯性将变得更加困难。最终,您将需要切换到专用的工件存储库。

好处 影响
配置:

  • 设置速度非常快。
  • 多个团队使用的每个包类型都有一个远程存储库+一个本地存储库。
可跟踪性和安全:

  • 清理比较难执行,因为您不想删除已使用的依赖项。
  • 必须在存储库路径上实现访问限制,这在处理多个项目时很难维护。

专用构件库

如果您计划使用Artifactory作为中央存储库管理器在你的组织。它将允许您与您的组织一起扩展。

好处 影响
可追溯性

  • 每个项目的远程存储库:您知道消耗了哪些依赖项。

隔离

  • 在回购级别更容易保护和授予权限(而不是回购中的路径)。
配置

  • 要管理的存储库更多。

好的知道了!

建立信息

生成信息是生成代理收集的关于生成的所有信息。构建信息包括项目模块、构件、依赖项、环境和变量的列表。当使用JFrog客户端构建代码时,客户端可以收集构建信息并将其发布到Artifactory。当构建信息发布到Artifactory时,所有发布的细节都可以从Artifactory UI中访问。

好处 影响
可追溯性

  • 所有生成和使用的二进制文件都记录到这个材料清单(JSON文件)中。
配置

  • 修改CI管道。

好的知道了!

JFrog Artifactory的最佳实践

建议开发团队使用专用的存储库和构建信息。这保证了工件的完全可追溯性,包括:

  • 跟踪用于构建产品特定版本的依赖项版本。
  • 在软件的生命周期/交付过程中跟踪软件。
  • 根据范围(即项目、团队、工件成熟度级别)隔离工件,这在清理过程中非常有用!

了解更多关于Artifactory的最佳实践>

2.JFrog Xray:开源软件安全和遵从性

现在您已经组织好了Artifactory并可以完全跟踪工件,让我们看看如何通过使用Xray正确组织策略和手表来实现OSS安全流程。

JFrog Xray依赖以下特性来实现您的安全流程:

您可以根据组织的内部法律和法规遵循策略以及所选的安全流程定义一组策略和监视。

示例组织:

  • 每个开发项目都由一个发布经理/技术领导代表。
  • DevOps团队负责CI / CD工具
  • 安全团队负责实现安全流程。
  • DevOps和安全团队都是全球性的,或者有跨项目。
  • DevSecOps (DevOps +安全团队)实现安全流程。
  • 安全部门负责定义策略,DevOps在Xray中实现它们。

发布经理—DevOps工程师—安全工程师

组织策略将取决于您的内部安全流程。下面的违规工作流部分将详细介绍这一点。建议为每个项目和每个成熟度级别(跨项目)设置一个监视。

以下概述了两种类型的政策结构和模式:

  1. 全局策略,为整个组织设置。
  2. 专用的策略,每个项目/应用程序/团队设置。

模式1:企业级策略

该模式描述了对整个组织全局的策略。

如下图所示,企业级策略模式意味着项目A和B:

  • 有相同的定义高、中、低严重程度违规(具体CVSS评分范围)。
  • 使用相同的post动作,例如阻止下载或构建失败。

模式1 -企业级策略

建议做法:

  • 每个发布经理/技术领导都应该通过手表管理他们自己项目的违规(列出和忽略)。

跨项目监视帮助DevSecOps团队监视所有项目。

模式2:项目级策略

此模式描述专门用于特定项目的策略。

那些比内部项目更容易暴露的项目,例如面向internet的应用程序,需要更严格的安全策略。

如下图所示,项目级策略模式意味着DevOps团队构建基于每个项目/业务单元的独立策略并确保它们符合安全团队的指示。

模式2——项目级策略

建议做法:

  • 每个发布经理/技术领导通过手表管理他们自己项目的违规(列出和忽略)。
  • 跨项目监视帮助DevSecOps团队监视所有项目。
  • 每个项目的专用策略由DevSecOps团队创建和维护。

JFrog Xray的最佳实践

需要记住的其他指导方针:

  • REST API可以帮助您创建/更新/删除策略和监视。自动化创建和更新,并使用您自己的门户来限制对策略的访问。
  • 电子邮件清单:
    • 策略层——旨在通知策略管理人员(DevOps或安全团队)。
    • 监视级别——旨在通知项目级别的一组用户。
  • 考虑将忽略违规限制在您的发布经理或技术负责人的范围内,以确保它会得到适当的检查和处理。
  • 索引远程存储库将允许Xray扫描第三方依赖项,只要它们被开发团队请求。
  • 索引本地存储库将允许Xray在整个交付过程中扫描应用程序中使用的OSS,甚至在它们被部署到生产之后。
  • 索引构建信息将允许Xray在CI管道期间通知和/或失败构建,以防在构建或任何运行时依赖中发现违规。

了解有关Xray最佳实践>的更多信息

3.违反工作流程

请记住,JFrog Xray是一个软件组合分析(SCA)工具,而不是问题跟踪器。它绝对可以成为您的违规管理的一部分,但必须与其他工具集成,以完全覆盖您的安全和补救过程。

引入一个新的过程是令人兴奋的,同时也是具有挑战性的,因为您必须涵盖所有可能的工作流和用例。

以下是您的违规工作流应该解决的问题(非详尽的)列表:

  1. 何时以及如何通知用户违规?
  2. 谁应该审查违规行为?
  3. 你应该在哪里审查违规行为?
  4. 如何优先处理安全和违反法规的情况?
  5. 如何忽略违规?
  6. 何时/多久检查一次违规行为?和谁?
  7. 阻止还是不阻止下载?

请在下面的推荐部分查看这些问题的答案。

应该引入违规审查。它可以与敏捷方法论中的“sprint回顾”相比,因为它需要不同的参与者(即scrum管理员、开发团队、产品负责人),您必须在会议结束时遵守规则并采取行动。

利益相关者(即开发团队、安全团队、法律团队)之间的主要障碍包括:

  • 语言/术语
  • 优先级
  • 每个涉众的可用性

建议

1.何时以及如何通知用户违规

通过扫描依赖项尽快“左移”:

  • 使用Xray的IDE插件进行开发
  • 通过索引Artifactory远程存储库进行本地构建。
  • CI通过索引构建信息进行构建。
提示: x射线实现连续扫描,这意味着扫描是由事件触发的:

  • 新缓存到远程存储库的二进制文件
  • 新上传的二进制文件到本地存储库
  • 漏洞和许可证数据库更新。扫描将只影响受更新影响的二进制文件(没有完全扫描)

提示:虽然电子邮件和即时通讯工具(如微软团队的Slack)是很好的沟通媒介,但当发送数百个提醒时,它们可能不适合。在开发过程中,建议使用以下方法来警告开发人员:

  • IDE插件-最早识别许可证和漏洞!
  • CI集成——获取CI管道中所有违规行为的列表,并在必要时停止它。

提示:不要放慢开发团队的进度,不要在交付过程的任何主要步骤之前停止管道,例如在将PR合并到主/开发分支之前。

2.谁应该审查违规行为

开发人员可以通过IDE插件和CI扫描快速检测和分析漏洞和许可证违反,并修复它们。对于那些还没有修复或与遵从性相关的问题,您可能想让发布经理/技术负责人与安全团队一起处理它们,因为这些违反将需要更多的时间来调查。

为了不减缓开发阶段,可以忽略一段时间(休眠)或直到下一次扫描。

提示:在以下情况下实施清晰的工作流程:

  • 没有针对漏洞的补丁可用
  • 包装上没有附加许可证

提示:如果您想管理Xray中的违规,请确保将注释标准化想出一个模式。然后使用Rest API检索和筛选被忽略的违规列表。

3.你应该在哪里审查违规行为

JFrog Xray可以列出不同级别的违规:工件、构建信息、监视。但是,它的作用不是管理整个违规工作流,这可能更适合问题跟踪器。

例如,您的违规工作流可能导致在您的问题跟踪器中创建一个罚单:

  • 如果Xray没有提供关于安全违规的足够补救信息,或者无法检测到许可证,则可以在问题跟踪器中列出它们。

  • 因为x射线提出的任何违规。

你也可以使用JFrog平台内置报告对于可定制的评论。您可以通过UI和REST API以不同的格式(JSON、PDF、CSV)导出它们。

提示:使用以下REST API端点提取漏洞、许可、违规:

4.如何优先处理安全和违反法规的情况

首先开始检查更严重的违规。

观看这段视频x射线入职最佳实践>

5.如何忽略违规

JFrog Xray忽略规则允许您加入白名单,忽略或接受安全违规规则,以过滤掉不必要的违规噪音。

在Xray中查看违规可以在3个不同的级别上完成:观看、构建和工件。

一个监视包含多个资源(包括存储库、构建和发布包)的违规组合列表。2022世界杯阿根廷预选赛赛程尽管拥有所有违规的全局视图很方便,但在定义忽略违规时,您希望根据您要做的事情向下钻取到特定的视图。例如,要忽略特定构建号上的违规,您可以在构建级别创建一个忽略规则。

了解更多关于如何忽略违规>

6.何时/多久检查一次违规行为,与谁一起检查

您的项目越关键、越暴露,您可能就越想检查交付过程中的违规行为。Xray提供了违规的实时视图,您可以通过REST API轻松地提取它们。

7.阻止或不阻止下载

您的安全团队当然想要阻止任何具有安全威胁的工件。然而,这可能会大大减慢开发过程(并可能惹恼您的开发团队),因为阻塞依赖下载可能导致构建失败。

块下载可以在:

  • 远程存储库,以防止开发人员下载脆弱或不兼容的依赖项。
  • 本地存储库以防止将易受攻击的应用程序部署到运行时环境。

如果您希望阻止下载,那么一定要训练您的团队来检测这种行为!

提示:阻塞未扫描工件选项暂时阻塞工件,直到扫描完成。一定要设置正确当启用它。

结论

本白皮书提供了将JFrog平台(包括Artifactory和Xray)集成到组织中以实现和利用DevSecOps文化的指导方针。

您可以实现工件的完全可跟踪性,并使用JFrog平台构建安全流程。这可以通过采用正确的存储库结构并依赖Artifactory中的构建信息来实现。您还可以在JFrog Xray中组织策略和监视,以匹配您的内部安全性和遵从性结构。最困难的部分将是定义您的整个安全违反工作流,以在您的组织中实现DevSecOps,这将影响您的开发、运维、安全和合规团队。

无论您是已经在使用Artifactory和Xray,还是刚刚开始使用,都可以尝试一下这些DevSecOps最佳实践。

开始试验

快速释放,否则死亡