MongoDB 安全、监控和备份(Mongodump)
其中的关键概念之一 MongoDB 是数据库的管理。安全、备份、数据库访问等重要方面都是数据库管理中的重要概念。
MongoDB 安全概述
MongoDB 能够定义数据库的安全机制。默认情况下,人们不会希望每个人都可以访问每个数据库 MongoDB因此需要有某种安全机制 MongoDB 很重要
以下是在数据库中实施安全性的最佳实践
- 启用访问控制——创建用户,以便所有应用程序和用户在访问数据库时都必须采用某种身份验证机制 MongoDB.
- 配置基于角色的访问控制 – 有时可能需要对权限进行逻辑分组,这些权限可以归入角色。然后可以将用户分配给这些角色。
- 尝试配置 MongoDB 使用某种加密协议,例如 TLS 或 SSL。这些协议可用于加密在客户端和 mongo DB 环境之间流动的流量。
- 配置审计 – 管理员通常需要知道谁在做什么,这有助于以后分析问题。最好的方法是在 MongoDB.
- 使用单独的用户 ID 运行 MongDB 服务器实例,该用户 ID 可以访问服务器环境上所需的资源。
Mongodb 备份程序 – mongodump
使用 MongDB 时,务必确保有备份程序,以防数据 MongoDB 因任何原因而损坏。
以下是可用的备份机制 MongoDB
- 通过复制基础数据文件进行备份 – 这可能是最简单的机制,需要做的就是复制数据文件 MongoDB 驻留并将其复制到另一个位置,理想情况下应该是另一台服务器。
- 使用 mongodump 备份数据库 – mongodump 工具从 MongoDB 数据库并创建高保真 BSON 文件。需要考虑的是,如果数据集很大,那么 mongodump 可能会非常耗费资源,因此为了缓解此问题,应在辅助服务器上运行该实用程序。
- MongoDB 云管理器备份 – MongoDB Cloud Manager 持续备份 MongoDB 通过从 MongoDB 环境。 MongoDB Cloud Manager 可以通过存储 oplog 数据来创建时间点恢复,以便它可以随时为特定副本集或分片集群创建恢复。
Mongodb监控
监测是 MongoDB。这是因为您可以通过监控环境来更主动地发现可能出现的问题。
以下是实施监控的一些示例
- 蒙哥斯塔 将告诉您服务器上实际发生数据库操作(例如插入、查询、更新、删除等)的次数。这将让您清楚地了解服务器处理的负载量,并指示您是否需要服务器上的额外资源或可能需要额外的服务器来分配负载。
- 蒙戈托普 跟踪并报告当前的读写活动 MongoDB 实例,并根据每个集合报告这些统计信息。
- MongoDB 提供 Web 界面,在简单的网页中显示诊断和监控信息。您可以在本地服务器上浏览以下 URL 以打开 Web 管理实用程序
http://localhost:28017
- serverStatus 命令或 shell 中的 db.serverStatus() 返回数据库状态的概述,包括磁盘使用情况、内存使用情况、与数据库建立的连接的详细信息 MongoDB 环境等
MongoDB 索引和性能注意事项
- 索引在任何数据库中都非常重要,可以用来提高搜索查询的效率 MongoDB。如果您在文档中不断执行搜索,那么最好在搜索条件中使用的文档字段上添加索引。
- 尽量始终限制返回的查询结果数量。假设文档中有 2 个字段名称,但您只想查看文档中的 2 个字段。那么请确保您的查询仅针对显示您需要的 2 个字段,而不是所有字段。
- 如果要查看某些字段值,则仅在查询中使用这些字段。如果不需要,请不要查询集合中的所有字段。
配置 MongoDB 使用 Kerberos 身份验证
授权着眼于确保客户端能够访问系统,而身份验证则检查客户端拥有何种类型的访问权限 MongoDB,一旦他们被授权进入系统。
身份验证机制多种多样,下面仅列举其中几种。
MongoDB 使用 x.509 证书进行身份验证
使用 x.509 证书对客户端进行身份验证 – 证书基本上是客户端和 MongoDB 服务器。
因此,无需输入用户名和密码即可连接到服务器,客户端和服务器之间会传递证书。 MongoDB 服务器。客户端基本上会有一个客户端证书,该证书将被传递给服务器以进行服务器身份验证。每个客户端证书对应一个 MongoDB 用户。因此来自的每个用户 MongoDB 必须拥有自己的证书才能通过身份验证 MongoDB 服务器。
为确保其有效,必须遵循以下步骤;
- 必须从有效的第三方机构购买有效证书并将其安装在 MongoDB 服务器。
- 客户端证书必须具有以下属性(单个证书颁发机构 (CA) 必须为客户端和服务器颁发证书。客户端证书必须包含以下字段 - keyUsage 和 extendedKeyUsage。
- 每个连接到 MongDB 服务器的用户都需要有单独的证书。
如何配置 MongoDB 使用 Kerberos 身份验证
以下是配置步骤 MongoDB 启用 Kerberos 身份验证 Windows:
步骤1) 配置 MongoDB 启用 Kerberos 身份验证 Windows
Kerberos 是一种在大型客户端-服务器环境中使用的身份验证机制。
这是一种非常安全的机制,只有加密的密码才允许使用。嗯, MongoDB 具有针对现有的基于 Kerberos 的系统进行身份验证的功能。
步骤2) mongod.exe 服务器进程
接下来,启动 mongod.exe 服务器进程。
步骤3) mongo.exe 客户端进程并连接
接下来,启动 mongo.exe 客户端进程并连接到 MongoDB 服务器。
步骤4) 添加用户 MongoDB
这基本上是 $external 数据库的 Kerberos 主体名称。$external 数据库是一个特殊的数据库,它告诉 MongoDB 通过 Kerberos 系统而不是其自己的内部系统对该用户进行身份验证。
use $external db.createUser( { user: "user1@example.NET", roles:[ { role: "read" , db:"Marketing"} } ] }
步骤5) 开始使用命令
使用以下命令启动支持 Kerberos 的 mongod.exe
mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI
然后您现在可以使用 Kerberos 用户并通过 Kerberos 身份验证连接到数据库。
结语
- 在数据库中实施安全性以确保数据库中的数据安全非常重要。
- 可以使用 createUser 命令在数据库中创建用户。可以为用户分配特定角色,以赋予他们对数据库本身的特定权限。
- 可以为所有数据库或特定数据库添加管理员。这可以通过授予 userAdmin 或 userAdminAnyDatabase 角色来实现。
- 始终备份您的 MongoDB 环境,以便在发生任何灾难时,数据可以轻松恢复。
- 始终监控您的 MongoDB 环境中更加积极主动并在问题发生之前发现问题。
- 有多种身份验证机制可以为数据库提供更好的安全性。其中一个例子是使用证书来验证用户身份,而不是使用用户名和密码。