This documentation is for a release that is no longer maintained
See documentation for the latest supported version.使用 Red Hat Trusted Profile Analyzer 检查您的 SBOM
了解如何扫描 SBOM,以获取有关应用程序安全状态的可操作信息。
摘要
前言 复制链接链接已复制到粘贴板!
当 Red Hat Trusted Application Pipeline 构建应用程序镜像时,它还提供了软件材料清单(SBOM)。SBOM 列出镜像使用的所有软件库。您可以使用 SBOM 来识别安全漏洞。
但是,SBOM 很长,难以阅读。要将原始 SBOM 转换为可操作的信息,您可以使用 Trusted Profile Analyzer (TPA)。例如,TPA 可以识别镜像中是已知常见漏洞和漏洞(CVE)的目标的依赖关系。
第 1 章 下载、转换和分析您的 SBOM 复制链接链接已复制到粘贴板!
以下流程解释了如何使用 TPA 检查 SBOM。具体来说,它概述了如何下载 SBOM,将 SBOM 转换为兼容格式,并使用 TPA 分析 SBOM。
因为 RHTAP 1.3 在构建应用程序时(包括任何受支持的 CI 提供程序:Tekton、Jenkins、GitLab CI 和 GitHub Actions)时,您不应该这个过程。请注意,GitHub Actions 是一个技术预览功能,尚未完全测试。
如果您希望手动提取 SBOM 并保留本地副本,请按照以下步骤操作。
流程
在容器 registry 中,找到您要检查其 SBOM 的容器镜像的完整地址。该地址的格式是 registry/namespace/image:tag。例如: quay.io/app/app-image:ff59e21cc…
注意不要使用 SBOM 镜像的地址,该镜像以
.sbom结尾。将镜像的地址用于实际应用。在 CLI 中,使用 cosign 来下载 SBOM。将输出重定向到稍后可以引用的文件。确保新文件名以
.json结尾。cosign download sbom quay.io/redhat/rhtap-app:8d34c03188cf294a77339b2a733b1f6811263a369b309e6b170d9b489abc0334 > /tmp/sbom.json
cosign download sbom quay.io/redhat/rhtap-app:8d34c03188cf294a77339b2a733b1f6811263a369b309e6b170d9b489abc0334 > /tmp/sbom.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)您的 SBOM 最终会出现在 TPA UI 中,其名称列在此 .json 文件中。默认情况下,Syft 根据 SBOM 的文件路径创建该名称。如果您希望您的 SBOM 出现在带有更有意义的名称的 TPA UI 中,您必须在您刚刚下载的 .json 文件中手动更改它。具体来说,您必须替换
.metadata.component对象中的名称。如果需要,您可以选择在此处添加version字段。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 Bombastic API URL 存储为环境变量。
bombastic_api_url="https://$(oc -n rhtap get route --selector app.kubernetes.io/name=bombastic-api -o jsonpath='{.items[].spec.host}')"$ bombastic_api_url="https://$(oc -n rhtap get route --selector app.kubernetes.io/name=bombastic-api -o jsonpath='{.items[].spec.host}')"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在此命令以及下一个命令之后,请务必输入安装 RHTAP 的命名空间。
示例假设您使用了名为rhtap的命名空间。在 CLI 中,使用以下值创建新的
token_issuer_url环境变量:token_issuer_url=https://$(oc -n rhtap get route --selector app.kubernetes.io/name=keycloak -o jsonpath='{.items[].spec.host}')/realms/chicken/protocol/openid-connect/token$ token_issuer_url=https://$(oc -n rhtap get route --selector app.kubernetes.io/name=keycloak -o jsonpath='{.items[].spec.host}')/realms/chicken/protocol/openid-connect/tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,您需要设置 TPA__OIDC__WALKER_CLIENT_SECRET 环境变量。如果您可以访问安装 RHTAP 时生成的 private.env 文件,则只需提供该文件。如果您没有该文件的访问权限,请询问谁安装了 RHTAP,以提供您的 TPA OIDC Walker 客户端 secret。
如果您可以访问
private.env文件:source private.env
$ source private.envCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,一旦从何处安装 RHTAP 获取 secret:
TPA__OIDC__WALKER_CLIENT_SECRET=<secret value>
$ TPA__OIDC__WALKER_CLIENT_SECRET=<secret value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行以下命令,以获取 BOMbastic API 的令牌。令牌允许您上传 SBOM。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尝试上传 SBOM。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您收到错误消息
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
$ syft convert /tmp/sbom.json -o cyclonedx-json@1.4=/tmp/sbom-1-4.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 然后尝试再次上传 SBOM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 通过 OpenShift 控制台访问运行 RHTAP 的集群。
-
在 rhtap 项目中,进入 Networking > Routes。打开在
spog-ui服务所在的同一行中列出的 URL。 - 使用 Register 按钮创建新帐户并向 TPA 进行身份验证。
选择 SBOM (最新上传)并查看根据 SBOM 提供的有关应用程序的 insights TPA。
- 进入 Dependency Analytics Report 选项卡来查看漏洞和补救。
更新于 2024-12-16