审计日志策略管理
操作场景
审计日志记录您对数据库或集合执行的操作,生成的日志文件将以文件的形式存储在对象存储服务。通过查看日志文件,您可以对数据库进行安全审计,故障根因分析等操作。
使用须知
- 文档数据库服务的审计日志功能默认是关闭的,您可以根据业务需要开启审计日志,开启后系统记录读写操作的审计信息。根据业务模型的不同,会造成不同的性能影响,开启后若出现性能瓶颈,需要考虑临时关闭审计日志或者进行规格扩容。
- 开启审计日志会收取一定费用,收费详情请参见产品价格详情。
- 文档数据库服务会去检测已生成的审计日志,若审计日志超过用户自定义的保留天数,则将其删除。建议审计日志保存180天以上,用于审计回溯和问题分析等场景。
- 审计策略修改后,文档数据库服务将按照新的策略执行审计,原审计日志的保留天数以修改后审计策略的保留天数为准。
- 审计日志不建议删除,如需删除,请先确保审计日志删除后仍然符合您所在地或者企业的安全合规要求,建议删除前下载日志文件在本地备份。审计日志删除后不可恢复,请谨慎操作。
- 您可以通过文档数据库服务查看、下载和删除DDS实例审计日志,详情请参见通过文档数据库服务查看审计日志;也可以按照日志配置管理配置后,在LTS服务查看DDS实例审计日志的详细信息,包括搜索日志、日志可视化、下载日志和查看实时日志等功能,详情请参见通过云日志服务查看审计日志。
- 审计日志默认每小时生成一次,如果日志大小超过最大限制20MB,则会额外生成新的审计日志。
- 客户数据需要使用UTF-8编码格式,对于非UTF-8格式数据,对应语句的审计结果可能会有缺失、遗漏或乱码等非预期现象。
- 文档数据库服务使用的对象存储服务上的审计日志文件,对用户不可见,它们只对后台管理系统可见。
事件样例
如下提供了查询副本集状态信息的样例,详细的字段解释可参考表1。
{
"atype": "query",
"ts": {
"$date": "2025-02-27T12:35:40.512+0000"
},
"local": {
"ip": "192.168.30.90",
"port": 8635
},
"remote": {
"ip": "192.168.26.20",
"port": 43818
},
"users": [
{
"user": "rwuser",
"db": "admin"
}
],
"roles": [
{
"role": "root",
"db": "admin"
}
],
"param": {
"command": "query",
"ns": "test.a",
"args": {
"find": "a",
"filter": {
},
"lsid": {
"id": {
"$binary": "7kwKmFh9TxGStjtn5Urt2w==",
"$type": "04"
}
},
"$clusterTime": {
"clusterTime": {
"$timestamp": {
"t": 1740659738,
"i": 2
}
},
"signature": {
"hash": {
"$binary": "t2eFI3gB9ZruNYf5Y0FIgAZRCr4=",
"$type": "00"
},
"keyId": {
"$numberLong": "7472645695153897501"
}
}
},
"$db": "test"
}
},
"result": 0
"sessionId": "1641365",
"username": "rwuser",
"clientname": "MongoDB Shell",
"affectRows": "0",
"startTime": "1740659740512716",
"endTime": "1740659740513937",
"docsExamined": "0",
"keysExamined": "0",
"returnNum": "0",
"success": true
}
于250130版本之后,审计日志增加了新的字段。您下载原始的日志文件可以看到新的字段,console上查看的审计日志字段不变。
|
字段名称 |
字段类型 |
字段含义 |
|---|---|---|
|
atype |
stringData |
event的操作类型。 |
|
ts |
Date_t |
event生成时的时间戳。 |
|
local(ip) |
BSONObj(ip + port) |
本地ip地址。 |
|
remote(ip) |
BSONObj(ip + port) |
远端ip地址。 |
|
users |
BSONArray |
用户组。 |
|
roles |
BSONArray |
角色组。 |
|
param |
BSONObj |
命令涉及的参数。 |
|
result |
ErrorCodes::Error |
权限认证结果(不是命令执行的结果)。 |
|
sessionId |
stringData |
会话id,连接的唯一标识。 |
|
username |
stringData |
执行该命令的用户。 |
|
clientname |
stringData |
执行该命令的客户端信息。 |
|
affectRows |
long long |
命令执行影响的文档行数。 |
|
startTime |
timestamp |
命令执行的开始时间。 |
|
endTime |
timestamp |
命令执行的结束时间。 |
|
docsExamined |
long long |
命令执行过程中读取的文档数。 |
|
keysExamined |
long long |
命令执行过程中读取的索引数。 |
|
returnNum |
long long |
命令执行结果的文档数。 |
|
success |
bool |
命令执行状态是否正常。 |
设置审计策略
- 登录管理控制台。
- 单击管理控制台左上方的
,选择区域和项目。 - 在页面左上角单击
,选择,进入文档数据库服务信息页面。 - 在“实例管理”页面,选择目标实例,单击实例名称。
- 在左侧导航树,单击“审计日志”。
- 在“审计日志”页面,单击“审计策略”。
- 在弹出的“审计策略”页面,单击
。 - 设置对应参数后,单击“确定”,开启审计策略。
图1 开启审计策略
表2 参数说明 参数名称
说明
全部集合
表示对该实例下所有集合进行审计。
自定义集合
表示对该实例下指定的数据库或集合进行审计。
数据库或集合名称不能包含空格和/\':"[]{}()特殊字符,“$”符号只能在转义时使用。
输入单个数据库名称时,长度不能超过64个字符。
输入单个格式为“数据库.集合”名称时,长度不能超过120个字符。其中,数据库名称不能超过64个字符,集合名称不能为空、不能包含“null”、不能以“system.”作为前缀。
语句类型
支持查询集合下指定语句的审计日志,包括auth、insert、update、delete、command、query语句。
保留天数
保留天数是指审计日志可保留的时间,取值范围为7~732天。
- 审计策略开启后,也可以根据需要进行修改。修改完成后,将根据新的策略生成日志,原有日志的保留天数以修改后审计策略的保留天数为准。
图2 修改审计策略
- 关闭审计策略
关闭审计策略后,文档数据库服务将不再生成审计日志。
如需关闭审计策略,单击
。关闭后,如图3所示。选择是否删除全部审计日志:
- 不勾选,将保留当前还在保留天数内的日志文件,后期可手动删除。
- 勾选,删除当前还在保留天数内的日志文件。
单击“确定”,确认关闭。
- 审计策略开启后,也可以根据需要进行修改。修改完成后,将根据新的策略生成日志,原有日志的保留天数以修改后审计策略的保留天数为准。
