PranavBajpai07/Scaleway-Audit-Sentinel

GitHub: PranavBajpai07/Scaleway-Audit-Sentinel

Scaleway Audit Sentinel 是一个独立的安全监控仪表板,通过规则引擎分析 Scaleway 审计日志和身份验证事件,实现异常检测、告警管理与 IAM 用户补救。

Stars: 0 | Forks: 0

# Scaleway Audit Sentinel Scaleway Audit Sentinel 是一个用于 Scaleway Audit Trail 和身份验证活动的独立监控仪表板。它会定期获取事件,应用检测规则,将告警存储在本地,并允许分析师从 UI 中锁定或解锁 IAM 用户。 我选择这个任务而不是 Coda 监控任务,是因为它有一个更紧凑的 2.5 小时范围:单一事件 pipeline、单一仪表板、清晰的规则设计,以及具体的补救工作流。而 Coda 问题在文档、表格、页面、导出、内容扫描和特定对象修复方面的涉及面要广泛得多。 ## 功能 - 轮询 Scaleway Audit Trail 事件和身份验证事件。 - 运行确定性的检测规则,包括登录失败爆发、对敏感服务的禁止访问、异常身份验证位置/IP 以及凭据生命周期变更。 - 提供具有自动刷新、过滤器、告警证据、近期事件和补救历史记录的仪表板。 - 支持锁定/解锁 IAM 用户的补救措施。 - 在无需凭据的 `demo` 模式下运行,以及针对 Scaleway 的 `live` 模式。 - 使用基于文件的 JSON 持久化来保存本地状态,并使用 JSON-lines 操作日志。 - 包含单元测试和 Docker 支持。 ## 快速开始 ``` cp .env.example .env npm test npm start ``` 在 Windows UNC/网络路径上,`npm.cmd` 可能会默认为 `C:\Windows`。如果发生这种情况,请直接使用 Node 运行相同的命令,或者将文件夹移动/映射到驱动器号: ``` node --test node src/server.js ``` 打开 `http://localhost:3000`。 默认的 `SCW_MODE=demo` 会立即生成更大的合成数据集:大约 176 个规范化事件和 149 个告警。这是故意的,以便在没有 Scaleway 凭据的情况下也能演示分页、排序、过滤和补救功能。点击 `Run Scan` 以重新运行获取和检测。 ## 实时 Scaleway 设置 从 `.env.example` 创建 `.env` 并设置: ``` SCW_MODE=live SCW_SECRET_KEY= SCW_ORGANIZATION_ID= SCW_PROJECT_ID= SCW_REGION=fr-par ``` 该集成使用 Scaleway 的 REST API: - Audit Trail 事件:`GET /audit-trail/v1alpha1/regions/{region}/events` - 身份验证事件:`GET /audit-trail/v1alpha1/regions/{region}/authentication-events` - 锁定用户:`POST /iam/v1alpha1/users/{user_id}/lock` - 解锁用户:`POST /iam/v1alpha1/users/{user_id}/unlock` 相关文档: - https://www.scaleway.com/en/developers/api/audit-trail/ - https://www.scaleway.com/en/developers/api/iam/ ## Docker ``` docker build -t scaleway-audit-sentinel . docker run --rm -p 3000:3000 --env-file .env scaleway-audit-sentinel ``` 对于容器外的本地持久化: ``` docker run --rm -p 3000:3000 --env-file .env -v "$PWD/data:/app/data" -v "$PWD/logs:/app/logs" scaleway-audit-sentinel ``` ## 架构 ``` public/ Static dashboard UI src/server.js HTTP server and REST routes src/scalewayClient.js Live Scaleway REST integration src/demoData.js Credential-free demo provider src/poller.js Scheduled ingestion pipeline src/detectionRules.js Normalization and alert rules src/remediation.js Lock/unlock workflow and audit record src/store.js File-backed state store src/logger.js JSON-lines operational logging ``` 数据存储在 `data/state.json` 中。日志写入 `logs/app.log`。这两个路径都可以通过 `DATA_DIR` 和 `LOG_DIR` 进行配置。 ## 检测规则 `failed-login-burst`:高严重性。当用户在 `FAILED_LOGIN_WINDOW_MINUTES` 内至少有 `FAILED_LOGIN_THRESHOLD` 次失败的身份验证事件时引发告警。 `forbidden-sensitive-access`:高严重性。在涉及 IAM、secrets、keys、credentials、tokens、passwords 或 MFA 相关资源的 HTTP 403 审计事件上引发告警。 `unusual-country`:中严重性。当成功的身份验证来自 `ALLOWED_COUNTRY_CODES` 之外的国家/地区时引发告警。 `new-source-ip`:中严重性。当成功的身份验证来自某个 principal 在其拥有已知配置后之前未观察到的源 IP 时引发告警。 `credential-change`:中严重性。在成功的 API key、token 或 MFA 生命周期变更时引发告警。 ## API - `GET /api/status` - `GET /api/alerts?page=1&pageSize=25&status=open&severity=high&sortBy=lastSeenAt` 返回 `{ alerts, page, pageSize, total, totalPages, sortBy }` - `GET /api/events?limit=25` - `GET /api/remediations` - `POST /api/poll` - `POST /api/alerts/:id/remediate` 带有 `{ "action": "lock", "actor": "analyst" }` - `PATCH /api/alerts/:id/status` 带有 `{ "status": "dismissed" }` ## 可扩展性 可以在 `src/detectionRules.js` 中添加新的检测规则,而无需更改 HTTP 层。新的补救操作应添加到 `src/remediation.js` 中,并通过告警的 `remediation.actions` 数组公开。`src/scalewayClient.js` 中的客户端边界将 Scaleway 特定的 REST 行为与检测和 UI 代码分离开来。 ## AI 使用 使用了 AI 辅助来比较任务范围、设计架构、搭建 Node.js 应用程序骨架、起草检测规则以及准备此 README。实现过程已根据任务要求进行了审查,并包含针对最高风险逻辑的测试。
标签:Docker, GNU通用公共许可证, IAM管理, MITM代理, Node.js, 安全防御评估, 审计日志, 异常检测, 数据可视化, 自定义脚本, 请求拦截