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

mongo 架构审计消息

本页

  • 审计事件操作、详细信息及结果

mongo 架构中,记录的日志消息具有以下语法

{
atype: <string>,
ts : { $date: <timestamp> },
uuid : { $binary: <string>, $type: <string> },
local: { ip: <string>, port: <int> || isSystemUser: <boolean> || unix: <string> },
remote: { ip: <string>, port: <int> || isSystemUser: <boolean> || unix: <string> },
users : [ { user: <string>, db: <string> }, ... ],
roles: [ { role: <string>, db: <string> }, ... ],
param: <document>,
result: <int>
}
字段
类型
描述
atype
字符串
操作类型。请参阅审计事件操作、详细信息及结果.
ts
文档
包含事件日期和UTC时间的文档,格式为ISO 8601。

uuid

文档

包含消息标识符的文档。

UUID 标识一个客户端连接。使用UUID跟踪与该客户端相关的审计事件。字段 $type 的值是

BSON类型 04,表示 $binary 字段包含一个UUID。

版本local5.0.

A 文档,包含运行实例的 ip 地址和端口号。

文档

从MongoDB 5.0开始,可以是一个包含以下字段之一的文档

isSystemUser,表示引发事件的用户是否是系统用户。记录由同一服务器实例上运行的背景进程启动的自引用作业。

  • unix,包含客户端通过Unix域套接字连接时的MongoDB套接字文件路径。

  • 从MongoDB 5.0开始,local 字段已弃用。请在 clientMetadata 审计消息中使用 localEndpoint 字段。

Changed

remotelocal5.0.

A 文档,包含与事件相关联的传入连接的 ip 地址和端口号。
文档

users

isSystemUser,表示引发事件的用户是否是系统用户。记录由同一服务器实例上运行的背景进程启动的自引用作业。

  • unix,包含客户端通过Unix域套接字连接时的MongoDB套接字文件路径。

  • 从MongoDB 5.0开始,local 字段已弃用。请在 clientMetadata 审计消息中使用 localEndpoint 字段。

remotelocal5.0.

数组
用户标识文档数组。由于MongoDB允许会话在每个数据库中使用不同的用户登录,因此此数组可以包含多个用户。每个文档都包含一个 user 字段用于用户名,以及一个 db 字段用于该用户的认证数据库。
roles
数组
用户标识文档数组。由于MongoDB允许会话在每个数据库中使用不同的用户登录,因此此数组可以包含多个用户。每个文档都包含一个 user 字段用于用户名,以及一个 db 字段用于该用户的认证数据库。
指定授予用户的角色的文档数组。每个文档都包含一个 role 字段用于角色名称,以及一个 db 字段用于与该角色关联的数据库。
参数
文档
事件的具体细节。请参阅审计事件操作、细节和结果。
结果
整数

以下表格列出了每个atype或动作类型,相关的param细节以及结果值(如果有)。

atype
参数
结果

authenticate

{
user: <user name>,
db: <database>,
mechanism: <mechanism>
}

从MongoDB 5.0开始,authenticate

  • 记录了不完整的身份验证尝试。

  • 对于外部身份验证机制(如x.509和Amazon Web Services Identity and Access Management (AWS-IAM)),在mechanism中包含原则名称和标识符(参见authMechanism)。

remotelocal5.0.

0 - 成功
18 - 身份验证失败
334 - 机制不可用
337 - 身份验证放弃

authCheck

{
command: <name>,
ns: <database>.<collection>,
args: <command object>
}
ns字段是可选的。
args字段可能会被编辑。

默认情况下,审计系统仅记录授权失败。要启用系统记录授权成功,请使用auditAuthorizationSuccess参数。

启用auditAuthorizationSuccess的性能下降比仅记录授权失败更明显。

从MongoDB 5.0开始,authCheck不会记录内部生成的操作。

remotelocal5.0.

0 - 成功
13 - 未授权执行操作。

clientMetadata

{
localEndpoint : {
ip : <IP address of running instance>,
port : <port of running instance>
} || {
unix : <MongoDB socket file path if connecting through
a Unix domain socket>
},
clientMetadata : {
driver : {
name : <client driver name>,
version : <client driver version>
},
os : {
type : <client operating system type>,
name : <client operating system name>,
architecture : <client operating system architecture>,
version : <client operating system version>
},
platform : <client platform name>,
application : {
name : <client application name>
}
}
}

包含客户端元数据。在客户端运行hello命令时记录。

有关更多详细信息,请参阅客户端数据。

版本local5.0.

0 - 成功
{
ns: <database>.<collection || view>,
viewOn: <database>.<collection>,
pipeline: [ <pipeline definition> ]
}

记录创建

  • 集合时。

  • 创建视图时,视图名称记录在ns字段中。

从MongoDB 5.0开始,为视图记录了以下附加信息

  • 带有视图的数据库和集合的 viewOn 字段。

  • 带有视图的 聚合管道 定义 pipeline 字段。

remotelocal5.0.

0 - 成功
创建数据库
{ ns: <database> }
0 - 成功
{
ns: <database>.<collection>,
indexName: <index name>,
indexSpec: <index specification>,
indexBuildState: <index build state>
}

indexBuildState 的可能值包括

  • IndexBuildStarted

  • IndexBuildSucceeded

  • IndexBuildAborted

从 MongoDB 5.0 开始,createIndex 审计事件

  • 在索引创建的开始和结束时记录,并包括指示索引是否成功创建的消息。

  • 归因于导致 createIndex 审计事件的原始用户。

  • 如果集合具有索引,则记录 createCollection 事件。

remotelocal5.0.

0 - 成功
276 - 索引构建已中止。

