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, 仪表盘, 企业安全, 域名枚举, 多模态安全, 安全洞察, 审计日志, 异常检测, 异步处理, 数据可视化, 测试用例, 用户活动跟踪, 系统活动捕获, 网络资产管理, 风险评分