collect-证据脚本
collect-evidence
脚本可帮助采用者,用户和贡献者将其合规性数据发送到 DevSecOps 变更管理数据流 中。
该脚本执行以下任务:
- 尝试将任何附件作为结果处理,并根据这些结果创建突发事件问题。 支持有限数量的工具输出格式。
- 如果发现问题,那么脚本会评估其宽限期 (到期日期) 和免除状态。
- 在证据锁定程序中创建证据资产。
- 创建 证据 本身,并附加问题和提供的附件。
对于状态 success
或 failure
,如果在 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 ( success
,failure
或 pending
之一) 上输出求值的证据状态字符串。 此评估值取决于已处理的结果附件,发现的突发事件问题以及这些问题的可能补救,例如设置了到期日期或豁免标签。 有关更多信息,请参阅 事件问题。
# 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 Analyzerva
Vulnerability Advisor for IBM Cloud Container Registrygosec
GoLang 安全扫描程序xray
JFrog Xray-漏洞扫描和容器安全性owasp-zap
OWASP 化攻击代理 (OWASP Zed Attack Proxy,ZAP)owasp-zap-ui
OWASP 化攻击代理 UI (ZAP UI)sonarqube
SonarQube 扫描peer-review
同行评审扫描twistlock
TwistLockmend
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
。 如果选择此选项,请不要分别指示资产键和资产类型。
请记住有关多资产集合的以下关键点:
status
,attachment
,tool-type
,evidence-type
和upload-logs
在所有资产中都是常量。- 缺省情况下,当您指定多个资产时,证据处理将遵循旧流程。 如果指定单个资产,那么将通过特定于工具或附件的流进行证据处理。
- 发生故障时,将针对每个资产创建问题。 成功重新运行证据收集后,将关闭这些问题。 闭包与您指定的资产相关。
- 将生成单一证据文件,该文件具有包含所有组合资产的标识。