zarguell/openexposuremanagement
GitHub: zarguell/openexposuremanagement
一个开源自托管的漏洞暴露管理平台,用于聚合多源扫描结果、统一资产视图并结合威胁情报进行漏洞风险优先级排序。
Stars: 0 | Forks: 0
# Open Exposure Management (OEM)
一个自托管的漏洞暴露管理平台,用于摄取基础设施发现结果、统一资产视图,并通过 EPSS 和 CISA KEV 威胁情报丰富发现结果。
## MVP 目标
演示一个可运行的平台,能够:
- 从 VM 扫描器(类似 Tenable/Qualys)摄取漏洞发现结果
- 使用确定性匹配统一不同扫描间的资产
- 浏览和搜索资产及发现结果
- 使用 EPSS 评分和 CISA KEV 数据丰富发现结果
- 支持 CVE 级别的抑制提议和审批
## 快速开始(演示)
### 🚀 快速演示模式(无身份验证)
为了快速演示,您可以在没有身份验证的情况下运行应用程序:
#### Docker Compose(推荐)
```
# 一条命令自动设置一切
./setup.sh
# 访问地址:
# Frontend: http://localhost:80
# Backend API: http://localhost:8080
# PgAdmin: http://localhost:5050 (admin@oem.local / admin)
```
#### 本地开发(仅限开发使用)
```
# 需要本地 PostgreSQL
# 以 demo 模式同时启动前端和后端
./demo.sh
# 或者手动:
# 终端 1 - Backend(需要 PostgreSQL 运行)
cd api && DEMO_MODE=true go run ./cmd/server
# 终端 2 - Frontend
cd ui && npm run dev
```
**⚠️ 安全警告**:演示模式完全禁用了身份验证。这用于生产环境是不安全的!
### 🔐 完整的生产环境设置
用于具有适当身份验证的生产环境:
```
# 构建并启动所有服务(包括数据库设置)
docker compose up --build
# 运行数据库迁移
export DATABASE_URL="postgres://oem:password@localhost:5432/oem?sslmode=disable"
~/go/bin/migrate -path db/migrations -database "$(DATABASE_URL)" up
# 导入样本数据(可选)
make seed
# 运行冒烟测试
make demo-smoke
```
通过设置以下环境变量来配置 OIDC 身份验证:
- `VITE_OIDC_ISSUER` - 您的 OIDC 提供商颁发者 URL
- `VITE_OIDC_CLIENT_ID` - 您的 OIDC 客户端 ID
### 🧪 测试与验证
```
# 运行所有测试
make test
# 运行冒烟测试(端到端验证)
make demo-smoke
# 导入样本数据
make seed
```
## 开发说明
### 前置条件
- Docker 和 Docker Compose
- Go 1.21+(用于本地开发和迁移)
- Node.js 20+(用于本地开发)
- Make
- golang-migrate(由 setup.sh 自动安装):`go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest`
### 故障排除
#### 设置问题
- **设置脚本失败**:确保 Docker 和 Docker Compose 已安装并正在运行
- **端口冲突**:设置脚本使用标准端口 (80, 8080, 5432, 5050)。请停止冲突的服务或修改 docker-compose.yml 中的端口
#### 服务问题
- **服务未启动**:使用 `docker compose logs` 检查日志
- **PgAdmin 无法访问**:稍等片刻以待初始化完成,然后访问 http://localhost:5050 (admin@oem.local / admin)
- **Dashboard 未加载**:清除浏览器缓存或尝试硬刷新 (Ctrl+F5)
#### 开发问题
- **本地演示脚本失败**:确保 PostgreSQL 在本地运行,或改用 Docker 设置
- **构建失败**:确保在本地开发环境中安装了 Go 1.21+ 和 Node.js 20+
#### 常用命令
```
# 检查数据库连接
docker exec -it oem-postgres psql -U oem -d oem
# 查看迁移状态
docker exec oem-postgres psql -U oem -d oem -c "\dt"
# 重置一切(注意:会破坏数据)
docker compose down -v
docker volume rm openexposuremanagement_postgres-data openexposuremanagement_pgadmin-data
# 创建备份
./scripts/backup.sh
# 查看服务日志
docker compose logs -f
```
**有关全面的操作指南,请参阅 [docs/operations.md](docs/operations.md)**
### 目录结构
```
.
├── api/ # Go API service
│ └── cmd/server/ # Main entry point
├── ui/ # React SPA (Vite)
├── db/ # Database migrations and schemas
│ └── migrations/ # SQL migrations
├── docs/ # Architecture and runbooks
└── docker-compose.yml
```
### 常用命令
```
# 开发
make dev # Start development environment
make test # Run all tests (Go + UI)
make lint # Run linters
# 数据库
DATABASE_URL="postgres://oem:password@localhost:5432/oem?sslmode=disable" ~/go/bin/migrate -path db/migrations -database "$(DATABASE_URL)" up # Apply migrations
DATABASE_URL="postgres://oem:password@localhost:5432/oem?sslmode=disable" ~/go/bin/migrate -path db/migrations -database "$(DATABASE_URL)" down # Rollback
DATABASE_URL="postgres://oem:password@localhost:5432/oem?sslmode=disable" ~/go/bin/migrate -path db/migrations -database "$(DATABASE_URL)" create -ext sql -dir db/migrations # Create migration
# 快速设置
./setup.sh # Full Docker setup with database, migrations, and all services
./demo.sh # Local development setup (requires local PostgreSQL)
# 实用工具
make seed # Seed sample data
make demo-smoke # Run end-to-end smoke test
make help # Show all available commands
```
## 文档
- **[docs/architecture.md](docs/architecture.md)** - 详细的架构、API 端点和数据模型
- **[docs/operations.md](docs/operations.md)** - 完整的部署、管理和故障排除操作指南
- **[docs/tasks.md](docs/tasks.md)** - 实施路线图和任务跟踪
- **[TESTING.md](TESTING.md)** - 测试指南和程序
## 架构
有关详细的架构、API 端点和数据模型,请参阅 [docs/architecture.md](docs/architecture.md)。
## 任务与里程碑
有关实施路线图,请参阅 [docs/tasks.md](docs/tasks.md)。
## 许可证
MIT
## 安全
⚠️ **演示模式警告**:默认配置包含仅用于开发的演示 API 密钥。切勿在生产环境中使用演示密钥。
标签:ASM, BlazeGraph, CISA KEV, CVE, Docker, Docker Compose, EPSS, EVTX分析, Go语言, GPT, OIDC, PostgreSQL, Qualys, Self-hosted, Tenable, 企业安全, 占用监测, 威胁情报, 安全合规, 安全漏洞, 安全防御评估, 开发者工具, 数字签名, 无线安全, 日志审计, 暴露面管理, 测试用例, 漏洞管理, 版权保护, 程序破解, 网络代理, 网络安全, 网络安全审计, 网络资产管理, 自主托管, 请求拦截, 资产管理, 隐私保护