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, 安全防御评估, 审计日志, 异常检测, 数据可视化, 自定义脚本, 请求拦截