设置数据库审核
注意
此功能不适用于
M0
免费集群、M2
和M5
集群。如需了解更多信息,请参阅 Atlas M0(免费集群)、M2 和 M5 限制。无服务器实例目前不支持此功能。要了解更多信息,请参阅无服务器实例限制。
数据库审核允许管理员跟踪具有多个用户的部署的系统活动。 Atlas 管理员可以选择要审核的操作、数据库用户、Atlas 角色和 LDAP 群组。 Atlas 支持审核大多数记录的系统事件操作,但有以下限制:
当 Atlas 用户在集群上的 Atlas 用户界面中执行操作时,Atlas 审核日志和
mongodb.log
文件都会将mms-automation
数据库用户记录为执行可审核动作的用户。但是,项目操作日志会记录负责该动作的 Atlas 用户的实际用户名。Atlas 审核日志不追踪用户创建或修改事件,因为 Atlas 直接在
admin
数据库中执行这些操作。
重要
执行全面数据库审核
由于这些限制,您必须组合使用审核日志、mongodb.log
和项目活动源来执行全面审核。
authCheck
事件操作将记录试图对项目集群中的数据库执行读取和写入的用户的授权尝试。Atlas 会审核以下特定命令:
[1] | (1、2、3) MongoDB 4.2 版本及更高版本不支持这些命令。 |
Atlas 将 authCheck
事件操作实现为以下四个单独的操作:
事件操作 | 说明 |
---|---|
authChecksReadFailures | authCheck 事件操作,适用于将auditAuthorizationSuccess参数设置为 false 时所有失败的读取。此事件操作是与读取相关的事件操作的默认设置。 |
authChecksReadAll |
警告如果启用auditAuthorizationSuccess ,可能会严重影响集群性能。请谨慎启用此选项。 |
authChecksWriteFailures | 当auditAuthorizationSuccess参数设置为 false 时,针对所有失败写入的 authCheck 事件操作。此事件操作是写入相关事件操作的默认操作。 |
authChecksWriteAll |
警告如果启用auditAuthorizationSuccess ,可能会严重影响集群性能。请谨慎启用此选项。 |
要了解 MongoDB 如何将审核事件写入磁盘,请参阅 MongoDB 手册中的审核保证。
必需的访问权限
要配置审核日志,必须对待更新项目具有 Project Owner
访问权限,或者对包含待更新项目的组织具有 Organization Owner
访问权限。
步骤
注意
要了解有关审核临时数据库用户操作的最佳实践,请参阅审核临时数据库用户。
采取以下步骤设置数据库审计:
确认要审核身份验证失败事件。
默认情况下,Atlas 在主节点的审核日志记录已知和未知用户失败的身份验证尝试。
在 Select users and roles(选择用户和角色)中,选择要对其进行审核的数据库用户、Atlas 角色和 LDAP 群组。
或者,单击Use Custom JSON Filter以手动输入 JSON 字符串形式的审核筛选器。有关在 Atlas 中配置自定义审核筛选器的更多信息,请参阅配置自定义审核筛选器。
要在 Atlas 中检索审核日志,请参阅MongoDB 日志。要使用 API 检索审核日志,请参阅日志。
配置自定义审核筛选器
注意
此功能不适用于
M0
免费集群、M2
和M5
集群。如需了解更多信息,请参阅 Atlas M0(免费集群)、M2 和 M5 限制。无服务器实例目前不支持此功能。要了解更多信息,请参阅无服务器实例限制。
Atlas 支持指定 JSON 格式的审核筛选器以自定义MongoDB 审核。
自定义审核筛选器使用户可以放弃托管 Atlas UI 审核筛选器生成器,转而使用手工量身定制的事件审核精细控制。Atlas 只确认自定义筛选器使用了有效的 JSON 语法,而不验证或测试筛选器的功能。
审核筛选器文档必须解析为与审核事件消息中的一个或多个字段相匹配的查询。筛选器文档可以使用查询运算符和相等条件的组合来匹配所需的审核消息。
要查看审核筛选器示例,请参阅审核筛选器示例。要了解有关配置 MongoDB 审核筛选器的更多信息,请参阅配置审核筛选器。
重要
Atlas 采用滚动升级策略,在 Atlas 项目的所有集群中启用或更新审核配置设置。滚动升级要求每个副本集至少进行一次选举。
要详细了解如何测试应用程序对副本集选举的弹性,请参阅测试主故障转移。要了解有关 Atlas 如何提供高可用性的更多信息,请参阅 Atlas 高可用性。
步骤
可选:切换 Audit authorization successes(审核授权成功)。
警告
启用 Audit authorization successes 会严重影响集群性能。请谨慎启用此选项。
对于指定authCheck
操作类型的审核筛选器,默认情况下,审核系统仅记录任何指定param.command
的授权失败。启用Audit authorization successes会指示审核系统也记录授权成功情况。有关详细信息,请参阅auditAuthorizationSuccess
编辑自定义审核过滤器
您可以随时编辑筛选器:
查看自定义审核筛选器
审核筛选器示例
使用以下审核筛选器示例,指导您构建自己的筛选器。
重要
这些示例不适用于生产环境,也不能代替MongoDB 审核文档。
审核已知用户的所有身份验证事件
{ "atype": "authenticate" }
审核已知用户的所有身份验证事件和未知用户的所有身份验证失败事件
{ "$or": [ { "users": [] }, { "atype": "authenticate" } ] }
注意
需要执行 authenticate
操作,以记录已知用户和未知用户的身份验证失败事件。
审计“我的集群管理员”用户的身份验证事件
{ "atype": "authenticate", "param": { "user": "myClusterAdministrator", "db": "admin", "mechanism": "SCRAM-SHA-256" } }
审核未经授权而执行所选命令的尝试
{ "atype": "authCheck", "param.command": { "$in": [ "insert", "update", "delete" ] } }