vinaymalekar1/auditshield
GitHub: vinaymalekar1/auditshield
这是一个基于AI的审计日志系统,用于实时监控安全事件并自动检测异常行为。
Stars: 0 | Forks: 0
# AuditShield — AI驱动的企业审计日志系统
## 系统架构
```
┌─────────────────────────────────────────────────────────┐
│ FRONTEND (Browser) │
│ index.html + style.css + script.js │
│ Dashboard │ Logs │ Threats │ Analytics │ AI Insights │
└─────────────────────┬───────────────────────────────────┘
│ HTTP / REST (CORS enabled)
┌─────────────────────▼───────────────────────────────────┐
│ SPRING BOOT APPLICATION (:8080) │
│ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ AuditLogController (REST API) │ │
│ └──────────────────────┬──────────────────────────┘ │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ AuditLogService (Business Logic) │ │
│ └──┬───────────────────┬────────────────────┬─────┘ │
│ │ │ │ │
│ ┌──▼──────┐ ┌────────▼──────┐ ┌────────▼───────┐ │
│ │Repository│ │AsyncProcessor │ │ GeminiAiService│ │
│ │ (JPA) │ │ (@Async) │ │ (HTTP Client) │ │
│ └──┬──────┘ └────────┬──────┘ └────────┬───────┘ │
│ │ │ │ │
│ │ ┌───────▼──────┐ ┌────────▼───────┐ │
│ │ │ Save Result │ │ Gemini API │ │
│ │ │ + Anomaly │ │ (Google AI) │ │
│ │ └──────────────┘ └────────────────┘ │
└─────┼───────────────────────────────────────────────────┘
│
┌─────▼──────────────────────────────────────────────────┐
│ PostgreSQL Database │
│ audit_logs │ anomaly_reports │ system_metrics │
└────────────────────────────────────────────────────────┘
```
### 请求生命周期
1. **客户端** 提交 `POST /api/audit/log`
2. **控制器** 验证请求,委托给服务层
3. **服务层** 立即保存日志,设置 `riskScore=0`,返回响应(非阻塞)
4. **AsyncProcessor** 在后台线程(`AuditAsync-` 线程池)上拾取已保存的日志
5. **GeminiAiService** 将日志详情发送给 Gemini API,接收结构化分析结果
6. **AsyncProcessor** 更新已保存日志的 `riskScore`、`aiSummary`、`suspicious` 字段
7. 如果检测到可疑 → **异常报告** 也会被持久化
8. 前端轮询或刷新以查看更新后的分数
### 异步流程
```
Main Thread: [Save Log] → [Return 201] ─────────────────────────────────────►
Async Thread: [Gemini API Call] → [Update Log] → [Save Anomaly]
```
## 项目结构
```
audit-logging-system/
├── pom.xml
├── README.md
├── frontend/
│ ├── index.html ← Single-page dashboard app
│ ├── style.css ← Terminal-aesthetic styling
│ └── script.js ← Vanilla JS frontend engine
└── src/main/
├── resources/
│ └── application.properties
└── java/com/enterprise/audit/
├── AuditLoggingSystemApplication.java ← @SpringBootApplication + @EnableAsync
├── entity/
│ ├── AuditLog.java
│ ├── AnomalyReport.java
│ └── SystemMetrics.java
├── dto/
│ ├── AuditLogRequest.java
│ ├── AuditLogResponse.java
│ ├── AnomalyReportResponse.java
│ ├── AnalyticsDashboardResponse.java
│ └── ApiResponse.java
├── repository/
│ ├── AuditLogRepository.java
│ ├── AnomalyReportRepository.java
│ └── SystemMetricsRepository.java
├── service/
│ └── AuditLogService.java
├── controller/
│ └── AuditLogController.java
├── ai/
│ ├── GeminiAiService.java
│ └── AiAnalysisResult.java
├── async/
│ └── AsyncAuditProcessor.java
├── config/
│ ├── AsyncConfig.java
│ ├── SwaggerConfig.java
│ └── CorsConfig.java
├── exception/
│ └── GlobalExceptionHandler.java
└── logging/
└── AuditRequestLogger.java
```
## 快速启动
### 前置条件
- Java 17+
- Maven 3.8+
- PostgreSQL 14+
- Gemini API 密钥(在 https://makersuite.google.com/app/apikey 免费获取)
### 1. 创建 PostgreSQL 数据库
```
CREATE DATABASE audit_db;
CREATE USER audit_user WITH PASSWORD 'yourpassword';
GRANT ALL PRIVILEGES ON DATABASE audit_db TO audit_user;
```
### 2. 配置 application.properties
```
spring.datasource.url=jdbc:postgresql://localhost:5432/audit_db
spring.datasource.username=audit_user
spring.datasource.password=yourpassword
gemini.api.key=YOUR_GEMINI_API_KEY_HERE
```
### 3. 运行后端
```
cd audit-logging-system
mvn clean install
mvn spring-boot:run
```
后端将在 http://localhost:8080 启动
### 4. 打开前端
直接在浏览器中打开 `frontend/index.html`。
或者通过 VS Code Live Server / 任何静态文件服务器提供服务。
### 5. 验证
- **Swagger UI**: http://localhost:8080/swagger-ui.html
- **API 文档**: http://localhost:8080/api-docs
- 首次运行时通过 `spring.jpa.hibernate.ddl-auto=update` 自动创建数据表
## API 参考
### POST /api/audit/记录
提交一个审计事件(AI 分析异步运行)。
```
{
"userId": "USR-4421",
"username": "john.doe",
"actionType": "DELETE",
"entityType": "USER",
"entityId": "99",
"oldValue": "{\"role\": \"admin\"}",
"newValue": null,
"endpoint": "/api/users/99",
"method": "DELETE",
"ipAddress": "192.168.1.100"
}
```
**响应 (201):**
```
{
"success": true,
"message": "Audit log created. AI analysis in progress.",
"data": {
"id": 1,
"riskScore": 0,
"aiSummary": "AI analysis pending...",
"suspicious": false
}
}
```
*AI 会在几秒钟内异步更新 riskScore/aiSummary/suspicious。*
### GET /api/audit/全部?page=0&size=20
所有日志的分页列表,最新的在前。
### GET /api/audit/{id}
通过 ID 获取单条日志,包含完整的 AI 分析结果。
### GET /api/audit/搜索?userId=&actionType=&minRisk=&startDate=&endDate=&page=0&size=20
筛选搜索。所有参数均为可选。
### GET /api/audit/可疑?page=0&size=20
仅包含 AI 检测到的异常报告。
### GET /api/audit/分析
仪表盘指标 + AI 每日摘要:
```
{
"totalLogs": 1542,
"suspiciousCount": 23,
"highRiskCount": 41,
"activeUsers": 8,
"logsPerDay": [{"date":"2025-01-15","count":120}],
"actionBreakdown": [{"action":"LOGIN","count":400}],
"topUsers": [{"username":"admin","count":230}],
"aiDailySummary": "Security posture remains stable..."
}
```
### GET /api/audit/用户/{userId}?page=0&size=20
特定用户的所有日志。
## AI 风险评分
| 分数范围 | 等级 | 含义 |
|-------------|--------|--------------------------------|
| 0 – 39 | 低 | 正常活动 |
| 40 – 69 | 中 | 值得关注 |
| 70 – 100 | 高 | 可疑,已生成异常报告 |
### Gemini 检测的异常类型
- `BRUTE_FORCE` — 重复认证失败
- `PRIVILEGE_ESCALATION` — 角色/权限变更
- `DATA_EXFILTRATION` — 批量导出或读取
- `UNAUTHORIZED_ACCESS` — 访问拒绝模式
- `UNUSUAL_HOURS` — 非工作时间活动
- `MASS_OPERATION` — 批量删除/更新
- `OTHER` — 其他标记的模式
## 安全考量
- 所有请求通过 `AuditRequestLogger` 过滤器记录
- 已配置 CORS(生产环境中请限制 `cors.allowed-origins`)
- 使用 Bean Validation 进行输入验证(例如 `@NotBlank`)
- 通过 JPA 参数化查询防止 SQL 注入
- 全局异常处理器防止堆栈跟踪泄露
- Gemini API 密钥存储在 `application.properties` 中(生产环境中请使用环境变量)
## 生产环境加固(推荐)
```
# 使用环境变量
spring.datasource.password=${DB_PASSWORD}
gemini.api.key=${GEMINI_API_KEY}
# 限制 CORS
cors.allowed-origins=https://yourdomain.com
# 禁用 DDL 自动生成
spring.jpa.hibernate.ddl-auto=validate
```
标签:AI驱动, CORS, Gemini AI, JS文件枚举, PostgreSQL, REST API, Spring Boot, 仪表盘, 企业安全, 域名枚举, 多模态安全, 安全洞察, 审计日志, 异常检测, 异步处理, 数据可视化, 测试用例, 用户活动跟踪, 系统活动捕获, 网络资产管理, 风险评分