Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kubeclarity — KubeClarity 是一款用于检测和管理容器镜像与文件系统的软件物料清单(SBOM)及漏洞的工具。 | Kitploit
工具/GitHubGitHub/openclarity/kubeclarity
漏洞扫描器容器安全漏洞分析配置审计云安全DevSecOps供应链安全Archived
GitHubopenclarity/kubeclarity

kubeclarity

KubeClarity 是一款用于检测和管理容器镜像与文件系统的软件物料清单(SBOM)及漏洞的工具。

查看仓库
456171年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

[!IMPORTANT] KubeClarity 已被弃用,由 openclarity/openclarity 接替。

查看发布声明了解更多信息。

此项目不再接收更新。我们建议您迁移。

KubeClarity 徽标

KubeClarity 是一个用于检测和管理容器镜像和文件系统的软件物料清单 (SBOM) 及漏洞的工具。它扫描运行时 K8s 集群和 CI/CD 管道,以增强软件供应链安全性。

目录

  • 为何?
    • SBOM 和漏洞检测挑战
    • 解决方案
  • 功能
    • 集成的 SBOM 生成器和漏洞扫描器
  • 架构
  • 开始使用
    • KubeClarity 后端
      • 使用 Helm 安装
      • 使用 Helm 卸载
      • 在本地构建并运行(含演示数据)
    • CLI
      • 安装
      • SBOM 生成
      • 漏洞扫描
      • 导出结果至 KubeClarity 后端
  • 高级配置
    • 使用本地 docker 镜像作为输入生成 SBOM
    • 使用本地 docker 镜像作为输入进行漏洞扫描
  • CLI 的私有仓库支持
  • K8s 运行时扫描的私有仓库支持
  • 跨不同 CI/CD 阶段合并 SBOM 和漏洞
  • 输出不同的 SBOM 格式
  • CLI 的远程扫描器服务器
  • 限制
  • 路线图
  • 贡献
  • 许可证
  • 为何?

    SBOM 和漏洞检测挑战

    • 有效的漏洞扫描需要准确的软件物料清单 (SBOM) 检测:
      • 多种编程语言和包管理器
      • 多种操作系统发行版
      • 包依赖信息通常在构建时被剥离
    • 哪个是最好的扫描器/SBOM 分析器?
    • 我们应该扫描什么:Git 仓库、构建产物、容器镜像还是运行时?
    • 每个扫描器/分析器都有自己的格式——如何比较结果?
    • 如何管理已发现的 SBOM 和漏洞?
    • 我的应用如何受到新发现漏洞的影响?

    解决方案

    • 将漏洞扫描分为两个阶段:
      • 内容分析以生成 SBOM
      • 扫描 SBOM 以发现漏洞
    • 创建一个可插拔的基础设施以:
      • 并行运行多个内容分析器
      • 并行运行多个漏洞扫描器
    • 使用 KubeClarity CLI 扫描并合并不同 CI 阶段之间的结果
    • 运行时 K8s 扫描以检测部署后发现的漏洞
    • 将扫描的资源(镜像/目录)分组到定义的应用下,以便导航对象树依赖关系(应用、资源、包、漏洞)

    功能

    • 仪表盘
      • 按严重程度划分的可修复漏洞
      • 前5个易受攻击的元素(应用、资源、包)
      • 新漏洞趋势
      • 按许可证类型统计的包数量
      • 按编程语言统计的包数量
      • 通用计数器
    • 应用
      • 在 K8s 运行时中自动检测应用
      • 创建/编辑/删除应用
      • 对于每个应用,导航到相关的:
        • 资源(镜像/目录)
        • 包
        • 漏洞
        • 资源使用的许可证
    • 应用资源(镜像/目录)
      • 对于每个资源,导航到相关的:
        • 应用
        • 包
        • 漏洞
    • 包
      • 对于每个包,导航到相关的:
        • 应用
        • 可链接的资源列表及检测到的 SBOM 分析器
        • 漏洞
    • 漏洞
      • 对于每个漏洞,导航到相关的:
        • 应用
        • 资源
        • 检测扫描器列表
    • K8s 运行时扫描
      • 按需或定时扫描
      • 自动检测目标命名空间
      • 按受影响元素(应用、资源、包、漏洞)的扫描进度和结果导航
      • CIS Docker 基准测试
    • CLI(CI/CD)
      • 使用多个集成的分析器(Syft、cyclonedx-gomod)生成 SBOM
      • 使用多个集成的扫描器(Grype、Dependency-track)对 SBOM/镜像/目录进行漏洞扫描
      • 跨不同 CI/CD 阶段合并 SBOM 和漏洞
      • 将结果导出到 KubeClarity 后端
    • API
      • KubeClarity 的 API 可在此处找到

    集成的 SBOM 生成器和漏洞扫描器

    KubeClarity 内容分析器集成了以下 SBOM 生成器:

    • Syft
    • Cyclonedx-gomod
    • Trivy

    KubeClarity 漏洞扫描器集成了以下扫描器:

    • Grype
    • Dependency-Track
    • Trivy

    架构

    开始使用

    KubeClarity 后端

    使用 Helm 安装:

    1. 添加 Helm 仓库 ```shell helm repo add kubeclarity https://openclarity.github.io/kubeclarity

      root@kitploit:~
    2. 保存 KubeClarity 默认 chart 值

      root@kitploit:~
      helm show values kubeclarity/kubeclarity > values.yaml
      
    3. 检查 values.yaml 中的配置,并根据需要更新所需的值。 要启用和配置支持的 SBOM 生成器和漏洞扫描器,请检查 Helm values 中 "vulnerability-scanner" 部分下的 "analyzer" 和 "scanner" 配置。

    4. 使用 Helm 部署 KubeClarity ```shell helm install --values values.yaml --create-namespace kubeclarity kubeclarity/kubeclarity -n kubeclarity

      root@kitploit:~

    或用于兼容 OpenShift Restricted SCC 的安装: ```shell helm install --values values.yaml --create-namespace kubeclarity kubeclarity/kubeclarity -n kubeclarity --set global.openShiftRestricted=true
    --set kubeclarity-postgresql.securityContext.enabled=false --set kubeclarity-postgresql.containerSecurityContext.enabled=false
    --set kubeclarity-postgresql.volumePermissions.enabled=true --set kubeclarity-postgresql.volumePermissions.securityContext.runAsUser="auto"
    --set kubeclarity-postgresql.shmVolume.chmod.enabled=false

    root@kitploit:~
    3. 将端口转发到KubeClarity UI:   ```shell
    kubectl port-forward -n kubeclarity svc/kubeclarity-kubeclarity 9999:8080
    
    1. 在浏览器中打开 KubeClarity UI:http://localhost:9999/

    注意
    KubeClarity 需要以下 K8s 权限:

    权限原因
    读取 CREDS_SECRET_NAMESPACE(默认:kubeclarity)中的 secret允许您配置镜像拉取 secret 以扫描私有镜像仓库。
    读取 KubeClarity 部署命名空间中的 ConfigMap用于获取扫描作业的已配置模板。
    列出集群范围内的 Pod用于计算需要扫描的目标 Pod。
    列出命名空间用于在 K8s 运行时扫描 UI 中获取要扫描的目标命名空间。
    在集群范围内创建和删除作业用于管理将在其命名空间中扫描目标 Pod 的作业。

    使用 Helm 卸载:

    1. Helm 卸载 ```shell helm uninstall kubeclarity -n kubeclarity

      root@kitploit:~
    2. 清理资源

      默认情况下,Helm 不会删除 StatefulSets 的 PVC 和 PV。运行以下命令可以全部删除:

      root@kitploit:~
      kubectl delete pvc -l app.kubernetes.io/instance=kubeclarity -n kubeclarity
      

    使用演示数据在本地构建和运行

    1. 构建 UI 和 后端,并在本地启动后端(两种方式):

      1. 使用 Docker:
        1. 构建 UI 和 后端(镜像标签通过 VERSION 设置):
          root@kitploit:~
          VERSION=test make docker-backend
          
        2. 使用演示数据运行后端:
          root@kitploit:~
          docker run -p 8080:8080 -e FAKE_RUNTIME_SCANNER=true -e FAKE_DATA=true -e ENABLE_DB_INFO_LOGS=true -e DATABASE_DRIVER=LOCAL ghcr.io/openclarity/kubeclarity:test run
          
      2. 本地构建:
        1. 构建 UI 和 后端
          root@kitploit:~
          make ui && make backend
          
        2. 复制构建好的站点:
          root@kitploit:~
          cp -r ./ui/build ./site
          
        3. 使用演示数据在本地运行后端:
          root@kitploit:~
          FAKE_RUNTIME_SCANNER=true DATABASE_DRIVER=LOCAL FAKE_DATA=true ENABLE_DB_INFO_LOGS=true ./backend/bin/backend run
          
    2. 在浏览器中打开 KubeClarity UI:http://localhost:8080/

    CLI

    KubeClarity 包含一个 CLI 工具,可以在本地运行,特别适用于 CI/CD 流水线。它允许分析镜像和目录以生成 SBOM,并扫描其中的漏洞。结果可以导出到 KubeClarity 后端。

    Installation

    二进制发行版

    从发布页面下载适用于你操作系统的发行版。

    解压 kubeclarity-cli 二进制文件,将其添加到 PATH 中,然后就可以使用了!

    Docker 镜像

    Docker 镜像位于 ghcr.io/openclarity/kubeclarity-cli,可用标签列表见这里。

    本地编译

    ``` make cli ``` 将 `./cli/bin/cli` 复制到你的 PATH 下,命名为 `kubeclarity-cli`。

    SBOM 生成

    用法:``` kubeclarity-cli analyze <image/directory name> --input-type <dir|file|image(default)> -o

    root@kitploit:~
    示例:```
    kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom
    

    Optionally a list of the content analyzers to use can be configured using the ANALYZER_LIST env variable seperated by a space (e.g ANALYZER_LIST="<analyzer 1 name> <analyzer 2 name>")

    Example:``` ANALYZER_LIST="syft gomod" kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom

    root@kitploit:~
    ### 漏洞扫描
    
    用法:```
    kubeclarity-cli scan <image/sbom/directoty/file name> --input-type <sbom|dir|file|image(default)> -f <output file>
    

    示例:``` kubeclarity-cli scan nginx.sbom --input-type sbom

    root@kitploit:~
    可选地,可以通过 `SCANNERS_LIST` 环境变量配置要使用的漏洞扫描器列表,用空格分隔(例如 `SCANNERS_LIST="<Scanner1 name> <Scanner2 name>"`)
    
    示例:```
    SCANNERS_LIST="grype trivy" kubeclarity-cli scan nginx.sbom --input-type sbom
    

    导出结果到 KubeClarity 后端

    要将 CLI 结果导出到 KubeClarity 后端,需要使用由 KubeClarity 后端定义的应用程序 ID。 应用程序 ID 可以在 UI 的应用程序屏幕中找到,或通过 KubeClarity API 获取。

    导出 SBOM```

    The SBOM can be exported to KubeClarity backend by setting the BACKEND_HOST env variable and the -e flag.

    Note: Until TLS is supported, BACKEND_DISABLE_TLS=true should be set.

    BACKEND_HOST= BACKEND_DISABLE_TLS=true kubeclarity-cli analyze --application-id -e -o

    For example:

    BACKEND_HOST=localhost:9999 BACKEND_DISABLE_TLS=true kubeclarity-cli analyze nginx:latest --application-id 23452f9c-6e31-5845-bf53-6566b81a2906 -e -o nginx.sbom

    root@kitploit:~
    #### 导出漏洞扫描结果```
    # The vulnerability scan result can be exported to KubeClarity backend by setting the BACKEND_HOST env variable and the -e flag.
    # Note: Until TLS is supported, BACKEND_DISABLE_TLS=true should be set.
    
    BACKEND_HOST=<KubeClarity backend address> BACKEND_DISABLE_TLS=true kubeclarity-cli scan <image> --application-id <application ID> -e
    
    # For example:
    SCANNERS_LIST="grype" BACKEND_HOST=localhost:9999 BACKEND_DISABLE_TLS=true kubeclarity-cli scan nginx.sbom --input-type sbom  --application-id 23452f9c-6e31-5845-bf53-6566b81a2906 -e
    

    高级配置

    使用本地 Docker 镜像作为输入的 SBOM 生成```

    Local docker images can be analyzed using the LOCAL_IMAGE_SCAN env variable

    For example:

    LOCAL_IMAGE_SCAN=true kubeclarity-cli analyze nginx:latest -o nginx.sbom

    root@kitploit:~
    ## 使用本地Docker镜像作为输入进行漏洞扫描```
    # Local docker images can be scanned using the LOCAL_IMAGE_SCAN env variable
    
    # For example:
    LOCAL_IMAGE_SCAN=true kubeclarity-cli scan nginx.sbom
    

    Private registry support For CLI

    KubeClarity cli可以读取一个存储私有仓库凭据的配置文件。

    示例配置文件中的仓库部分:``` registry: auths: - authority: <registry 1> username: <username for registry 1> password: <password for registry 1> - authority: <registry 2> token: <token for registry 2>

    root@kitploit:~
    无权威的注册表配置示例:(在这种情况下,这些凭据将用于所有注册表)```
    registry:
      auths:
        - username: <username>
          password: <password>
    

    指定CLI配置文件```

    The default config path is $HOME/.kubeclarity or it can be specified by --config command line flag.

    kubeclarity <scan/analyze> --config

    For example:

    kubeclarity scan registry/nginx:private --config $HOME/own-kubeclarity-config

    root@kitploit:~
    ## Private registries support for K8s runtime scan
    
    Kubeclarity 使用 google/go-containerregistry 的 [k8schain](https://github.com/google/go-containerregistry/tree/main/pkg/authn/k8schain#k8schain) 进行注册表身份验证。
    如果 k8schain 无法发现必要的服务凭据,则可以通过下面描述的密钥来定义它们。
    
    此外,如果服务凭据不在 "kubeclarity" 命名空间中,请将 CREDS_SECRET_NAMESPACE 设置为 kubeclarity 部署。
    使用 helm [charts](https://github.com/openclarity/kubeclarity/blob/main/charts) 时,CREDS_SECRET_NAMESPACE 会被设置为安装 kubeclarity 的发布命名空间。
    
    ### Amazon ECR
    
    创建一个具有 `AmazonEC2ContainerRegistryFullAccess` 权限的 [AWS IAM 用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。
    
    使用用户凭据(`AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY`、`AWS_DEFAULT_REGION`)创建以下密钥:```
    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: ecr-sa
      namespace: kubeclarity
    type: Opaque
    data:
      AWS_ACCESS_KEY_ID: $(echo -n 'XXXX'| base64 -w0)
      AWS_SECRET_ACCESS_KEY: $(echo -n 'XXXX'| base64 -w0)
      AWS_DEFAULT_REGION: $(echo -n 'XXXX'| base64 -w0)
    EOF
    

    注意:

    1. Secret 名称必须为 ecr-sa
    2. Secret 数据键必须设置为 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_DEFAULT_REGION

    Google GCR

    使用 Artifact Registry Reader 权限创建一个 Google 服务账号。

    使用服务账号 json 文件创建以下 secret``` kubectl -n kubeclarity create secret generic --from-file=sa.json gcr-sa

    root@kitploit:~
    注意:
    1. 密钥名称必须为 `gcr-sa`
    1. `sa.json` 必须是生成密钥时服务账户 JSON 文件的名称
    2. KubeClarity 使用[应用默认凭据](https://developers.google.com/identity/protocols/application-default-credentials)。这些凭据仅在 GCP 中运行 KubeClarity 时有效。
    
    ## 跨 CI/CD 阶段的 SBOM 与漏洞合并```
    # Additional SBOM will be merged into the final results when '--merge-sbom' is defined during analysis. The input SBOM can be CycloneDX XML or CyclonDX json format.
    # For example:
    ANALYZER_LIST="syft" kubeclarity-cli analyze nginx:latest -o nginx.sbom --merge-sbom inputsbom.xml
    

    输出不同的SBOM格式

    kubeclarity-cli analyze 命令可以根据需要将生成的SBOM格式化为不同格式,以便与另一个系统集成。支持的格式如下:

    格式配置名称
    CycloneDX JSON (默认)cyclonedx-json
    CycloneDX XMLcyclonedx-xml
    SPDX JSONspdx-json
    SPDX 标记值spdx-tv
    Syft JSONsyft-json

    警告
    KubeClarity 在内部处理 CycloneDX 格式,其他格式通过转换得到支持。由于格式之间的不兼容性,转换过程可能造成信息丢失,因此不保证结果输出中包含所有字段/信息。

    要将 kubeclarity-cli 配置为使用除默认格式以外的格式,可以使用 ANALYZER_OUTPUT_FORMAT 环境变量,并传入上表中的配置名称:``` ANALYZER_OUTPUT_FORMAT="spdx-json" kubeclarity-cli analyze nginx:latest -o nginx.sbom

    root@kitploit:~
    ## 用于 CLI 的远程扫描器服务器
    
    在运行 kubeclarity CLI 扫描漏洞时,CLI 需要将相关的漏洞数据库下载到 kubeclarity CLI 运行的位置。在 CI/CD 流水线中运行 CLI 会导致每次运行时都下载数据库,浪费时间和带宽。因此,部分支持的扫描器提供了远程模式,由服务器负责数据库管理,并可能负责对工件进行扫描。
    
    > ***注意***
    >
    > 以下示例针对每个扫描器,但它们可以像非远程模式一样组合在一起运行。
    
    ### Trivy
    
    Trivy 扫描器支持使用 Trivy 服务器进行远程模式。Trivy 服务器可以按照此处文档进行部署:[trivy 客户端-服务器模式](https://aquasecurity.github.io/trivy/v0.34/docs/references/modes/client-server/)。安装 Trivy CLI 的说明可在 [trivy 安装](https://aquasecurity.github.io/trivy/v0.34/getting-started/installation/) 中找到。Aqua 团队提供了一个官方容器镜像,可用于在 kubernetes/docker 中运行服务器,我们将在示例中使用该镜像。
    
    要启动服务器:```
    docker run -p 8080:8080 --rm aquasec/trivy:0.41.0 server --listen 0.0.0.0:8080
    

    要使用服务器运行扫描:``` SCANNERS_LIST="trivy" SCANNER_TRIVY_SERVER_ADDRESS="http://:8080" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    Trivy 服务器还提供基于令牌的身份验证,以防止未经授权使用 Trivy 服务器实例。您可以通过运行带有额外标志的服务器来启用它:```
    docker run -p 8080:8080 --rm aquasec/trivy:0.41.0 server --listen 0.0.0.0:8080 --token mytoken
    

    并将令牌传递给扫描器:``` SCANNERS_LIST="trivy" SCANNER_TRIVY_SERVER_ADDRESS="http://:8080" SCANNER_TRIVY_SERVER_TOKEN="mytoken" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    ### Grype
    
    Grype 支持远程模式,通过使用 [grype-server](https://github.com/portshift/grype-server),这是一个 RESTful 的 grype 封装,提供了一个接收 SBOM 并返回该 SBOM 的 grype 扫描结果的 API。Grype-server 以容器镜像形式发布,因此可以在 kubernetes 中运行,或通过 docker 独立运行。
    
    要启动服务器:```
    docker run -p 9991:9991 --rm gcr.io/eticloud/k8sec/grype-server:v0.1.5
    

    使用服务器运行扫描:``` SCANNERS_LIST="grype" SCANNER_GRYPE_MODE="remote" SCANNER_REMOTE_GRYPE_SERVER_ADDRESS=":9991" SCANNER_REMOTE_GRYPE_SERVER_SCHEMES="https" ./kubeclarity_cli scan --input-type sbom nginx.sbom

    root@kitploit:~
    如果 Grype 服务器使用 TLS 部署,您可以覆盖默认的 URL 方案,例如:```
    SCANNERS_LIST="grype" SCANNER_GRYPE_MODE="remote" SCANNER_REMOTE_GRYPE_SERVER_ADDRESS="<grype server address>:9991" SCANNER_REMOTE_GRYPE_SERVER_SCHEMES="https" ./kubeclarity_cli scan --input-type sbom nginx.sbom
    

    Dependency Track

    参见示例配置 此处

    限制

    1. 支持 Docker 镜像清单 V2,Schema 2(https://docs.docker.com/registry/spec/manifest-v2-2/)。扫描早期版本会失败。

    路线图

    • 集成更多内容分析器(SBOM 生成器)
    • 集成更多漏洞扫描器
    • UI 中实现 CIS Docker 基准检查
    • 使用 Cosign 进行镜像签名
    • 使用 Cosign 和 in-toto 进行 CI/CD 元数据签名和认证(供应链安全)
    • 系统设置与用户管理

    贡献

    欢迎提交 Pull Request 和错误报告。

    对于较大的更改,请先在 GitHub 上创建一个 Issue 来讨论您的 提议变更及可能的影响。

    更多细节请参阅本项目贡献指南

    许可证

    Apache 许可证,版本 2.0

    下载工具