【jenkins】Synopsys Detect入门简介

1、Synopsys Detect 的基本工作原理

Synopsys 检测运行

通常,它由 Synopsys Detect 检测器组成,该检测器使用项目的包管理器导出软件项目中的依赖层次结构,运行 Black Duck 签名扫描仪,并将结果上传到 Black Duck 进行分析。

检测脚本

Synopsys Detect脚本的主要功能是下载并执行 Synopsys Detect JAR 文件,从而启用扫描。

您可以使用以下命令下载并运行最新版本的 Synopsys Detect,然后添加属性以优化指令。

# Windows
powershell "[Net.ServicePointManager]::SecurityProtocol = 'tls12'; irm https://detect.synopsys.com/detect.ps1?$(Get-Random) | iex; detect"
 
# Linux/MacOs
bash <(curl -s https://detect.synopsys.com/detect.sh)

检测 JAR

通过使用特定的 Synopsys Detect JAR,您可以直接控制您使用的 Synopsys Detect 版本,而不是使用自动运行最新版本的脚本。

检测工具

运行检测工具以启用代码扫描。

运行的默认工具是:

  • 检测器 ( --detect.tools=DETECTOR )
    检测器工具运行适当的检测器,这些检测器用于通过使用包管理器检查来查找和提取依赖项。

  • Black Duck Signature Scanner ( --detect.tools=SIGNATURE_SCAN )
    Black Duck Signature Scanner 工具在提供 Black Duck 连接详细信息时默认运行。对构建的项目执行文件/文件夹(签名)扫描,以检查开源软件的所有项目文件。

  • 其他检测工具(例如 Docker Inspector 或 Black Duck Binary Analysis)默认情况下不会运行,但您可以使用命令行上的属性添加它们。

  • Detect tools

    The available Synopsys Detect tools in order of execution with the corresponding detect tools property value specified as follows:

  • Polaris is deprecated

  • Docker Inspector 
    --detect.tools=DOCKER

  • Bazel 
    --detect.tools=BAZEL

  • Detector 
    --detect.tools=DETECTOR
    The detector tool runs any applicable detectors.

  • Black Duck Signature Scanner 
    --detect.tools=SIGNATURE_SCAN

  • Black Duck Binary Analysis 
    --detect.tools=BINARY_SCAN

  • Vulnerability Impact Analysis
    --detect.tools=IMPACT_ANALYSIS

要排除特定工具,请使用以下命令

--detect.tools.excluded={comma-separated list of tool names, all uppercase}

注:排除优先于包含

  • 探测器

    Synopsys Detect 使用检测器从所有受支持的包管理器中查找和提取依赖项。例如,默认运行的 Maven 检测器对 Maven 项目执行 mvn dependency:tree 命令并导出依赖信息,该信息可以发送给 Black Duck。

    默认情况下,所有检测器都可以运行。实际运行的检测器集取决于项目目录中存在的文件,

要将符合条件的检测器限制在给定列表中,请使用以下命令

--detect.included.detector.types={comma-separated list of detector names}

要排除特定检测器,请使用:

detect.excluded.detector.types={comma-separated list of detector names}

Synopsys Detect 脚本的主要功能是下载和执行 Synopsys Detect .jar 文件。可以配置脚本功能的几个方面,包括:

运行 Synopsys Detect 脚本的主要原因是脚本的默认行为是运行最新版本的 Synopsys Detect .jar 文件 必要时为您下载。以这种方式运行时,Synopsys Detect 会自动更新;一旦有新版本可用,新版本就会自动运行,除非您覆盖此默认行为。

直接运行 Synopsys Detect .jar的主要原因是这种方法可以直接控制 Synopsys Detect 版本;Synopsys Detect 在这种情况下不会自动更新。

  • 检查员

    当包管理器需要集成或嵌入式插件才能工作时,检测器会使用检查器。例如,Gradle 使用检查器作为执行自定义任务的插件。大多数探测器不需要检查员。

    扫描和项目

    检测扫描映射到一个项目。一个项目版本可以映射多个扫描,这样就可以将多个单独的文件夹及其扫描结果映射到一个聚合项目版本中。

    BDIO 

    Synopsys Detect 在 Black Duck 输入输出 (BDIO) 格式文件中生成 Black Duck 的依赖关系信息。 

    漏洞影响分析

    当 Synopsys Detect 中的 --detect.impact.analysis.enabled 属性设置为 true 时,Synopsys Detect 会创建一个调用图(您的代码进行的调用列表)以了解您的代码在应用程序中使用的公共方法。调用图显示完全限定的公共方法名称以及调用函数的行号。数据打包成一个文件,Synopsys Detect 通过 HTTPS 将文件发送到 Black Duck 服务器。

  • 选择构建模式或无构建模式。

    构建模式

    在默认的构建模式下,Synopsys Detect 应作为项目构建环境中的构建后步骤执行。在运行 Synopsys Detect 之前构建您的项目通常需要检测器成功运行,并有助于确保构建工件可用于签名扫描。

    无构建模式

    在无构建模式下,Synopsys Detect 会尽最大努力发现依赖关系,而无需借助构建工件或构建工具。在无构建模式下,Synopsys Detect 不需要作为构建后步骤运行。无构建模式的结果可能不如构建模式的结果准确。

  • 选择运行方法

    Synopsys Detect 有两种运行方式:

  • 运行 Synopsys 检测脚本。

  • 运行 Synopsys Detect .jar文件。

  • 要下载/运行的 Synopsys Detect 版本;默认情况下,最新版本。

  • 下载位置。

  • 在哪里可以找到 Java

离线模式

如果您没有 Black Duck 实例,或者您的网络出现故障,您仍然可以在离线模式下运行 Synopsys Detect。在离线模式下,Synopsys Detect 创建 BDIO 内容和试运行 Black Duck 签名扫描输出文件,而不尝试将它们上传到 Black Duck。您可以使用离线模式属性在离线模式下运行 Synopsys Detect。

BDIO 格式

Synopsys Detect 在 Black Duck 输入输出 (BDIO) 格式文件中生成 Black Duck 的依赖关系信息。Synopsys Detect 可以生成两种格式的 BDIO 文件:

  • BDIO 版本 1
    Black Duck 2018.12.4 之前的版本仅接受 BDIO 1。默认情况下,Synopsys Detect 生成 BDIO 1 文件。

  • BDIO 版本 2
    Black Duck 版本 2018.12.4 及更高版本接受 BDIO 1 或 BDIO 2。使用 BDIO2 enabled 属性选择 BDIO 2 格式。

Synopsys Detect 的下载位置

The following are download locations for Synopsys Detect:

air-gap mode

To run Synopsys Detect on an air-gapped computer or network, you must first download and install files that Synopsys Detect normally downloads as it runs. These include inspectors for Docker, Gradle, and NuGet.

Air gap archives are available for download from the Synopsys SIG Artifactory server.

Creating an air-gap archive

As an alternative, you can create an air gap archive by running Synopsys Detect with the -z or --zip command-line option. The archive created contains the Synopsys Detect .jar and the inspectors. 
The -z or --zip command-line option creates an air gap zip that you can use with the detect.*.air.gap.path arguments for running Synopsys Detect offline.
Optionally you can follow --zip with a space and an argument (for example: --zip GRADLE) to customize the air-gap zip.
Possible values are as follows:

  • ALL (produce a full air gap zip; the default)

  • NONE

  • NUGET (include only the NUGET inspector)

  • GRADLE (include only the GRADLE inspector)

  • DOCKER (include only the Docker Inspector)

Running in air-gap mode

Before running Synopsys Detect in air-gap mode, unzip the air-gap archive to create the air gap directory.

  • To run Synopsys Detect in air-gap mode, invoke the Synopsys Detect .jar file at the top level of the air gap directory.
    Refer to Running the Synopsys Detect .jar for more information.

  • To run Synopsys Detect using the Gradle inspector, set the Gradle Inspector air gap path.

  • To run Synopsys Detect using the NuGet inspector, set the NuGet Inspector air gap path.

  • To run Synopsys Detect using the Docker inspector, set the Docker Inspector air gap path.

Status File for Synopsys Detect

从检测 6.2.0 开始,将在运行文件夹中创建一个名为status.json的输出状态文件,  旨在以机器可读的格式总结检测运行。

该文件包括状态代码、遇到的问题和产生的结果。随着其他进程使用此文件,将添加其他信息。该格式旨在随着时间的推移而发展。

当 Detect 关闭时,默认情况下,它会执行清理操作,包括删除状态文件。您可以通过设置禁用清理 --detect.cleanup=false

Status File for Detect 6.9.0 - Integrations Archive - Confluence

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值