holbein-io/ephor

GitHub: holbein-io/ephor

Ephor 是一个面向 Kubernetes 工作负载的自托管漏洞管理平台,通过汇聚外部扫描结果提供集中的漏洞分拣、升级跟踪和修复监控能力。

Stars: 1 | Forks: 0

# Ephor 针对 Kubernetes 工作负载的自托管漏洞管理平台。 Ephor 接入容器镜像扫描结果,并提供一个集中式仪表盘,用于漏洞分拣工作流、升级跟踪和修复计划。它为安全和平台团队提供了一个统一的面板,以了解和处理其集群中的漏洞。 ## 功能 - 仪表盘概览,包含关键指标、严重程度细分和趋势图 - 跨镜像、命名空间和集群的漏洞搜索与过滤 - 包含状态管理和评论的漏洞分拣工作流 - 针对关键发现的升级管理 - 修复跟踪和 SLA 合规性监控 - 扫描结果导入 REST API - 多架构容器镜像 (amd64/arm64) ## 架构 ``` +-----------------+ | Dashboard | | (React / Nginx) | +--------+--------+ | HTTP /api/v1 | +--------v--------+ | API | | (Spring Boot) | +--------+--------+ | JDBC | +--------v--------+ | PostgreSQL | +-----------------+ ``` **技术栈:** Java 21, Spring Boot 3.5, React 18, TypeScript, Vite, Tailwind CSS, PostgreSQL 17 ## 快速开始 前置条件:[Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/install/)。 ``` git clone https://github.com/holbein-io/ephor.git cd ephor docker compose up --build ``` 打开 [http://localhost:3000](http://localhost:3000) 以访问仪表盘。 ## 本地开发 ### API 前置条件:JDK 21,一个运行中的 PostgreSQL 实例(或使用 Docker Compose 启动一个)。 ``` # 仅启动 PostgreSQL docker compose up postgres -d # 运行 API SPRING_PROFILES_ACTIVE=local ./gradlew :api:bootRun ``` API 地址为 `http://localhost:8080/api/v1`。 当 API 运行时,可在 `http://localhost:8080/api/v1/swagger-ui/index.html` 访问 API 文档。原始的 OpenAPI 规范可从 `http://localhost:8080/api/v1/api-docs` 获取。 ### 仪表盘 前置条件:Node.js >= 22。 ``` cd dashboard/app npm install npm run dev ``` 仪表盘可在 `http://localhost:3000` 访问,并会自动将 `/api` 请求代理到端口 8080 上的 API。 ### 运行测试 ``` # API tests ./gradlew :api:test # Dashboard tests cd dashboard/app && npm test ``` ## Kubernetes 部署 在 `charts/ephor/` 目录中提供了 Helm chart。 ``` helm install ephor charts/ephor ``` ### 关键配置值 | 值 | 描述 | 默认值 | |---|---|---| | `ingress.enabled` | 启用 ingress 资源 | `false` | | `ingress.className` | Ingress 类名 | `""` | | `postgresql.enabled` | 部署内置的 PostgreSQL | `true` | | `externalDatabase.host` | 外部数据库主机名(当 `postgresql.enabled=false` 时) | `""` | | `api.image.tag` | API 镜像标签 | Chart 的 `appVersion` | | `dashboard.image.tag` | 仪表盘镜像标签 | Chart 的 `appVersion` | | `api.resources.limits.memory` | API 内存限制 | `1Gi` | 要使用外部数据库代替内置的 PostgreSQL: ``` helm install ephor charts/ephor \ --set postgresql.enabled=false \ --set externalDatabase.host=db.example.com \ --set externalDatabase.password=secret ``` 有关可配置值的完整列表,请参见 `charts/ephor/values.yaml`。 ## 配置 所有运行时配置均遵循 12-Factor 方法论,并通过环境变量进行管理。 | 变量 | 描述 | 默认值 | |---|---|---| | `SPRING_DATASOURCE_URL` | JDBC 连接字符串 | `jdbc:postgresql://localhost:5432/ephor` | | `SPRING_DATASOURCE_USERNAME` | 数据库用户名 | `ephor` | | `SPRING_DATASOURCE_PASSWORD` | 数据库密码 | `ephor` | | `AUTH_ENABLED` | 启用身份验证 | `true` | | `AUTH_DEV_ENABLED` | 注入开发用户(绕过身份验证) | `false` | | `LOGGING_STRUCTURED_FORMAT_CONSOLE` | 结构化日志格式(`ecs`、`logstash` 或留空) | _(无)_ | | `PORT` | 服务器监听端口 | `8080` | ## 项目结构 ``` ephor/ api/ Spring Boot API service dashboard/app/ React dashboard (Vite + TypeScript) charts/ephor/ Helm chart for Kubernetes deployment docs/ Project documentation docker-compose.yml ``` ## 贡献 欢迎贡献代码。请阅读我们的[贡献指南](CONTRIBUTING.md)以了解开发工作流、提交约定和 Pull Request 流程的详细信息。 所有贡献者在他们的第一个 Pull Request 被接受之前,必须签署我们的[贡献者许可协议](CLA.md)。一个 GitHub Action 会自动引导您完成此流程。 ## 许可证 本项目基于 [GNU Affero General Public License v3.0](LICENSE) 进行许可。
标签:Chrome Headless, CISA项目, DevSecOps, Docker, Docker Compose, GPT, HTTP/HTTPS抓包, Kubernetes安全, PDF链接提取, PostgreSQL, React, REST API, SLA合规, Spring Boot, Syscalls, TypeScript, Web截图, 上游代理, 域名枚举, 多架构镜像, 子域名突变, 安全仪表盘, 安全分类, 安全插件, 安全防御评估, 容器安全, 态势感知, 漏洞管理, 漏洞追踪, 自托管, 请求拦截