Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

在自管理部署上配置审核筛选器

在此页面上

  • 审计过滤器语法
  • 运行时的过滤器配置
  • 系统启动时的筛选器配置
  • 示例
  • 了解详情

注意

MongoDB Atlas 中的审核

MongoDB Atlas 支持对所有 M10和更大的集群进行审核。 Atlas 支持指定如下所述的 JSON 格式的审核筛选器,并使用 Atlas 审核筛选器构建器来简化审核配置。 要了解更多信息,请参阅 Atlas 文档中的设置数据库审核配置自定义审核筛选器。

MongoDB Enterprise 支持 审核各种操作。启用后,默认情况下审核工具会记录所有可审核的操作,详见审核事件操作、详细信息和结果。您可以指定事件过滤器来限制记录的事件。

可以在启动时配置审核过滤器,也可以将 MongoDB 配置为允许在运行时配置过滤器。

审计过滤器的形式与 find 命令指定的查询谓词文档相同。要查看审计过滤器示例,请参阅示例。

从 MongoDB 5.0 开始,可在运行时配置 mongodmongos 节点的审核配置。一组这样的节点可以参与分布式审核配置。

要将节点包含在分布式审核配置中,请按如下方式更新节点的配置文件并重新启动服务器。

Parameter

true

未设置

未设置

如果出现以下情况,服务器将记录错误并无法启动:

  • runtimeConfigurationtrue 并且

  • auditLog.filterauditAuthorizationSuccess 已设置。

要在运行时修改审核筛选器和 auditAuthorizationSuccess 参数,请参阅 auditConfig

审核过滤器可以在命令行上指定,也可以在用于启动 mongodmongos 实例的配置文件中指定。

筛选器可在配置文件auditLog 会话下以 YAML 格式指定。有关配置示例,请参阅以下示例。

注意

如果启用 runtimeConfiguration,则配置文件不能用于指定审核筛选器。

要记录所有可审核的事件,请勿指定审核过滤器。默认情况下,审核工具会记录所有可审核的操作。

以下示例通过筛选器仅审核 createCollectiondropCollection 操作:

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

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 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" }

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 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 操作,请省略 "param.db": "test" 并使用过滤器 { atype: "authenticate" }

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

以下示例通过使用过滤器,只审核针对 test 数据库进行的 createCollectiondropCollection 操作:

注意

正则表达式需要两个反斜杠 (\\) 来转义点 (.)。

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

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 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\\./ }'

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

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

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 YAML 格式。

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

如需在审核中捕获读取和写入操作,还必须使用 auditAuthorizationSuccess 参数启用审核系统记录授权成功日志。[1]

注意

启用 auditAuthorizationSuccess 比仅记录授权失败更能降低性能。

该筛选器审核多个读写操作:

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

经审核的操作包括:

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 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 }

如需在审核中捕获读取和写入操作,还必须使用 auditAuthorizationSuccess 参数启用审核系统记录授权成功日志。[1]

注意

启用 auditAuthorizationSuccess 比仅记录授权失败更能降低性能。

此过滤器对 test 数据库中的 orders 集合执行的多个读取和写入操作进行审核:

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

经审核的操作包括:

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

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

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 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 }

从 MongoDB 8.0 开始,MongoDB 可以以 OCSF 格式写入日志消息。OCSF 架构包含与默认 mongo 架构不同的字段。

以下审核过滤器捕获 OCSF模式中记录的网络活动操作:

{ category_uid: 4 }

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

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ category_uid: 4 }' --auditFormat JSON --auditSchema OCSF --auditPath data/db/auditLog.json

要在配置文件中指定审核筛选器,必须使用配置文件的 YAML 格式。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: JSON
path: data/db/auditLog.json
filter: '{ category_uid: 4 }'
schema: OCSF
setParameter: { auditAuthorizationSuccess: true }

有关 OCSF 日志消息的更多信息,请参阅 OCSF 架构审核消息。

要过滤多个审核消息字段,您可以指定顶级查询操作符,例如 $or 。例如,以下过滤器捕获 atypeauthenticate 或该操作由具有 readWrite 角色的用户执行的操作:

{
$or: [
{ atype: "authenticate" },
{ "roles.role": "readWrite" }
]
}

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

mongod --dbpath data/db --auth --setParameter auditAuthorizationSuccess=true --auditDestination file --auditFilter '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }' --auditFormat BSON --auditPath data/db/auditLog.bson

根据配置要求包括其他选项。例如,如果希望远程客户端连接到您的部署,或是您的部署成员运行在不同主机上,请指定 --bind_ip

要在配置文件中指定审核筛选器,必须使用配置文件的 YAML 格式。

storage:
dbPath: data/db
security:
authorization: enabled
auditLog:
destination: file
format: BSON
path: data/db/auditLog.bson
filter: '{ $or: [ { atype: "authenticate" }, { "roles.role": "readWrite" } ] }'
[1](1, 2) 您可以启用 auditAuthorizationSuccess 参数,而不启用 --auth;但是,所有操作都将返回授权检查成功。

后退

配置