配置审核过滤器
在本页面
MongoDB Enterprise支持auditing的各种操作。 enabled时,默认情况下,审核工具记录审核事件操作,详细信息和结果中详细介绍的所有可审核操作。要指定要记录的事件,审核功能包括--auditFilter
选项。
Note
从 MongoDB 3.6 开始,默认情况下mongod和mongos绑定到 localhost。如果部署的成员在不同的主机上运行,或者希望远程 Client 端连接到部署,则必须指定--bind_ip
或net.bindIp。有关更多信息,请参见Localhost 绑定兼容性更改。
绑定到其他 IP 地址之前,请考虑启用访问控制和Security Checklist中列出的其他安全措施,以防止未经授权的访问。
--auditFilter Option
--auditFilter
选项采用以下形式的查询文档的字符串表示形式:
{ <field1>: <expression1>, ... }
-
<field>
可以是审核消息中的任何字段,包括param文档中返回的字段。 -
<expression>
是查询条件表达式。
要指定审核过滤器,请将过滤器文档括在单引号中,以将文档作为字符串传递。
要在configuration file中指定审核过滤器,必须使用配置文件的 YAML 格式。
Examples
多种操作类型的过滤器
以下示例使用过滤器仅审核createCollection和dropCollection操作:
{ 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
数据库发生的createCollection
和dropCollection
操作:
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" } }'
筛选读写操作
要在审核中捕获read和write
操作,还必须使审核系统能够使用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 }
筛选集合的读写操作
要在审核中捕获read和write
操作,还必须使审核系统能够使用auditAuthorizationSuccess参数记录授权成功。 [1]
Note
与仅记录授权失败相比,启用auditAuthorizationSuccess会降低性能。
下面的示例使用过滤器审核数据库test
中的集合orders
的find(),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 }
See also
[1] | *(1,2)*您可以启用auditAuthorizationSuccess参数而不启用--auth ;但是,所有操作都将返回成功以进行授权检查。 |