配置审核过滤器

在本页面

MongoDB Enterprise支持auditing的各种操作。 enabled时,默认情况下,审核工具记录审核事件操作,详细信息和结果中详细介绍的所有可审核操作。要指定要记录的事件,审核功能包括--auditFilter选项。

Note

从 MongoDB 3.6 开始,默认情况下mongodmongos绑定到 localhost。如果部署的成员在不同的主机上运行,或者希望远程 Client 端连接到部署,则必须指定--bind_ipnet.bindIp。有关更多信息,请参见Localhost 绑定兼容性更改

绑定到其他 IP 地址之前,请考虑启用访问控制Security Checklist中列出的其他安全措施,以防止未经授权的访问。

--auditFilter Option

--auditFilter选项采用以下形式的查询文档的字符串表示形式:

{ <field1>: <expression1>, ... }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

Examples

多种操作类型的过滤器

以下示例使用过滤器仅审核createCollectiondropCollection操作:

{ atype: { $in: [ "createCollection", "dropCollection" ] } }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] } }'

筛选单个数据库上的身份验证操作

<field>可以包含审核消息中的任何字段。对于身份验证操作(即atype: "authenticate"),审核消息在param文档中包含db字段。

以下示例使用过滤器仅审核针对test数据库发生的authenticate操作:

{ atype: "authenticate", "param.db": "test" }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: "authenticate", "param.db": "test" }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
security:
   authorization: enabled
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ atype: "authenticate", "param.db": "test" }'

要对数据库中的所有authenticate操作进行过滤,请使用过滤器{ atype: "authenticate" }

筛选单个数据库的集合创建和删除操作

<field>可以包含审核消息中的任何字段。对于集合创建和删除操作(即atype: "createCollection"atype: "dropCollection"),审核消息在param文档中包括名称空间ns字段。

以下示例使用过滤器仅审核针对test数据库发生的createCollectiondropCollection操作:

Note

正则表达式需要两个反斜杠(\\)才能逃脱点(.)。

{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ } }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ } }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
security:
   authorization: enabled
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ atype: { $in: [ "createCollection", "dropCollection" ] }, "param.ns": /^test\\./ } }'

按授权角色过滤

下面的示例使用过滤器审核test数据库上具有readWrite角色的用户的操作,包括具有从readWrite继承的角色的用户:

{ roles: { role: "readWrite", db: "test" } }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auth --auditDestination file --auditFilter '{ roles: { role: "readWrite", db: "test" } }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
security:
   authorization: enabled
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ roles: { role: "readWrite", db: "test" } }'

筛选读写操作

要在审核中捕获readwrite操作,还必须使审核系统能够使用auditAuthorizationSuccess参数记录授权成功。 [1]

Note

与仅记录授权失败相比,启用auditAuthorizationSuccess会降低性能。

以下示例通过使用过滤器审核find()insert()remove()update()save()findAndModify()操作:

{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
security:
   authorization: enabled
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ atype: "authCheck", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }'
setParameter: { auditAuthorizationSuccess: true }

筛选集合的读写操作

要在审核中捕获readwrite操作,还必须使审核系统能够使用auditAuthorizationSuccess参数记录授权成功。 [1]

Note

与仅记录授权失败相比,启用auditAuthorizationSuccess会降低性能。

下面的示例使用过滤器审核数据库test中的集合ordersfind()insert()remove()update()save()findAndModify()操作:

{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }

要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }' --auditFormat BSON --auditPath data/db/auditLog.bson

包括配置所需的其他选项。例如,如果您希望远程 Client 端连接到您的部署,或者您的部署成员在不同的主机上运行,请指定--bind_ip。有关更多信息,请参见Localhost 绑定兼容性更改

要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。

storage:
   dbPath: data/db
security:
   authorization: enabled
auditLog:
   destination: file
   format: BSON
   path: data/db/auditLog.bson
   filter: '{ atype: "authCheck", "param.ns": "test.orders", "param.command": { $in: [ "find", "insert", "delete", "update", "findandmodify" ] } }'
setParameter: { auditAuthorizationSuccess: true }
[1]*(12)*您可以启用auditAuthorizationSuccess参数而不启用--auth;但是,所有操作都将返回成功以进行授权检查。