IBM Cloud Docs
collect-证据脚本

collect-证据脚本

collect-evidence 脚本可帮助采用者,用户和贡献者将其合规性数据发送到 DevSecOps 变更管理数据流 中。

该脚本执行以下任务:

  • 尝试将任何附件作为结果处理,并根据这些结果创建突发事件问题。 支持有限数量的工具输出格式。
  • 如果发现问题,那么脚本会评估其宽限期 (到期日期) 和免除状态。
  • 在证据锁定程序中创建证据资产。
  • 创建 证据 本身,并附加问题和提供的附件。

对于状态 successfailure,如果在 collect-evidence 中未传递任何附件,那么会将该特定任务和阶段的管道日志捕获为附件。

collect-evidence 脚本由管道提供。 不需要安装。 该脚本具有以下依赖关系:

  • bash
  • libstdc++ 共享库
  • libgcc 共享库

确保依赖关系安装在使用此工具来报告证据的基本映像中。

用途

脚本 collect-evidence 需要以下参数:

  • --tool-type
    提供证据数据的工具的标识。 例如: "owasp-zap-ui","cra"
  • --evidence-type
    证据类型的标识。 例如: com.ibm.image_vulnerability_scan, com.ibm.unit_tests
  • --asset-key
    Pipelinectl 资产中的键。 对于以下命令 load_artifact <key> 或者 load_repo <key>
  • --asset-type
    来自 pipelinectl 的资产类型,可以是下列其中一种类型: repo, artifact
  • --status
    证据状态,可以是下列其中一项: success, pending, failure
  • --assets 指定多个“资产-键”和“资产-类型”对。 例如,可以使用 --assets asset-key1:asset-type1 --assets asset-key2:asset-type2。 如果使用此选项,请勿单独指定 asset-key 和 asset-type。

以下参数是可选的:

  • --attachment
    要作为结果处理并附加到证据的文件。 可以为多个文件多次指定该参数。
  • --meta
    要添加到证据的任意元数据。 该参数接受“键 = 值”对,并且可以多次指定。
  • --additional-comment 在管道失败时添加到问题的注释。

使用以下命令获取帮助:

collect-evidence --help

返回值

collect-evidence 在 STDOUT ( successfailurepending 之一) 上输出求值的证据状态字符串。 此评估值取决于已处理的结果附件,发现的突发事件问题以及这些问题的可能补救,例如设置了到期日期或豁免标签。 有关更多信息,请参阅 事件问题

# example on how to read the output into a variable in bash

read -r status < <(collect-evidence "${evidence_params[@]}")

echo $status # success

用法示例

collect-evidence \
  --tool-type "sonarqube" \
  --evidence-type "com.ibm.static_scan" \
  --asset-type "repo" \
  --asset-key "app-repo" \
  --status "success" \
  --attachment ./sonarqube-result-1.json \
  --attachment ./sonarqube-result-2.json \
  --meta environment=staging

受支持的工具格式

当前实现当前支持以下工具 (作为 --tool-type 参数提供):

  • cra IBM Code Risk Analyzer
  • va Vulnerability Advisor for IBM Cloud Container Registry
  • gosec GoLang 安全扫描程序
  • xray JFrog Xray-漏洞扫描和容器安全性
  • owasp-zap OWASP 化攻击代理 (OWASP Zed Attack Proxy,ZAP)
  • owasp-zap-ui OWASP 化攻击代理 UI (ZAP UI)
  • sonarqube SonarQube 扫描
  • peer-review 同行评审扫描
  • twistlock TwistLock
  • mend Mend 扫描
  • checkov 检入扫描
  • cra-tf 针对 Terraform 的代码风险分析器
  • tfsec Terraform 安全扫描程序
  • fips-scanner Fips (联邦信息处理标准) 扫描程序
  • contrast-sast Contrast Sast (静态应用程序安全性测试)
  • detect-secrets 检测私钥
  • sysdig Sysdig 扫描

如果使用不受支持的工具类型调用 collect-evidence 脚本,那么该脚本不会尝试处理附件。 此外,将跳过问题处理,并且不会停止证据收集。

如果脚本从受支持的工具提供附件,但无法处理附件,那么将跳过问题处理,并且不会停止证据收集。

证据类型

