第 1 章 下载、转换和分析您的 SBOM


以下流程解释了如何使用 TPA 检查 SBOM。具体来说,它概述了如何下载 SBOM,将 SBOM 转换为兼容格式,并使用 TPA 分析 SBOM。

注意

因为 RHTAP 1.5 在构建应用程序时(包括任何受支持的 CI 提供程序:Tekton、Jenkins、GitLab CI 和 GitHub Actions)时,您不应该发布此流程,因为 RHTAP 1.5 会自动将 SBOM 发布到 TPA。请注意,GitHub Actions 是一个技术预览功能,尚未完全测试。

如果您希望手动提取 SBOM 并保留本地副本,请按照以下步骤操作。

先决条件

流程

  1. 在容器 registry 中,找到您要检查其 SBOM 的容器镜像的完整地址。该地址的格式是 registry/namespace/image:tag。例如: quay.io/app/app-image:ff59e21cc…

    注意

    不要使用 SBOM 镜像的地址,该镜像以 .sbom 结尾。将镜像的地址用于实际应用。

  2. 在 CLI 中,使用 cosign 来下载 SBOM。将输出重定向到稍后可以引用的文件。确保新文件名以 .json 结尾。

    cosign download sbom quay.io/redhat/rhtap-app:8d34c03188cf294a77339b2a733b1f6811263a369b309e6b170d9b489abc0334 > /tmp/sbom.json
    Copy to clipboard
  3. (可选)您的 SBOM 最终会出现在 TPA UI 中,其名称列在此 .json 文件中。默认情况下,Syft 根据 SBOM 的文件路径创建该名称。如果您希望您的 SBOM 出现在带有更有意义的名称的 TPA UI 中,您必须在您刚刚下载的 .json 文件中手动更改它。具体来说,您必须替换 .metadata.component 对象中的名称。如果需要,您可以选择在此处添加 version 字段。

    $ vim /tmp/sbom.json
    "component": {
          "bom-ref": "fdef64df97f1d419",
          "type": "file",
          "name": "/var/lib/containers/storage/vfs/dir/3b3009adcd335d2b3902c5a7014d22b2beb6392b1958f1d9c7aabe24acab2deb" #Replace this with a meaningful name
        }
    Copy to clipboard
  4. 运行以下命令,将 Bombastic API URL 存储为环境变量:

    $ bombastic_api_url="https://$(oc -n rhtap-tpa get route --selector app.kubernetes.io/name=bombastic-api -o jsonpath='{.items[].spec.host}')"
    Copy to clipboard
    注意

    在此命令以及下一个命令之后,请务必输入安装 RHTAP 的命名空间。示例假设您使用了名为 rhtap 的命名空间。

  5. 在 CLI 中,使用以下值创建新的 token_issuer_url 环境变量:

    $ token_issuer_url=https://$(oc -n rhtap-keycloak get route --selector app=keycloak -o  jsonpath='{.items[].spec.host}')/realms/chicken/protocol/openid-connect/token
    Copy to clipboard
  6. 设置 TPA__OIDC__WALKER_CLIENT_SECRET 环境变量,并提供您的 TPA OIDC Walker 客户端 secret 作为其值:

    $ TPA__OIDC__WALKER_CLIENT_SECRET=$(kubectl get -n rhtap secrets/rhtap-trustification-integration --template={{.data.oidc_client_secret}} | base64 -d)
    Copy to clipboard
  7. 运行以下命令,以获取 BOMbastic API 的令牌。令牌允许您上传 SBOM。

    $ tpa_token=$(curl \
        -d 'client_id=walker' \
        -d "client_secret=$TPA__OIDC__WALKER_CLIENT_SECRET" \
        -d 'grant_type=client_credentials' \
        "$token_issuer_url" \
    | jq -r .access_token)
    Copy to clipboard
  8. 尝试上传 SBOM。

    curl \
        -H "authorization: Bearer $tpa_token" \
        -H "transfer-encoding: chunked" \
        -H "content-type: application/json" \
        --data @/tmp/sbom.json \
        "$bombastic_api_url/api/v1/sbom?id=my-sbom"
    Copy to clipboard
    1. 如果您收到错误消息 storage error: invalid storage content,请使用 Syft 将 SBOM 转换为更早的 CycloneDX 1.4。您可以忽略与不同 pURLs 合并软件包的警告;它们表示 Syft 可能会丢弃原始 SBOM 中的一些数据,但这些数据并不重要。

      $ syft convert /tmp/sbom.json -o cyclonedx-json@1.4=/tmp/sbom-1-4.json
      Copy to clipboard
    2. 然后尝试再次上传 SBOM:

      $ curl \
          -H "authorization: Bearer $tpa_token" \
          -H "transfer-encoding: chunked" \
          -H "content-type: application/json" \
          --data @/tmp/sbom-1-4.json \
          "$bombastic_api_url/api/v1/sbom?id=my-sbom"
      Copy to clipboard
  9. 通过 OpenShift 控制台访问运行 RHTAP 的集群。
  10. rhtap 项目中,导航到 Networking > Routes。打开在 spog-ui 服务所在的同一行中列出的 URL。
  11. 使用 Register 按钮创建新帐户并向 TPA 进行身份验证。
  12. 选择 SBOM (最新上传)并查看根据 SBOM 提供的有关应用程序的 insights TPA。

    1. 进入 Dependency Analytics Report 选项卡来查看漏洞和补救。





更新于 2025-05-01

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat, Inc.