openclarity/kubeclarity

GitHub: openclarity/kubeclarity

KubeClarity 是一个集成了多种 SBOM 生成器和漏洞扫描器的统一平台,用于在 CI/CD 流水线和 Kubernetes 运行时环境中检测、管理和追踪容器镜像与文件系统的软件成分及安全漏洞。

Stars: 42 | Forks: 6

KubeClarity Logo KubeClarity 是一个用于检测和管理容器镜像及文件系统的软件物料清单 (SBOM) 与漏洞的工具。它扫描运行时的 K8s 集群和 CI/CD 流水线,以增强软件供应链的安全性。 ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/6eaea5f47a111048.png) # 目录 - [为什么?](#why) - [SBOM 与漏洞检测的挑战](#sbom--vulnerability-detection-challenges) - [解决方案](#solution) - [功能特性](#features) - [集成的 SBOM 生成器和漏洞扫描器](#integrated-sbom-generators-and-vulnerability-scanners) - [架构](#architecture) - [快速开始](#getting-started) - [KubeClarity 后端](#kubeclarity-backend) - [使用 Helm 安装](#install-using-helm) - [使用 Helm 卸载](#uninstall-using-helm) - [使用演示数据在本地构建并运行](#build-and-run-locally-with-demo-data) - [CLI](#cli) - [安装](#installation) - [SBOM 生成](#sbom-generation) - [漏洞扫描](#vulnerability-scanning) - [将结果导出到 KubeClarity 后端](#exporting-results-to-kubeclarity-backend) - [高级配置](#advanced-configuration) - [使用本地 Docker 镜像作为输入生成 SBOM](#sbom-generation-using-local-docker-image-as-input) - [使用本地 Docker 镜像作为输入进行漏洞扫描](#vulnerability-scanning-using-local-docker-image-as-input) - [CLI 的私有仓库支持](#private-registry-support-for-cli) - [K8s 运行时扫描的私有仓库支持](#private-registries-support-for-k8s-runtime-scan) - [跨不同 CI/CD 阶段合并 SBOM 和漏洞](#merging-of-sbom-and-vulnerabilities-across-different-cicd-stages) - [输出不同的 SBOM 格式](#output-different-sbom-formats) - [CLI 的远程扫描服务器](#remote-scanner-servers-for-cli) - [局限性](#limitations) - [路线图](#roadmap) - [贡献](#contributing) - [许可证](#license) # 为什么? ## SBOM 与漏洞检测的挑战 * 有效的漏洞扫描需要准确的软件物料清单 (SBOM) 检测: * 各种编程语言和包管理器 * 各种操作系统发行版 * 包依赖信息通常在构建时被剥离 * 哪个扫描器/SBOM 分析器最好? * 我们应该扫描什么:Git 仓库、构建产物、容器镜像还是运行时? * 每个扫描器/分析器都有自己的格式——如何比较结果? * 如何管理发现的 SBOM 和漏洞? * 我的应用程序如何受到新发现漏洞的影响? ## 解决方案 * 将漏洞扫描分为两个阶段: * 内容分析以生成 SBOM * 扫描 SBOM 以查找漏洞 * 创建一个可插拔的基础设施来: * 并行运行多个内容分析器 * 并行运行多个漏洞扫描器 * 使用 KubeClarity CLI 在不同 CI 阶段扫描并合并结果 * 运行时 K8s 扫描以检测部署后发现的漏洞 * 将扫描的资源(镜像/目录)归类到定义的应用程序下,以便浏览对象树依赖关系(应用程序、资源、包、漏洞) # 功能特性 * 仪表板 * 按严重程度分类的可修复漏洞 * Top 5 易受攻击元素(应用程序、资源、包) * 新漏洞趋势 * 按许可证类型统计的包数量 * 按编程语言统计的包数量 * 常规计数 * 应用程序 * K8s 运行时中的自动应用程序检测 * 创建/编辑/删除应用程序 * 每个应用程序,导航至相关的: * 资源(镜像/目录) * 包 * 漏洞 * 资源使用的许可证 * 应用程序资源(镜像/目录) * 每个资源,导航至相关的: * 应用程序 * 包 * 漏洞 * 包 * 每个包,导航至相关的: * 应用程序 * 可链接的资源列表及检测到它们的 SBOM 分析器 * 漏洞 * 漏洞 * 每个漏洞,导航至相关的: * 应用程序 * 资源 * 检测到它们的扫描器列表 * K8s 运行时扫描 * 按需或计划扫描 * 自动检测目标命名空间 * 扫描进度和每个受影响元素(应用程序、资源、包、漏洞)的结果导航 * CIS Docker 基准测试 * CLI (CI/CD) * 使用多个集成内容分析器 (Syft, cyclonedx-gomod) 生成 SBOM * 使用多个集成扫描器 (Grype, Dependency-track) 进行 SBOM/镜像/目录漏洞扫描 * 跨不同 CI/CD 阶段合并 SBOM 和漏洞 * 将结果导出到 KubeClarity 后端 * API * KubeClarity 的 API 可以在 [这里](https://github.com/openclarity/kubeclarity/blob/master/api/swagger.yaml) 找到 ## 集成的 SBOM 生成器和漏洞扫描器 KubeClarity 内容分析器集成了以下 SBOM 生成器: * [Syft](https://github.com/anchore/syft) * [Cyclonedx-gomod](https://github.com/CycloneDX/cyclonedx-gomod) * [Trivy](https://github.com/aquasecurity/trivy) KubeClarity 漏洞扫描器集成了以下扫描器: * [Grype](https://github.com/anchore/grype) * [Dependency-Track](https://github.com/DependencyTrack/dependency-track) * [Trivy](https://github.com/aquasecurity/trivy) # 架构 ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/d40e11bb59111049.png) # 快速开始 ## KubeClarity 后端 ### 使用 Helm 安装: 1. 添加 Helm 仓库 helm repo add kubeclarity https://openclarity.github.io/kubeclarity 2. 保存 KubeClarity 默认 chart 值 helm show values kubeclarity/kubeclarity > values.yaml 3. 检查 `values.yaml` 中的配置,并根据需要更新值。要启用和配置支持的 SBOM 生成器和漏洞扫描器,请检查 Helm values 中 "vulnerability-scanner" 部分下的 "analyzer" 和 "scanner" 配置。 4. 使用 Helm 部署 KubeClarity helm install --values values.yaml --create-namespace kubeclarity kubeclarity/kubeclarity -n kubeclarity 或对于兼容 OpenShift Restricted SCC 的安装: 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 5. 端口转发到 KubeClarity UI: kubectl port-forward -n kubeclarity svc/kubeclarity-kubeclarity 9999:8080 6. 在浏览器中打开 KubeClarity UI: ### 使用 Helm 卸载: 1. Helm 卸载 helm uninstall kubeclarity -n kubeclarity 2. 清理资源 默认情况下,Helm 不会移除 StatefulSets 的 PVC 和 PV。运行以下命令将其全部删除: kubectl delete pvc -l app.kubernetes.io/instance=kubeclarity -n kubeclarity ### 使用演示数据在本地构建并运行 1. 构建 UI 和后端并在本地启动后端(2 个选项): 1. 使用 docker: 1. 构建 UI 和后端(镜像标签使用 VERSION 设置): VERSION=test make docker-backend 2. 使用演示数据运行后端: 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 和后端 make ui && make backend 2. 复制构建的站点: cp -r ./ui/build ./site 3. 使用演示数据在本地运行后端: FAKE_RUNTIME_SCANNER=true DATABASE_DRIVER=LOCAL FAKE_DATA=true ENABLE_DB_INFO_LOGS=true ./backend/bin/backend run 2. 在浏览器中打开 KubeClarity UI: ## CLI KubeClarity 包含一个 CLI,可以在本地运行,对于 CI/CD 流水线特别有用。 它允许分析镜像和目录以生成 SBOM,并扫描其中的漏洞。 结果可以导出到 KubeClarity 后端。 ### 安装
二进制分发版

