设置数据库审核
注意
数据库审核允许管理员追踪具有多个用户的部署的系统活动。 Atlas管理员可以选择要Atlas 审核的操作、数据库用户、 Atlas角色和LDAP群组。 Atlas支持 审核大多数记录的系统事件操作,但有以下限制:
Atlas 审核日志不追踪用户创建或修改事件,因为 Atlas 直接在
admin
数据库中执行这些操作。
authCheck
事件操作将记录试图对项目集群中的数据库执行读取和写入的用户的授权尝试。Atlas 会审核以下特定命令:
authCheck Reads | authCheck Writes |
---|---|
Atlas 将 authCheck
事件操作实现为以下四个单独的操作:
事件操作 | 说明 |
---|---|
|
|
|
警告:如果启用auditAuthorizationSuccess ,可能会严重影响集群性能。 请谨慎启用此选项。 |
|
|
|
警告:如果启用auditAuthorizationSuccess ,可能会严重影响集群性能。 请谨慎启用此选项。 |
要了解 MongoDB 如何将审核事件写入到磁盘,请参阅《MongoDB 手册》中的审核保证。
必需的访问权限
要配置审核日志,必须对待更新项目具有 Project Owner
访问权限,或者对包含待更新项目的组织具有 Organization Owner
访问权限。
步骤
注意
要了解有关审核临时数据库用户操作的最佳实践,请参阅审核临时数据库用户。
采取以下步骤设置数据库审计:
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
确认要审核身份验证失败事件。
默认情况下,Atlas 在主节点的审核日志记录已知和未知用户失败的身份验证尝试。
在 Select users and roles(选择用户和角色)中,选择要接受操作审核的数据库用户、Atlas 角色和 LDAP 组。
或者,单击 Use Custom JSON Filter(使用自定义 JSON 过滤器)以 JSON 字符串的形式手动输入审核过滤器。有关在 Atlas 中配置自定义审核过滤器的更多信息,请参阅配置自定义审核过滤器。
在 Select actions to audit(选择要审核的操作)中选择要审核的事件操作。
注意
取消选择authenticate
操作可防止 Atlas 审核身份验证失败。
注意
为 authCheck
事件操作选择审核授权成功粒度时,Atlas 不支持读取和写入的不同选择。例如,您不能为 authCheck Reads 选择 Successes and Failures ,也不能为 authCheck Writes 选择 Failures。如果您同时选择 authCheck Reads 和 authCheck Writes,Atlas 会自动将所选粒度应用于两者。
要检索 Atlas 中的审核日志,请参阅 MongoDB 日志。要使用 API 检索审核日志,请参阅日志。
配置自定义审核筛选器
注意
Atlas 支持指定 JSON 格式的审核过滤器,以自定义 MongoDB 审核。
自定义Atlas 审核筛选器允许用户放弃托管Atlas用户界面审核过滤器构建器,转而对事件审核进行手工定制的精细控制。 Atlas仅检查自定义过滤是否使用有效的JSON语法,而不会验证或测试筛选器的功能。
审核过滤器文档必须解析为与审核事件消息中的一个或多个字段匹配的查询。过滤器文档可以使用查询操作符和等值条件的组合来匹配所需的审核消息。
如需查看示例审核过滤器,请参阅示例审核过滤器。如需了解有关配置 MongoDB 审核过滤器的更多信息,请参阅配置审核过滤器。
重要
Atlas 采用滚动升级策略,在 Atlas 项目的所有集群中启用或更新审核配置设置。滚动升级要求每个副本集至少进行一次选举。
要详细了解如何测试应用程序对副本集选举的弹性,请参阅测试主故障转移。要了解有关 Atlas 如何提供高可用性的更多信息,请参阅 Atlas 高可用性。
步骤
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
切换 Audit authorization successes(启用 DevTools)。
警告
启用 Audit authorization successes 会严重影响集群性能。请谨慎启用此选项。
对于指定 authCheck
操作类型的审核过滤器,审核系统默认只记录指定 param.command
的授权失败情况。启用 Audit authorization successes 会指示审核系统同时记录授权成功情况。请参阅 auditAuthorizationSuccess 了解更多信息
编辑自定义审核过滤器
您可以随时编辑筛选器:
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
查看自定义审核筛选器
要使用 Atlas CLI 返回指定项目的审核配置, 请运行以下命令:
atlas auditing describe [options]
要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas auditing describe。
要在 Atlas 用户界面中查看您的自定义审核过滤器,请执行以下操作:
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
审核筛选器示例
使用以下审核筛选器示例,指导您构建自己的筛选器。
重要
这些示例不适合在生产环境中使用,也不能取代熟练使用 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" ] } }