审计消息包含结果代码 276,用于 createIndex 审计事件,其中 IndexBuildState 设置为 IndexBuildAborted。审计消息包含结果代码 0,用于 createIndex 审计事件,其中 IndexBuildState 设置为 IndexBuildStartedIndexBuildSucceeded

directAuthMutation

{
document: {
<collection modifications>
},
ns: <database>.<collection>,
operation: <database operation>
}

当数据库操作直接修改 admin.system.usersadmin.system.roles 集合的内容时记录。

版本local5.0.

0 - 成功
重命名集合
{
old: <database>.<collection>,
new: <database>.<collection>
}
0 - 成功
{
ns: <database>.<collection || view>,
viewOn: <database>.<collection>,
pipeline: [ <pipeline definition> ]
}

记录创建

  • 集合被删除。

  • 删除 视图,视图名称记录在 ns 字段中。

从MongoDB 5.0开始,为视图记录了以下附加信息

  • 带有视图的数据库和集合的 viewOn 字段。

  • 带有视图的 聚合管道 定义 pipeline 字段。

此外,从 MongoDB 5.0 开始,当发生 dropDatabase 事件时,记录一个 dropCollection 审计事件。

remotelocal5.0.

0 - 成功
26 - NamespaceNotFound

如果集合或视图不存在,则审计消息显示返回代码为 result: 26

{ ns: <database> }
0 - 成功
{
ns: <database>.<collection>,
indexName: <index name>
}
0 - 成功
{
user: <user name>,
db: <database>,
customData: <document>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}

customData 字段是可选的。

0 - 成功
{
user: <user name>,
db: <database>
}
0 - 成功
从数据库中删除所有用户
{ db: <database> }
0 - 成功

获取集群参数

{
requestedClusterServerParameters: <parameters>
}
0 - 成功

设置集群参数

{
originalClusterServerParameter: <original parameter value>,
updatedClusterServerParameter": <new parameter value>
}
0 - 成功

更新缓存的集群服务器参数

{
originalClusterServerParameter: <original parameter value>,
updatedClusterServerParameter": <new parameter value>
}

当参数更改是由于

  • setClusterParameter 命令的传播时记录。

  • 例如,回滚之类的复制事件

  • 从配置服务器在 mongos 上刷新新的集群参数值

0 - 成功
更新用户
{
user: <user name>,
db: <database>,
passwordChanged: <boolean>,
customData: <document>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}

customData 字段是可选的。

0 - 成功
向用户授予角色
{
user: <user name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 成功
从用户撤销角色
{
user: <user name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 成功
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
],
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

rolesprivileges 字段是可选的。

有关资源文档的详细信息,请参阅自管理部署的资源文档。有关操作列表,请参阅自管理部署的权限操作。

0 - 成功
updateRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
],
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

rolesprivileges 字段是可选的。

有关资源文档的详细信息,请参阅自管理部署的资源文档。有关操作列表,请参阅自管理部署的权限操作。

0 - 成功
{
role: <role name>,
db: <database>
}
0 - 成功
dropAllRolesFromDatabase
{ db: <database> }
0 - 成功
grantRolesToRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 成功
revokeRolesFromRole
{
role: <role name>,
db: <database>,
roles: [
{
role: <role name>,
db: <database>
},
...
]
}
0 - 成功
grantPrivilegesToRole
{
role: <role name>,
db: <database>,
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

有关资源文档的详细信息,请参阅自管理部署的资源文档。有关操作列表,请参阅自管理部署的权限操作。

0 - 成功
revokePrivilegesFromRole
{
role: <role name>,
db: <database name>,
privileges: [
{
resource: <resource document>,
actions: [ <action>, ... ]
},
...
]
}

有关资源文档的详细信息,请参阅自管理部署的资源文档。有关操作列表,请参阅自管理部署的权限操作。

0 - 成功
replSetReconfig
{
old: {
_id: <replicaSetName>,
version: <number>,
...
members: [ ... ],
settings: { ... }
},
new: {
_id: <replicaSetName>,
version: <number>,
...
members: [ ... ],
settings: { ... }
}
}

有关副本集配置文档的详细信息,请参阅自管理副本集配置。

0 - 成功
{ ns: <database> }
0 - 成功
shardCollection
{
ns: <database>.<collection>,
key: <shard key pattern>,
options: { unique: <boolean> }
}
0 - 成功
{
shard: <shard name>,
connectionString: <hostname>:<port>,
}

当分片是副本集时,connectionString 包含副本集名称,并可以包含副本集的其他成员。

0 - 成功
{
ns: <database>.<collection>,
key: <shard key pattern>
}
0 - 成功
{ shard: <shard name> }
0 - 成功
{ }

表示数据库关闭的开始。

0 - 成功
{ msg: <custom message string> }

请参阅logApplicationMessage

0 - 成功

logout

{
reason: <string>,
initialUsers: [ <document>, ... ],
updatedUsers: [ <document>, ... ],
}
reason 将是
  • "从 <数据库> 显式登出"

  • "由于客户端连接关闭而隐式登出"

initialUsers 是一个包含在登出前通过当前客户端认证的用户文档数组。

updatedUsers 是一个包含在登出事件后预期在当前客户端认证的用户文档数组。

initialUsersupdatedUsers 中的每个文档包含
  • user: 用户名

  • db: 用户认证的数据库

版本local5.0.

0 - 成功

startup

{
startupOptions: <document>,
initialClusterServerParameter: <array of documents>
}
  • startupOptions 包含节点启动后的所有选项

  • initialClusterServerParameters 包含节点在启动结束时集群服务器参数的初始值

    • 在它们从存储加载后(对于 mongod

    • 在它们从配置服务器刷新后(对于 mongos)。

版本local5.0.

remotelocal6.1.

0 - 成功

返回

审计消息