将JFrog Xray引入DevSecOps流程的最佳实践
开始在您的组织中实施DevSecOps流程
简介
DevSecOps是一种相对“新的”文化,开发人员和运维人员都参与处理软件开发生命周期内的安全和遵从性问题(SDLC).从集成开发环境(IDE)中的第一行代码开始,一直到将应用程序交付到生产。
实施良好的DevOps的方法是很困难的,但是让DevSecOps正确是一个更大的挑战。DevSecOps具有广泛的范围,是将不同的安全实践集成到DevOps流程中的理念。目标是最小化安全漏洞在可持续发展研究大纲的每个阶段。我们已经看到了有针对性的攻击可以对大型企业造成的影响,比如最近的太阳风泄密事件。安全不是一个孤立的问题,识别漏洞与软件开发是不可分割的。
开源软件(OSS)组件使用的持续增长,使代码库暴露在潜在的隐藏漏洞和违反许可法规的情况下。问题是……你如何在软件开发管道中安全地使用OSS组件,而不会将产品代码置于危险之中。监控和降低OSS组件中的风险是通过DevSecOps工具来处理的软件组合分析(SCA)。
JFrog Xray是一个软件组合分析(SCA)工具,它监视并提供关于安全性和合规性的对OSS包的洞察。它是不可分割的一部分JFrog DevOps平台,并且本机集成了JFrog Artifactory,用于存储和组织所有软件工件。通过充分利用这两种解决方案,您可以实现软件构件的安全性、遵从性和可追溯性。
本白皮书将指导您在组织中使用JFrog Xray实现DevSecOps流程的最佳实践。包括以下三个部分:
- 通过采用推荐的存储库结构和依赖构建信息,增加JFrog Artifactory中的工件的可追溯性。
- 通过在JFrog Xray中组织策略和监视来定义安全和许可证遵从行为规范。
- 将JFrog Xray集成到您的安全和合规工作流程中。
1.JFrog Artifactory:软件工件跟踪
作为一个通用的工件存储库管理器,Artifactory允许您在存储库中组织您的工件,以便:
- 在工件的生命周期中监视它们。
- 了解在构建过程中使用哪些依赖项版本。
- 应用安全策略,并根据特定的概要文件限制对工件的访问。
为了提高工件的可追溯性,您需要一个好的存储库结构和构建信息。
库结构
实现存储库组织有两种常见模式:
- 整体构件存储库:所有团队共享相同的存储库。
例如:- 1所有Java团队的远程存储库。
- 存储所有Docker映像的本地存储库。
- 专用的工件存储库:每个团队都有自己的一组存储库来隔离他们自己的应用程序和依赖项。
下面是这两种模式在工件可追溯性方面的优点和影响。
整体构件存储库
在开始使用Artifactory时,建议使用此模式。请记住,随着您参与的项目数量的增加,维护和实现工件可追溯性就会变得更加困难。最终,您将需要切换到专用的工件存储库。
| 好处 | 影响 |
配置:
|
可追溯性和安全性:
|
专用的工件存储库
如果您计划使用Artifactory作为中央存储库管理器在您的组织内。它将允许您与您的组织一起扩展。
| 好处 | 影响 |
可追溯性
隔离
|
配置
|
| 很高兴知道! |
建立信息
生成信息是生成代理收集的关于生成的所有信息。build-info包含项目模块、工件、依赖项、环境和变量的列表。当使用其中一个JFrog客户端构建代码时,客户端可以收集构建信息并将其发布到Artifactory。当构建信息发布到Artifactory时,所有发布的细节都可以从Artifactory UI中访问。
| 好处 | 影响 |
可追溯性
|
配置
|
| 很高兴知道! |
JFrog Artifactory的最佳实践
建议开发团队使用专用的存储库和构建信息。这保证了工件的完全可追溯性,包括:
- 跟踪用于构建产品特定版本的依赖项版本。
- 在软件的生命周期/交付过程中跟踪软件。
- 按范围隔离工件(即项目、团队、工件成熟度级别),这在清理过程中非常有用!
2.JFrog x射线:开源软件安全与合规
现在您已经组织了您的Artifactory,并且可以完全跟踪您的工件,让我们看看如何通过使用Xray正确组织策略和手表来实现您的OSS安全过程。
JFrog Xray依赖以下功能来实现您的安全流程:
您可以根据组织的内部法律和法规遵循策略以及所选的安全流程定义一组策略和监视。
示例组织:
- 每个开发项目都由一个发布经理/技术领导者代表。
- DevOps团队负责CI / CD工具。
- 安全团队负责实现安全流程。
- DevOps和安全团队都是全球性的,或者是跨项目的。
- DevSecOps (DevOps + Security团队)实现安全流程。
- Security负责定义策略,DevOps在Xray中实现它们。