从 [发布页面](https://github.com/openclarity/kubeclarity/releases) 下载适用于您操作系统的发布版 解压 `kubeclarity-cli` 二进制文件,将其添加到您的 PATH 中,您就可以开始了!

Docker 镜像

Docker 镜像位于 `ghcr.io/openclarity/kubeclarity-cli`,可用标签列表在 [这里](https://github.com/openclarity/kubeclarity/pkgs/container/kubeclarity-cli/versions)。

本地编译

``` make cli ``` 将 `./cli/bin/cli` 复制到您的 PATH 中,重命名为 `kubeclarity-cli`。

### SBOM 生成 用法: ``` kubeclarity-cli analyze --input-type -o ``` 示例: ``` kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom ``` 可以选择使用以空格分隔的 `ANALYZER_LIST` 环境变量来配置要使用的内容分析器列表(例如 `ANALYZER_LIST="<分析器 1 名称> <分析器 2 名称>"`) 示例: ``` ANALYZER_LIST="syft gomod" kubeclarity-cli analyze --input-type image nginx:latest -o nginx.sbom ``` ### 漏洞扫描 用法: ``` kubeclarity-cli scan --input-type -f ``` 示例: ``` kubeclarity-cli scan nginx.sbom --input-type sbom ``` 可以选择使用以空格分隔的 `SCANNERS_LIST` 环境变量来配置要使用的漏洞扫描器列表(例如 `SCANNERS_LIST="<扫描器 1 名称> <扫描器 2 名称>"`) 示例: ``` SCANNERS_LIST="grype trivy" kubeclarity-cli scan nginx.sbom --input-type sbom ``` ### 将结果导出到 KubeClarity 后端 要将 CLI 结果导出到 KubeClarity 后端,需要使用 KubeClarity 后端定义的应用程序 ID。 应用程序 ID 可以在 UI 的应用程序屏幕中找到,或使用 KubeClarity API 找到。 #### 导出 SBOM ``` # 通过设置 BACKEND_HOST 环境变量和 -e 标志,可以将 SBOM 导出 到 KubeClarity 后端。 # 注意:在支持 TLS 之前,应设置 BACKEND_DISABLE_TLS=true。 BACKEND_HOST= BACKEND_DISABLE_TLS=true kubeclarity-cli analyze --application-id -e -o # 例如: BACKEND_HOST=localhost:9999 BACKEND_DISABLE_TLS=true kubeclarity-cli analyze nginx:latest --application-id 23452f9c-6e31-5845-bf53-6566b81a2906 -e -o nginx.sbom ``` #### 导出漏洞扫描结果 ``` # 通过设置 BACKEND_HOST 环境变量和 -e 标志,可以将漏洞扫描结果导出到 KubeClarity 后端。 # 注意:在支持 TLS 之前,应设置 BACKEND_DISABLE_TLS=true。 BACKEND_HOST= BACKEND_DISABLE_TLS=true kubeclarity-cli scan --application-id -e # 例如: 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_IMAGE_SCAN 环境变量分析本地 docker 镜像 # 例如: LOCAL_IMAGE_SCAN=true kubeclarity-cli analyze nginx:latest -o nginx.sbom ``` ## 使用本地 Docker 镜像作为输入进行漏洞扫描 ``` # 可以使用 LOCAL_IMAGE_SCAN 环境变量扫描本地 docker 镜像 # 例如: LOCAL_IMAGE_SCAN=true kubeclarity-cli scan nginx.sbom ``` ## CLI 的私有仓库支持 KubeClarity cli 可以读取存储私有仓库凭据的配置文件。 配置文件的示例仓库部分: ``` registry: auths: - authority: username: password: - authority: token: ``` 没有权限 (authority) 的示例仓库配置:(在这种情况下,这些凭据将用于所有仓库) ``` registry: auths: - username: password: ``` ### 为 CLI 指定配置文件 ``` # 默认配置路径为 $HOME/.kubeclarity,或者可以通过 `--config` 命令行标志指定。 # kubeclarity --config # 例如: kubeclarity scan registry/nginx:private --config $HOME/own-kubeclarity-config ``` ## K8s 运行时扫描的私有仓库支持 Kubeclarity 使用 google/go-containerregistry 的 [k8schain](https://github.com/google/go-containerregistry/tree/main/pkg/authn/k8schain#k8schain) 对仓库进行身份验证。 如果 k8schain 无法发现必要的服务凭据,可以通过下面描述的 secrets 来定义它们。 此外,如果服务凭据不在 "kubeclarity" 命名空间中,请在 kubeclarity Deployment 中设置 CREDS_SECRET_NAMESPACE。 使用 helm [charts](/charts) 时,CREDS_SECRET_NAMESPACE 设置为安装 kubeclarity 的 release 命名空间。 ### 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`)创建以下 secret: ``` cat <
标签:CI/CD安全, Claude, CVE检测, DevSecOps, EVTX分析, EVTX分析, Go, GPT, Helm, KubeClarity, Llama, LNA, Ruby工具, SBOM, Vue, Web截图, 上游代理, 子域名突变, 安全合规, 容器安全, 文件系统扫描, 文档安全, 日志审计, 测试用例, 漏洞管理, 硬件无关, 网络代理, 请求拦截, 跌倒检测, 软件物料清单