审计自托管部署
MongoDB 企业版为mongod
和 mongos
实例提供了审计功能。审计功能允许管理员和用户跟踪具有多个用户和应用程序的部署的系统活动。
启用和配置审计输出
审计功能可以将审计事件写入控制台、syslog、JSON 文件或 BSON 文件。要在 MongoDB 企业版中启用审计,请使用 --auditDestination
设置审计输出目标。有关详细信息,请参阅在自管理的部署上配置审计。
有关审计日志消息的信息,请参阅自管理部署中的系统事件审计消息。
审计事件和筛选
启用后,审计系统可以记录以下操作:
模式(DDL),
副本集和分片集群,
身份验证和授权,以及
CRUD 操作(需要将
auditAuthorizationSuccess
设置为true
)。
注意
从 MongoDB 5.0 开始,副本 不记录复制的 DDL 审计事件。对于修改 本地数据库 和 system.profile
集合的 DDL 操作,仍然记录 DDL 审计事件。
有关已审计操作的详细信息,请参阅自管理部署中的系统事件审计消息。
使用审计系统,您可以设置过滤器来限制捕获的事件。要设置过滤器,请参阅在自托管部署上配置审计过滤器。
[1] | 已中止事务中的操作仍会生成审计事件。但是,没有审计事件表明事务已中止。 |
审计保证
审计系统将每个审计事件[2]写入内存中的审计事件缓冲区。MongoDB定期将此缓冲区写入磁盘。对于来自任何单个连接收集的事件,事件具有总顺序:如果MongoDB将一个事件写入磁盘,系统保证已将该连接的所有先前事件写入磁盘。
如果审计事件条目对应于影响数据库持久状态的操作,例如对数据的修改,MongoDB将始终在写入该条目的日志之前将审计事件写入磁盘。
也就是说,在向日志添加操作之前,MongoDB会将触发该操作的连接上的所有审计事件写入磁盘,包括该操作的条目。
警告
MongoDB如果在将事件提交到审计日志之前终止,可能会丢失事件。客户端可能在MongoDB将事件提交到审计日志之前收到事件的确认。例如,在审计聚合操作时,服务器可能在返回结果之后但在审计日志刷新之前终止。
此外,如果服务器无法写入audit destination
,服务器将终止。
[2] | 审计配置可以包括一个过滤器来限制要审计的事件。 |