在自管理部署上配置审计
注意
MongoDB Atlas的审计
MongoDB Atlas支持所有M10及以上集群的审计。Atlas支持指定JSON格式的审计过滤器,如文档中所述M10
及以上集群。Atlas支持指定JSON格式的审计过滤器,如文档中所述在自管理部署上配置审计过滤器,并使用Atlas审计过滤器构建器进行简化的审计配置。欲了解更多信息,请参阅Atlas文档中的设置数据库审计和配置自定义审计过滤器。
MongoDB企业版支持审计各种操作。完整的审计解决方案必须涉及所有mongod
服务器和mongos
路由进程。
审计功能可以将审计事件写入控制台、syslog(Windows上不可用选项)、JSON文件或BSON文件。有关受审操作的详细信息以及审计日志消息,请参阅自管理部署的系统事件审计消息。
启用和配置审计输出
要在MongoDB企业版中启用审计,请使用--auditDestination
设置审计输出目标。
输出到 Syslog
要启用审计并将审计事件以 JSON 格式打印到 syslog(Windows 上不可用),请将 --auditDestination
设置指定为 syslog
。例如
mongod --dbpath data/db --auditDestination syslog
根据您的配置要求包含其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定 --bind_ip
。
重要
在将绑定到其他 IP 地址之前,请考虑 启用访问控制 以及在 自托管部署的安全清单 中列出的其他安全措施,以防止未经授权的访问。
警告
syslog 消息限制可能导致审计消息被截断。审计系统不会检测到截断,也不会在截断发生时出错。
在 Linux 系统中,消息受 Linux 配置文件 /etc/systemd/journald.conf
中定义的规则的影响。默认情况下,日志消息突发限制为 30 秒内 1000 条消息。要查看更多消息,请增加 /etc/systemd/journald.conf
中的 RateLimitBurst
参数。
storage: dbPath: data/db auditLog: destination: syslog
输出到控制台
要启用审计并将审计事件打印到标准输出(即 stdout
),请指定 console
作为 --auditDestination
设置。例如
mongod --dbpath data/db --auditDestination console
根据您的配置要求包含其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定 --bind_ip
。
重要
在将绑定到其他 IP 地址之前,请考虑 启用访问控制 以及在 自托管部署的安全清单 中列出的其他安全措施,以防止未经授权的访问。
storage: dbPath: data/db auditLog: destination: console
输出到 JSON 文件
要启用审计并将审计事件以 JSON 格式打印到文件,请指定以下选项
选项 | 值 |
---|---|
file | |
JSON | |
输出文件名。接受完整路径名或相对路径名。 |
例如,以下操作启用审计并将审计事件记录到相对路径名为 data/db/auditLog.json
的文件中
mongod --dbpath data/db --auditDestination file --auditFormat JSON --auditPath data/db/auditLog.json
根据您的配置要求包含其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定 --bind_ip
。
重要
在将绑定到其他 IP 地址之前,请考虑 启用访问控制 以及在 自托管部署的安全清单 中列出的其他安全措施,以防止未经授权的访问。
审计文件可以使用 logRotate
命令进行轮换,可以是与服务器日志一起或独立进行。轮换的详细信息可以通过 systemLog.logRotate
配置文件选项或 --logRotate
命令行选项进行配置。
storage: dbPath: data/db auditLog: destination: file format: JSON path: data/db/auditLog.json
注意
将审计事件以 JSON 格式打印到文件比以 BSON 格式打印到文件会降低服务器性能。
输出到 BSON 文件
要启用审计并将审计事件以 BSON 二进制格式打印到文件,请指定以下选项
选项 | 值 |
---|---|
file | |
BSON | |
输出文件名。接受完整路径名或相对路径名。 |
例如,以下操作启用了审计并将审计事件记录到具有相对路径名 data/db/auditLog.bson
的 BSON 文件中。
mongod --dbpath data/db --auditDestination file --auditFormat BSON --auditPath data/db/auditLog.bson
根据您的配置要求包含其他选项。例如,如果您希望远程客户端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定 --bind_ip
。
重要
在将绑定到其他 IP 地址之前,请考虑 启用访问控制 以及在 自托管部署的安全清单 中列出的其他安全措施,以防止未经授权的访问。
审计文件与服务器日志文件同时 轮换
。轮换的具体配置可以使用 systemLog.logRotate
配置文件选项或 --logRotate
命令行选项进行。
storage: dbPath: data/db auditLog: destination: file format: BSON path: data/db/auditLog.bson
以下示例使用 bsondump
将审计日志转换为可读形式,并输出结果
bsondump data/db/auditLog.bson
以 OCSF 格式输出消息
从 MongoDB 8.0 版本开始,MongoDB 可以以OCSF 格式写入日志消息。OCSF 架构提供了与日志处理器兼容的标准化格式的日志。
要使用 OCSF 架构进行日志消息,将 --auditSchema
选项设置为 OCSF
。例如
mongod --dbpath data/db --auditDestination file --auditFormat JSON --auditPath data/db/auditLog.json --auditSchema OCSF
您还可以在 auditLog.schema
配置文件选项中指定 OCSF 架构
storage: dbPath: data/db auditLog: destination: file format: JSON path: data/db/auditLog.json schema: OCSF
有关 OCSF 架构的更多信息,请参阅 OCSF 架构审计消息。
运行时审计过滤器管理
从MongoDB 5.0版本开始,审计过滤器可以在运行时进行配置。与在本地 mongod
或 mongos
配置文件中指定的审计过滤器配置相比,运行时审计过滤器管理提供了三个好处。
关注点分离
在MongoDB 5.0之前,审计MongoDB mongod
或 mongos
实例的人必须具有对主机服务器文件系统的写访问权限才能更新审计过滤器。运行时审计过滤器管理通过将审计访问与管理员访问分离来提高安全性。
使用运行时审计过滤器管理而不是直接编辑配置文件意味着
运行时配置能力
从MongoDB 5.0版本开始,当启用运行时审计过滤器管理时,可以在不重启mongod
或mongos
实例的情况下,重新配置审计功能。静态配置的实例必须重启才能更新其审计设置。
在运行时进行的审计过滤器修改,在实例关闭和重启后仍然保持。
一致性
在一个集群中,如果所有参与的mongod
和mongos
节点都配置为使用运行时审计过滤器管理,那么每个节点都将使用相同的审计过滤器。相比之下,如果每个节点都有自己的本地配置的审计过滤器,则无法保证节点之间审计过滤器的统一性。
启用运行时审计过滤器管理
从MongoDB 5.0版本开始,可以在运行时配置mongod
和mongos
节点的审计配置。这些节点中的一组可以参与分布式审计配置。
要将节点包含在分布式审计配置中,请按以下方式更新节点的配置文件,并重启服务器。
如果服务器记录错误并无法启动
runtimeConfiguration
设置为true
。或者设置了
auditLog.filter
或auditAuthorizationSuccess
。
要在运行时修改审计过滤器以及 auditAuthorizationSuccess
参数,请参阅 auditConfig
.