第 2 章 在 web 控制台中设置 OpenShift Pipelines 以查看软件交换链安全元素


使用 DeveloperAdministrator 视角创建或修改管道,并查看项目中的软件交换链安全元素。

设置 OpenShift Pipelines 以查看:

  • 项目漏洞 :可视化表示项目中的漏洞。
  • Software Bill of Materials (SBOMs): 下载或查看 PipelineRun 组件的详细列表。

另外,满足 Tekton Chains 要求的 PipelineRuns 会在其名称旁边显示签名徽标。此徽标表示管道运行执行结果安全签名并存储,例如在 OCI 镜像中。

图 2.1. 签名的徽标

badge

只有在您配置了 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 开始,提供了识别的漏洞的可视化表示。

先决条件

流程

  1. DeveloperAdministrator 视角中,切换到您希望漏洞视觉表示的相关项目。
  2. 更新您的现有漏洞扫描任务,以确保它将输出存储在 .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 命令。

    1. (可选)如果您没有漏洞扫描任务,以以下格式创建一个:

      使用 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)
      1
      任务的名称。
      2
      存储任务输出的位置。
      3
      扫描任务结果的命名规则。有效的命名规则必须以 SCAN_OUTPUT 字符串结尾。例如,SCAN_OUTPUT、MY_CUSTOM_SCAN_OUTPUT 或 ACS_SCAN_OUTPUT。
      4
      结果的描述。
      5
      已使用的漏洞扫描工具的名称。
      6
      包含扫描工具的实际镜像的位置。
      7
      特定于工具的环境变量。
      8
      使用 json 输出执行的 shell 脚本。例如,scan_output.json。
      9
      提取漏洞摘要的格式(用于不同 JSON 结构的adjust jq 命令)。
      注意

      这是示例配置。根据您的特定扫描工具修改值,以预期格式设置结果。

  3. 更新适当的 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 列。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.