组织策略取决于内部安全流程。下面的违规工作流部分将详细介绍这一点。建议为每个项目和每个成熟度级别(跨项目)设置一个监视。
以下概述了两种类型的策略结构和模式:
- 全局政策,为整个组织设置。
- 专门的政策,每个项目/应用程序/团队设置。
模式1:企业级策略
此模式描述了对整个组织全局的策略。
如下图所示,企业级策略模式意味着项目A和B:
- 共享相同的定义高、中、低严重违规(具体CVSS评分范围)。
- 使用相同的post动作,例如阻止下载或失败构建。

建议做法:
- 每个发布经理/技术领导者都应该通过监视来管理他们自己项目中的违规行为(列出和忽略)。
跨项目监视帮助DevSecOps团队监视所有项目。
模式2:项目级策略
此模式描述了专用于特定项目的策略。
那些比内部项目更暴露的项目,例如互联网前端应用程序,需要更严格的安全策略。
如下图所示,项目级策略模式意味着DevOps团队构建基于每个项目/业务单元的独立策略并确保他们遵守安全团队的指示。

建议做法:
- 每个发布经理/技术领导者通过监视来管理他们自己项目的违规(列出和忽略)。
- 跨项目监视帮助DevSecOps团队监视所有项目。
- 由DevSecOps团队创建和维护每个项目的专用策略。
JFrog x射线的最佳实践
需要记住的其他指导方针:
- REST API可以帮助您创建/更新/删除策略和手表。自动化创建和更新,并使用您自己的门户来限制对策略的访问。
- 电邮地址:
- 策略层——旨在通知策略管理人员(DevOps或安全团队)。
- 监视级别——旨在通知项目级别的一组用户。
- 考虑将忽略违规行为限制在发布经理或技术负责人的范围内,以确保它得到适当的检查和处理。
- 索引远程存储库将允许Xray在开发团队请求第三方依赖项时立即扫描它们。
- 索引本地存储库将允许Xray在整个交付过程中扫描应用程序中使用的OSS,即使它们已经部署到生产环境中。
- 索引构建信息将允许Xray在CI管道期间通知和/或失败构建,以防在构建或任何运行时依赖项中识别出违规。
3.违反工作流程
请记住,JFrog Xray是一个软件组合分析(SCA)工具,而不是一个问题跟踪器。它绝对可以作为违规管理的一部分,但必须与其他工具集成,以完全覆盖您的安全和补救过程。
引入一个新的流程是令人兴奋的,也是具有挑战性的,因为您必须涵盖所有可能的工作流和用例。
以下是一个(非详尽的)问题列表,您的违规工作流应该解决:
- 何时以及如何通知用户违规?
- 谁应该审查这些违规行为?
- 你应该在哪里审查违规行为?
- 如何优先考虑安全和遵从性违反?
- 如何忽略违规行为?
- 何时/多久检查一次违规行为?和谁一起?
- 阻止还是不阻止下载?
在下面的建议部分中可以看到这些问题的答案。
应该引入违规审查。它可以被比作敏捷方法中的“sprint回顾”,因为它需要不同的参与者(即scrum管理员,开发团队,产品所有者),你必须遵守规则并在会议结束时采取行动。
利益相关者(即开发团队、安全团队、法律团队)之间的主要障碍包括:
- 语言/术语
- 优先级
- 每个涉众的可用性
建议
1.何时以及如何通知用户发生违规
在以下过程中,通过扫描依赖项尽快“左移”:
- 使用Xray的IDE插件进行开发
- 通过索引Artifactory远程存储库进行本地构建。
- CI通过索引构建信息来构建。
提示: x射线实现连续扫描,这意味着扫描由事件触发:
|
提示:虽然电子邮件和即时通讯(如微软团队的Slack)是很好的沟通媒介,但当发送数百个提醒时,它们可能不适合。建议您在开发过程中使用以下内容来警告开发人员:
|
| 提示:不要放慢开发团队的速度,在交付过程的任何主要步骤之前停止管道,例如在将PR合并到主/开发分支之前。 |
2.谁应该审查这些违规行为
开发人员可以通过IDE插件和CI扫描快速检测和分析漏洞和许可证违规,并修复它们。对于那些还没有修复或与合规性相关的问题,你可能想让发布经理/技术负责人与安全团队一起处理它们,因为这些违规行为需要更多的时间来调查。
为了不降低开发阶段的速度,可以在一段时间内忽略违规(小睡)或直到下一次扫描。
提示:在以下情况下实施清晰的工作流程:
|
| 提示如果你想在Xray中管理违规,请确保你标准化了评论⇒想出一个模式。然后使用Rest API检索并过滤被忽略的违规列表。 |
3.你应该在哪里审查违规行为
JFrog x射线可以列出不同级别的违规:工件,构建信息,手表。但是,它的角色不是管理整个违规工作流,这可能更适合于问题跟踪器。
例如,您的违规工作流可能导致在您的问题跟踪器中创建一个罚单:
- 如果Xray没有提供足够的关于安全违规的补救信息,或者无法检测到许可证,您可以在问题跟踪器中列出它们。
或
- x射线公司提出的任何违规行为。
您可能还想使用JFrog平台内置报表用于可定制的评论。您可以通过UI和REST API以不同的格式(JSON、PDF、CSV)导出它们。
| 提示:使用以下REST API端点提取漏洞、许可和违规: |
4.如何优先考虑安全和遵从性违反
首先开始检查更严重的违规行为。
观看这个视频x射线入职最佳实践>
5.如何忽略违规行为
JFrog x射线忽略规则允许您白名单,忽略或接受安全违规规则,以过滤掉不想要的违规噪音。
在x射线中查看违规可以在3个不同的级别上完成:观看,构建和工件。
一个监视包含来自多个资源(包括存储库、构建和发布包)的违规的组合列表。2022世界杯阿根廷预选赛赛程尽管拥有所有违规行为的全局视图很方便,但在定义忽略违规行为时,您希望根据您要做的事情向下钻取到特定的视图。例如,要忽略特定构建号上的违规,您可以在构建级别创建一个忽略规则。
了解更多如何忽略违反>
6.何时/多久审查一次违规行为,与谁一起审查
您的项目越重要,暴露的越多,您可能就越想要检查交付过程中的违规。Xray提供了违规的实时视图,您可以通过REST API轻松提取它们。
7.阻止或不阻止下载
您的安全团队当然希望阻止任何具有安全威胁的工件。然而,这可能会大大减慢开发过程(并可能惹恼您的开发团队),因为阻止依赖项下载可能会导致构建失败。
可以在以下位置启用块下载:
- 远程存储库,防止开发人员下载易受攻击或不合规的依赖项。
- 本地存储库防止将易受攻击的应用程序部署到运行时环境。
如果您希望阻止下载,重要的是要确保训练您的团队检测这种行为!
| 提示:阻止未扫描工件选项临时阻塞工件,直到扫描完成。一定要正确设置启用时。 |
结论
本白皮书提供了将JFrog平台(包括Artifactory和Xray)集成到您的组织中以实现和利用您的DevSecOps文化的指导方针。
您可以通过JFrog平台实现工件的完全可追溯性,并构建一个安全流程。这可以通过采用正确的存储库结构并依赖于Artifactory中的构建信息来实现。您还可以在JFrog Xray中组织策略和手表,以匹配您的内部安全和合规结构。最困难的部分将是定义您的整个安全违规工作流,以在您的组织中实现DevSecOps,这将影响您的开发、运维、安全和合规团队。
无论你是已经在使用Artifactory和Xray,还是刚刚开始,都可以尝试一下这些DevSecOps最佳实践。
开始试验