您可以使用 --evidence-type 参数来设置证据类型。 您可以设置任何类型,但 IBM Cloud® Security and Compliance Center 支持以下证据类型:

  • com.ibm.unit_tests
  • com.ibm.detect_secrets
  • com.ibm.branch_protection
  • com.ibm.static_scan
  • com.ibm.code_vulnerability_scan
  • com.ibm.code_bom_check
  • com.ibm.code_cis_check
  • com.ibm.cloud.image_vulnerability_scan
  • com.ibm.cloud.image_signing
  • com.ibm.dynamic_scan
  • com.ibm.acceptance_tests
  • com.ibm.prod_change_request
  • com.ibm.close_change_reques

资产需求

使用此工具收集的证据是 V2 证据收集工作和相关证据锁定程序更新的一部分。

此新方法专注于基于资产的证据,这意味着通过对这些工件或存储库运行的扫描和测试将证据连接到工件和存储库,并生成证据结果。 例如:

  • 具有特定落实的存储库将变为已扫描的落实资产,从而为落实资产创建证据。
  • 使用相同的存储库和落实来构建映像。 该图像将成为与源资产,存储库和落实相关的资产。
  • 将扫描图像并创建证据。 所有扫描结果都通过证据,其资产以及相关资产进行连接。

要使所有这些功能协同工作,随参数 --asset-type--asset-key 提供的资产必须符合一些要求:

使用 save_repo 命令添加了 repo 个资产

检查 命令参考 以获取准确的用法信息。

必填字段:

  • url
    存储库 URL。
  • commit
    落实 SHA。

使用 save_artifact 命令添加了 artifact 个资产

检查 命令参考 以获取准确的用法信息。

必填字段:

  • name
    工件名称。 例如,对于映像,包括注册表,名称空间和映像 (示例: us.icr.io/team-images/service)。

  • digest
    工件摘要 (示例: sha256:a2292ed2b82c7a51d7d180c3187dbb0f7cc9ab385a68484c4f117e994acd6192)。

    需要对非图像的save_工件进行更改: 收集证据现在支持所有资产类型。 要收集证据以处理任何资产类型 save_artifact 应使用 type 显式保存资产,例如, zip
    save_artifact artifact-1 type=zip .... 在收集证据脚本中, asset-type 应该是工件,并从该工件中查询类型。 为了使此过程正常工作,可可储物柜资产添加已修改为添加任何类型的资产。 保存后,可按如下所示调用收集证据脚本:

    collect-evidence --tool-type toolType --evidence-type artifact --asset-key artifact-1 ...

    请参阅我们的样本应用程序,以获取 deployment type https://github.ibm.com/one-pipeline/hello-compliance-app 的样本实现

    通过这些更改,收集证据脚本将处理所有类型的工件,包括图像和非图像工件。

批处理证据收集

每个证据收集都涉及用于创建或检索资产的网络调用。 证据存储在证据存储库和 IBM Cloud Object Storage 存储区中 (如果已配置)。 这可能导致在 Git 服务器上达到速率限制。 为了最大限度减少对网络调用的需求,现在可以将证据保存到文件系统上,直到管道结束为止,并使用 可可锁定器证据发布 批量收集这些证据。 在证据收集时,证据不会保存在证据锁定器中,而是写入本地高速缓存以进行检索,并在稍后保存到锁定器。 因此,此时无法使用 cocoa locker evidence get 命令查看证据。 但是,在证据收集期间,附件 (如果有) 将保存到证据锁定程序,并且可以使用附件 URL 或 cocoa locker attachment get 命令进行查看。

此功能由标志 batched-evidence-collection 控制,缺省情况下在 CI,CD 和 CC 管道中启用。 您可以通过将环境属性 batched-evidence-collection 设置为 0 来将其禁用。

启用该标志后,请确保阶段映像包含 git,因为 git CLI 会保留文件系统中的证据,直到其发布为止。

收集中的多个资产-证据

通过使用收集证据,您可以为多个资产配置同时收集证据。 您可以使用 --assets 标志来启动证据收集,该标志指定多个“资产-键”和“资产-类型”对。 例如,input --assets asset-key1:asset-type1 --assets asset-key2:asset-type2。 如果选择此选项,请不要分别指示资产键和资产类型。

请记住有关多资产集合的以下关键点:

  • statusattachmenttool-typeevidence-typeupload-logs 在所有资产中都是常量。
  • 缺省情况下,当您指定多个资产时,证据处理将遵循旧流程。 如果指定单个资产,那么将通过特定于工具或附件的流进行证据处理。
  • 发生故障时,将针对每个资产创建问题。 成功重新运行证据收集后,将关闭这些问题。 闭包与您指定的资产相关。
  • 将生成单一证据文件,该文件具有包含所有组合资产的标识。