auditConfig
定义
语法
要在您的部署中设置 auditConfig
,请在 admin
数据库上运行以下命令
db.adminCommand( { setClusterParameter: { auditConfig: <value> } } )
要查看当前集群参数 auditConfig
的值,请在 admin
数据库上运行以下命令
db.adminCommand( { getClusterParameter: "auditConfig" } )
参数字段
auditConfig.auditAuthorizationSuccess
类型: 布尔型
默认值: false
要审计读/写操作,必须将
auditConfig.auditAuthorizationSuccess
设置为true
。当
auditConfig.auditAuthorizationSuccess
为false
时,审计系统仅记录authCheck
的授权失败。当auditAuthorizationSuccess
为false
时,审计对性能的影响较小,因为审计系统仅记录授权失败。
auditConfig.filter
类型: 文档
默认值: 无
过滤表达式,用于控制 哪些类型的操作 被审计系统记录。
文档字段可以是 审计消息中的任何字段,包括在 param 文档中返回的字段。字段值是 查询条件表达式。
要查看示例过滤文档,请参阅示例部分.
行为
必须启用审计才能使用 auditConfig
。
检索审计配置
如果启用了 运行时审计配置,则 auditAuthorizationSuccess
参数不会出现在 mongod
或 mongos
配置文件中。如果存在该参数,则服务器将无法启动。
如果对 auditConfig
运行 getClusterParameter
,则不参与运行时审计配置的节点将返回其当前配置文件设置 auditLog.filter
和 setParameter.auditAuthorizationSuccess
。
设置审计配置
使用 setClusterParameter
设置审计配置时,更改将立即对所有分片集群中的所有 配置服务器 和分片生效。
设置过宽的审计过滤器或启用 auditConfig.auditAuthorizationSuccess
可能会降低性能。
示例
以下示例使用 setClusterParameter
命令在创建或删除集合时启用审计。审计消息已重新格式化。它们在日志文件中显示为单行。
db.adminCommand( { setClusterParameter: { auditConfig: { filter: { atype: { $in: [ "createCollection", "dropCollection" ] } }, auditAuthorizationSuccess: false } } } )
设置 auditConfig
参数后,如果您在 sales
数据库中创建一个 inventory
集合,审计系统会记录类似以下的消息
{ "atype" : "createCollection", "ts" : { "$date" : "2021-08-09T13:45:05.372+00:00" }, "uuid" : { "$binary" : "RKU/YLizS6K9se2GUU7ZVQ==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51918 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }
如果从 sales
数据库中删除 inventory
集合,审计系统会记录类似以下的消息
{ "atype" : "dropCollection", "ts" : { "$date" : "2021-08-09T13:45:00.661+00:00" }, "uuid" : { "$binary" : "0gle4/pSQli+LUcz43ykag==", "$type" : "04" }, "local" : { "ip" : "127.0.0.1", "port" : 27502 }, "remote" : { "ip" : "127.0.0.1", "port" : 51928 }, "users" : [], "roles" : [], "param" : { "ns" : "sales.inventory" }, "result" : 0 }