第 2 章 在 web 控制台中设置 OpenShift Pipelines 以查看软件交换链安全元素
使用 Developer 或 Administrator 视角创建或修改管道,并查看项目中的软件交换链安全元素。
设置 OpenShift Pipelines 以查看:
- 项目漏洞 :可视化表示项目中的漏洞。
- Software Bill of Materials (SBOMs): 下载或查看 PipelineRun 组件的详细列表。
另外,满足 Tekton Chains 要求的 PipelineRuns 会在其名称旁边显示签名徽标。此徽标表示管道运行执行结果安全签名并存储,例如在 OCI 镜像中。
图 2.1. 签名的徽标
只有在您配置了 Tekton 链时,PipelineRun 才会在其名称旁边显示签名徽标。有关配置 Tekton 链的详情,请参考 为 OpenShift Pipelines 提供链安全使用 Tekton 链。
2.1. 设置 OpenShift Pipelines 以查看项目漏洞
PipelineRun 详情页面提供标识的漏洞的可视化表示,它们按严重性(critical、high、medium 和低)进行分类。这种简化的视图有助于优先考虑和修复工作。
图 2.2. 查看 PipelineRun
详情页中的漏洞
您还可以查看管道运行列表视图页面中的 Vulnerabilities 列中的漏洞。
图 2.3. 查看 PipelineRun
列表视图中的漏洞
从 OpenShift Container Platform 版本 4.15 开始,提供了识别的漏洞的可视化表示。
先决条件
- 已登陆到 web 控制台。
- 在项目中拥有适当的角色和权限, 可在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您有一个现有的漏洞扫描任务。
流程
- 在 Developer 或 Administrator 视角中,切换到您希望漏洞视觉表示的相关项目。
更新您的现有漏洞扫描任务,以确保它将输出存储在 .json 文件中,然后以以下格式提取漏洞概述:
# The format to extract vulnerability summary (adjust the jq command for different JSON structures). jq -rce \ '{vulnerabilities:{ critical: (.result.summary.CRITICAL), high: (.result.summary.IMPORTANT), medium: (.result.summary.MODERATE), low: (.result.summary.LOW) }}' scan_output.json | tee $(results.SCAN_OUTPUT.path)
注意您可能需要为不同的 JSON 结构调整 jq 命令。
(可选)如果您没有漏洞扫描任务,以以下格式创建一个:
使用 Roxctl 的漏洞扫描任务示例
apiVersion: tekton.dev/v1 kind: Task metadata: name: vulnerability-scan 1 annotations: task.output.location: results 2 task.results.format: application/json task.results.key: SCAN_OUTPUT 3 spec: results: - description: CVE result format 4 name: SCAN_OUTPUT steps: - name: roxctl 5 image: quay.io/roxctl-tool-image 6 env: - name: ENV_VAR_NAME_1 7 valueFrom: secretKeyRef: key: secret_key_1 name: secret_name_1 env: - name: ENV_VAR_NAME_2 valueFrom: secretKeyRef: key: secret_key_2 name: secret_name_2 script: | 8 #!/bin/sh # Sample shell script echo "ENV_VAR_NAME_1: " $ENV_VAR_NAME_1 echo "ENV_VAR_NAME_2: " $ENV_VAR_NAME_2 jq --version (adjust the jq command for different JSON structures) curl -k -L -H "Authorization: Bearer $ENV_VAR_NAME_1" https://$ENV_VAR_NAME_2/api/cli/download/roxctl-linux --output ./roxctl chmod +x ./roxctl echo "roxctl version" ./roxctl version echo "image from pipeline: " # Replace the following line with your dynamic image logic DYNAMIC_IMAGE=$(get_dynamic_image_logic_here) echo "Dynamic image: $DYNAMIC_IMAGE" ./roxctl image scan --insecure-skip-tls-verify -e $ENV_VAR_NAME_2 --image $DYNAMIC_IMAGE --output json > roxctl_output.json more roxctl_output.json jq -rce \ 9 '{vulnerabilities:{ critical: (.result.summary.CRITICAL), high: (.result.summary.IMPORTANT), medium: (.result.summary.MODERATE), low: (.result.summary.LOW) }}' scan_output.json | tee $(results.SCAN_OUTPUT.path)
注意这是示例配置。根据您的特定扫描工具修改值,以预期格式设置结果。
更新适当的 Pipeline 以以下格式添加漏洞规格:
... spec: results: - description: The common vulnerabilities and exposures (CVE) result name: SCAN_OUTPUT value: $(tasks.vulnerability-scan.results.SCAN_OUTPUT)
验证
-
进入
PipelineRun
详情页面,查看 Vulnerabilities 行,以了解识别的漏洞的可视化表示。 -
另外,您可以进入到
PipelineRun
list view 页面,并查看 Vulnerabilities 列。