公告推出MongoDB 8.0,有史以来最快的MongoDB! 阅读更多 >>推出MongoDB 8.0,有史以来最快的MongoDB! >>

MongoDB安全清单及最佳实践

最后更新:2020年6月16日

数据安全是首要关注的问题。关于新数据泄露的新闻几乎每周都会成为头条,描述了影响数以千计用户的妥协。

好消息是,MongoDB拥有您确保安全最佳实践所需的一切,从加密到身份验证、访问控制和审计。

深入文档和详细资源,如白皮书,可用于深入了解此处概述的所有最佳实践。此页面提供了MongoDB安全最佳实践的简要概述,并提供了更多学习的链接。

现在,让我们回顾一下确保您的MongoDB数据库安全的一些方法。


1. 创建单独的安全凭据

启用身份验证,为每个访问MongoDB的用户或进程创建登录凭据。

假设有多个用户需要数据库的行政访问权限。不要共享凭据,因为这会增加账户被泄露的可能性,而是为每个人发放自己的凭据,并根据以下描述的他们的角色分配权限。




2. 使用基于角色的访问控制

不要给个别用户授权,而是将授权与角色相关联,例如应用程序服务器、数据库管理员、开发人员、BI工具等。预定义的角色有现成的,如dbAdmin、dbOwner、clusterAdmin等。这些角色可以进一步定制以满足特定团队和功能区域的需求,同时确保组织内的一致性政策。




3. 限制对数据库的连接

数据泄露发生的一种方式是入侵者获得对数据库的远程访问权限。通过限制对数据库的远程连接,您可以降低这种风险。最佳实践是仅允许从指定的IP地址连接,这种做法被称为白名单。

使用MongoDB Atlas,MongoDB的全托管服务,每个Atlas项目都拥有自己的VPC。为了提高安全性,客户可以启用与承载其应用程序的私有网络的VPC对等连接,以防止通过公共互联网访问。




4. 加密您的数据

在大多数数据泄露事件中,数据可被未经授权的用户读取。加密数据会使没有解密密钥的人无法读取。

加密可以通过多种方式实现

  • 静态数据加密。在数据存储的地方加密数据。MongoDB社区版不支持静态加密;它需要MongoDB企业版或MongoDB Atlas。
  • 传输中数据加密。默认情况下,MongoDB使用TLS加密所有传输中的数据。



5. 为敏感数据添加额外加密

MongoDB 4.2版本的一个关键特性是客户端字段级加密。

大多数加密都是在服务器端应用的。这意味着如果有人访问了服务器,他们可能能够读取那些数据。客户端字段级加密确保只有相关方可以使用唯一的解密密钥在其客户端上读取自己的数据。

这意味着,实际上只有用户可以读取加密数据。

假设Ralph的退休账户包括他的社会保险号码。这些数据以加密形式存储,因此只有Ralph可以查看。不是数据库管理员,不是开发者,不是分析师——只有Ralph。

启用FLE不需要更新应用程序代码;只需更新数据库驱动程序。

以下动画演示了这一重要功能的工作原理

Client-side-field-level-encryption-example

客户端字段级加密常见问题解答提供了有关FLE的额外详细信息,这些信息来自一个完整长度的网络研讨会




6. 审计和日志

审计跟踪应记录谁更改了数据库的配置,更改了什么以及何时进行更改。MongoDB企业版提供了完整的审计跟踪,记录了管理操作。




社区版或企业版服务器?

MongoDB社区版是MongoDB的免费和开源版本。MongoDB企业服务器版为大规模的企业用例提供了额外的安全和性能功能。两个版本的比较信息可在此处找到,以及从社区版升级到企业服务器版的说明。

但是,如果您正在考虑使用企业服务器以实现LDAP集成和静态数据加密等功能,为什么不评估MongoDB Atlas呢?MongoDB Atlas是一种完全托管的数据库即服务,它提供MongoDB企业服务器版的所有优点,以及默认的安全最佳实践。MongoDB Atlas在所有三个主要公共云(AWS、Microsoft Azure和GCP)上都是可用的且默认安全的。




底线:自信地部署安全方案

MongoDB处于安全的最前线。安全实践者将欣赏MongoDB提供的加密选择深度和范围,以及投入客户端字段级加密等功能的工程努力。

开始使用 MongoDB Atlas

MongoDB Atlas 从一开始就为您的数据库提供内置的安全功能。