跳到主要内容

审计日志

跟踪记录 IEDB 部署中的每一项重要操作。审计日志会记录身份验证尝试、数据访问、配置更改和基础设施事件,以进行合规性和安全性监控。

概述

企业版 审计日志记录提供以下功能:

  • 全面事件捕获——身份验证、数据操作、基于角色的访问控制 (RBAC) 变更和基础设施事件
  • 查询和筛选 API — 按事件类型、参与者、数据库和时间范围搜索日志
  • 可配置保留期限— 自动清理旧的审计条目
  • 非阻塞式——审计事件以异步方式捕获,对请求延迟零影响。

事件类型

类别活动描述
验证auth.failed身份验证尝试失败(401/403)
Token管理token.created
token.deleted
token.rotated
API Token生命周期事件
RBACrbac.org.created
rbac.team.updated
rbac.role.deleted
组织、团队、角色和成员变更
数据操作data.query
data.write
data.import
data.delete
数据读/写操作
数据库管理database.created
database.deleted
数据库生命周期事件
基础设施mqtt.*
compaction.triggered
tiering.*
系统和后台操作
APIapi.POST
api.PUT
api.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_typestring按事件类型筛选(例如auth.failed``data.write
actorstring按参与者(Token或 ID)筛选
databasestring按数据库名称筛选
sincestring开始时间(例如 RFC3339 2026-02-01T00:00:00Z
untilstring结束时间(RFC3339)
limitint最多显示结果数(默认值:50)
offsetint分页偏移

例如:

# 最近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 设置警报,以便在身份验证失败次数超过正常阈值时发出警报。

最佳实践

  1. 首先只启用写入日志记录——保留include_reads = false(默认),仅在合规性要求时才启用读取日志记录。
  2. 设置合适的保留期限——90 天 默认值。根据您的合规性要求进行调整。
  3. 监控失败的身份验证尝试——设置auth.failed事件警报以检测未经授权的访问尝试。
  4. 与 RBAC 结合使用— 使用审计日志来验证 RBAC 权限是否配置正确,即查看谁访问了哪些数据。
  5. 导出以进行长期分析— 对于 IEDB 存储范围之外的保留,请定期将审计日志导出到您的安全管理平台或日志管理系统。

后续步骤

  • RBAC — 控制谁可以访问您的数据
  • 查询治理——添加速率限制和配额