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