文档菜单
文档首页
/
MongoDB 手册
/ / /

setAuditConfig

本页内容

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 示例

重要

自 7.1 版本以来已弃用:使用auditConfig 作为集群参数替代。

setAuditConfig

版本5.0.

setAuditConfig 是一个管理命令,用于在运行时为 mongodmongos 服务器实例设置新的审计配置。

使用 db.adminCommand( { command } ) 方法在 admin 数据库上运行 setAuditConfig

此命令在以下环境中托管的部署中可用

  • MongoDB Enterprise:MongoDB的基于订阅、自主管理的版本

  • MongoDB Community:MongoDB的开源、免费使用和自主管理版本

重要

此命令在MongoDB Atlas集群中不受支持。有关所有命令的Atlas支持信息,请参阅不受支持的命令。

该命令具有以下语法

db.adminCommand(
{
setAuditConfig: 1,
filter: <Filter Document>,
auditAuthorizationSuccess: <Boolean>
}
)

该命令具有以下字段

字段
类型
描述
setAuditConfig
整数
过滤器
文档
auditAuthorizationSuccess
布尔值
记录所有,或仅记录失败的访问授权

启用审计,以在运行时使用setAuditConfig

auditAuthorizationSuccess 启用对 authCheck 动作的授权成功审计。参数值必须为 true 才能审计读/写操作。但是,当 auditAuthorizationSuccessfalse 时,由于审计系统仅记录授权失败,因此审计对性能的影响较小。

配置更新通过 oplog 机制进行分发,这意味着 mongod 节点的更新会非常快速地分发到从节点。在从节点轮询更新配置细节之前,如果在主服务器上执行 setAuditConfig 并在 getAuditConfig 上执行操作,则可能会看到因轮询延迟而产生的不一致数据。在 mongos 节点上存在不同的分发机制。 mongos 节点必须定期 轮询 主服务器以获取配置更新。如果在主服务器上执行 setAuditConfig 并在从节点上执行 getAuditConfig,则可能会看到不一致的数据,因为此时从节点尚未轮询到最新的配置细节。

在这些示例中,审计消息已被重新格式化。它们在日志文件中显示为一行。

在创建或删除集合时启用审计。

db.admin.runCommand(
{
setAuditConfig: 1,
filter:
{
atype:
{
$in: [ "createCollection", "dropCollection" ]
}
},
auditAuthorizationSuccess: false
}
)

当在 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
}

auditAuthorizationSuccess 设置为 true 并创建一个过滤器,包括要审计的读取和写入操作的相关动作。

db.admin.runCommand(
{
setAuditConfig: 1,
filter:
{
atype: "authCheck",
"param.command":
{
$in: [ "find", "insert", "delete", "update", "findandmodify" ]
}
},
auditAuthorizationSuccess: true
}
)

使用 find 命令在 sales 数据库中搜索 inventory 集合以创建如下的审计日志条目

{
"atype" : "authCheck",
"ts" : { "$date" : "2021-08-09T15:28:10.788+00:00" },
"uuid" : { "$binary" : "ngwRt5CRTZqgE4TsfleoqQ==", "$type" : "04" },
"local" : { "ip" : "127.0.0.1", "port" : 27502 },
"remote" : { "ip" : "127.0.0.1", "port" : 51930 },
"users" : [],
"roles" : [],
"param" : {
"command" : "find",
"ns" : "sales.inventory",
"args" : {
"find" : "inventory",
"filter" : { "widget" : 1 },
"lsid" : { "id" : { "$binary" : "FNWNxiitQ8GHKrHx8eJSbg==", "$type" : "04" } },
"$clusterTime" : { "clusterTime" : { "$timestamp" : { "t" : 1628521381, "i" : 1 } },
"signature" : { "hash" : { "$binary" : "AAAAAAAAAAAAAAAAAAAAAAAAAAA=", "$type" : "00" },
"keyId" : { "$numberLong" : "0" } } },
"$db" : "sales"
}
},
"result" : 0
}

提示

另请参阅

返回

rotateCertificates