审计日志
跟踪记录 IEDB 部署中的每一项重要操作。审计日志会记录身份验证尝试、数据访问、配置更改和基础设施事件,以进行合规性和安全性监控。
概述
企业版 审计日志记录提供以下功能:
- 全面事件捕获——身份验证、数据操作、基于角色的访问控制 (RBAC) 变更和基础设施事件
- 查询和筛选 API — 按事件类型、参与者、数据库和时间范围搜索日志
- 可配置保留期限— 自动清理旧的审计条目
- 非阻塞式——审计事件以异步方式捕获,对请求延迟零影响。
事件类型
| 类别 | 活动 | 描述 |
|---|---|---|
| 验证 | auth.failed | 身份验证尝试失败(401/403) |
| Token管理 | token.createdtoken.deletedtoken.rotated | API Token生命周期事件 |
| RBAC | rbac.org.createdrbac.team.updatedrbac.role.deleted | 组织、团队、角色和成员变更 |
| 数据操作 | data.querydata.writedata.importdata.delete | 数据读/写操作 |
| 数据库管理 | database.createddatabase.deleted | 数据库生命周期事件 |
| 基础设施 | mqtt.*compaction.triggeredtiering.* | 系统和后台操作 |
| API | api.POSTapi.PUTapi.DELETE | 其他 API 操作的统称 |
配置
TOML
[audit_log]
enabled = true
retention_days = 90 # 自动清理早于此天数的日志
include_reads = false # 是否记录读取/查询请求(数据量大)
高容量读取日志记录
启用此include_reads功能会记录每个查询和 GET 请求。在高吞吐量环境中,这可能会产生大量的日志。仅在出于合规性或调试需要时启用此功能,并考虑缩短retention_days启用时间。
API 参考
所有审计接口都需要管理员身份验证。
查询审计日志
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/logs?limit=20"
筛选参数:
| 范围 | 类型 | 描述 |
|---|---|---|
event_type | string | 按事件类型筛选(例如auth.failed``data.write) |
actor | string | 按参与者(Token或 ID)筛选 |
database | string | 按数据库名称筛选 |
since | string | 开始时间(例如 RFC3339 2026-02-01T00:00:00Z) |
until | string | 结束时间(RFC3339) |
limit | int | 最多显示结果数(默认值:50) |
offset | int | 分页偏移 |
例如:
# 最近24小时内的失败认证尝试
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/logs?event_type=auth.failed&since=2026-02-12T00:00:00Z"
# 对生产数据库的所有写入操作
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/logs?event_type=data.write&database=production"
# 最近的RBAC变更
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/logs?event_type=rbac&limit=50"
# 特定Token的活动记录
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/logs?actor=telegraf-writer&limit=100"
响应:
{
"success": true,
"data": [
{
"id": 1542,
"event_type": "data.write",
"actor": "telegraf-writer",
"database": "production",
"detail": "measurement=cpu, records=5000",
"ip_address": "10.0.1.50",
"timestamp": "2026-02-13T10:30:00Z"
},
{
"id": 1541,
"event_type": "auth.failed",
"actor": "unknown",
"detail": "invalid token",
"ip_address": "192.168.1.100",
"timestamp": "2026-02-13T10:29:55Z"
}
],
"total": 1542,
"limit": 20,
"offset": 0
}
获取审计统计信息
按类型汇总事件计数,可用于仪表盘和警报。
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/stats"
时间范围:
curl -H "Authorization: Bearer $TOKEN" \
"http://localhost:8000/api/v1/audit/stats?since=2026-02-01T00:00:00Z&until=2026-02-13T23:59:59Z"
响应:
{
"success": true,
"data": {
"auth.failed": 23,
"data.write": 15420,
"data.query": 8340,
"token.created": 5,
"rbac.role.created": 3,
"database.created": 2
}
}
合规性用例
SOC 2
SOC 2 要求记录对系统和数据的访问。IEDB 审计日志会捕获:
- 谁访问了系统(操作员/Token识别)
- 他们做了什么(事件类型和详情)
- 事件发生时间(时间戳)
- 请求来源(IP 地址)
HIPAA
对于医疗数据,启用include_reads = true所有数据访问日志记录功能,包括查询。将retention_days根据您的 HIPAA 数据保留要求进行设置(通常为 6 年)。
安全监控
监控auth.failed事件以检测暴力破解尝试。使用统计 API 设置警报,以便在身份验证失败次数超过正常阈值时发出警报。
最佳实践
- 首先只启用写入日志记录——保留
include_reads = false(默认),仅在合规性要求时才启用读取日志记录。 - 设置合适的保留期限——90 天 默认值。根据您的合规性要求进行调整。
- 监控失败的身份验证尝试——设置
auth.failed事件警报以检测未经授权的访问尝试。 - 与 RBAC 结合使用— 使用审计日志来验证 RBAC 权限是否配置正确,即查看谁访问了哪些数据。
- 导出以进行长期分析— 对于 IEDB 存储范围之外的保留,请定期将审计日志导出到您的安全管理平台或日志管理系统。