MongoDB作为NoSQL数据库的领导者,不仅在数据一致性、性能和扩展性方面提供了丰富的功能特性,也在安全性方面提供了多种灵活的配置以确保用户数据安全。然而在实际应用中,由于MongoDB用户的不当配置,致使数据泄露的情况时有发生。这正如国家互联网中心早前通报指出,由于MongoDB用户的不当配置,导致部分MongoDB用户存在信息泄露风险。因此,如何正确的配置MongoDB,以确保企业数据安全显得尤为重要。
那么具体应该如何配置呢?可以从用户认证与授权,数据传输中加密,数据静态加密,启用网络防护与数据库审计等方面入手:
启用访问控制和强制鉴权
MongoDB启用访问控制,会对访问用户强制进行鉴权(Authentication),这样就会阻止匿名用户或者一些非法用户的访问。很多用户为了减少配置的复杂性,不启用访问控制,这样会置数据于极大的风险中,甚至会导致数据泄露,为企业造成极大的损失。MongoDB支持多种鉴权方式,可以对访问用户进行身份认证。MongoDB在版本4.0之后默认采用SCRAM的鉴权方式,4.0之前MongoDB采用MongoDB Challenge-Response (MONGODB-CR) 鉴权机制;用户也可以采用x.509证书的鉴权方式。此外,MongoDB企业版还支持与LDAP和Kerberos集成的鉴权方式。用户可以根据企业安全要求进行选择。
配置基于角色的访问控制
MongoDB利用基于角色的访问控制来控制用户的访问。这样,用户只能进行符合其角色的操作。一个用户可以被赋予一种或多种角色,这些角色决定了该用户可以访问哪些数据库资源和进行哪些操作。MongoDB内置了多种角色,也允许用户自定义角色,以灵活的控制用户访问权限。实际企业应用中,应该合理的规划MongoDB使用者的权限,防止数据的丢失和泄露。
启用TLS/SSL通信加密
MongoDB支持TLS/SSL以加密所有的MongoDB网络流量,以确保数据在传输中的安全性。加密通信不局限于应用端与数据库端,MongoDB节点之间的通信也可以被加密。如果您的数据库流量流经了公网或者企业外部网络,强烈建议启用TLS/SSL,保证数据传输中的安全。
对静态数据进行加密,以保证数据安全
对静态数据加密仅在MongoDB企业版进行支持。MongoDB利用加密密钥对数据进行加密存储。用户也可以定期对加密密钥进行轮换,以符合某些安全法规的要求。关于如何配置加密,请参见手册
https://docs.mongodb.com/manual/tutorial/configure-encryption/
限制对MongoDB所在网络的访问
网络安全问题是影响MongoDB安全的最重要的因素之一。用户应当确保MongoDB运行在一个可信的网络环境之中,合理的设置网络防火墙来控制入站和出站流量。只允许可信的客户端能够访问MongoDB所在网络和端口。
MongoDB从版本3.6开始默认绑定localhost, 默认只允许本机访问MongoDB(而在3.6之前的版本中,只有MongoDB RPM或DEB的安装包才默认绑定localhost, 其它安装方式要格外留意MongoDB的网络绑定配置。另3.6版本将于2021年4月停止支持,建议用户尽快进行升级,升级步骤可参见:
https://docs.mongodb.com/manual/release-notes/4.0-upgrade-replica-set/
MongoDB默认访问端口为27017,用户应该注意对该端口的访问保护,当然该端口用户也可以进行更改。
另外用户应当特别注意MongoDB所在主机的安全防护,可采取网络防火墙防护,操作系统用户身份管理,禁用root用户访问等措施保障MongoDB运行环境的安全。
客户端字段级别加密
MongoDB 4.2及以上版本支持客户端字段级别加密。启用客户端字段级别加密后,只有具有正确加密密钥访问权限的应用程序才能解密和读取受保护的数据。这样,只有具有加密密钥的MongoDB使用者才能“正确”读取受保护的数据,进一步确保了敏感数据的安全。有关客户端字段级加密的详细介绍及使用请参阅手册:
https://docs.mongodb.com/drivers/security/client-side-field-level-encryption-guide/
数据库审计
MongoDB企业版提供数据库的审计功能。该功能可以允许管理员及用户能够跟踪访问系统的用户和应用的所有相关活动。用户可以将审计事件写入到控制台、syslog、JSON文件或者BSON文件,以便跟踪任何可疑行为。该功能也是众多法规的要求之一。有关如何配置审计功能,请参阅
https://docs.mongodb.com/manual/tutorial/configure-auditing/
附:MongoDB声明
MongoDB公司关于安全性的最新声明:
安全问题多与MongoDB老版本、免费版本用户未启用MongoDB广泛的安全功能有关。在过去的两年里,MongoDB Atlas为用户提供了安全默认配置,包括默认情况下启用身份验证的最新版本MongoDB Server,以及持续部署的增强安全功能。
MongoDB一直积极、主动地教导客户如何更好地使用MongoDB,为客户提供简单易懂且内容详尽的文档,包括在线培训、MongoDB安全手册和MongoDB安全最佳实践清单等,并反复强调启用安全性的方法和重要性。从五年前的MongoDB 2.6版本开始,我们在所有最受欢迎的下载安装程序上都启用了默认安全设置。3.6及后续版本则进一步启用了所有生成选项的默认安全配置。
我们诚挚地鼓励所有用户更新到最新版本,从而获得更优的安全性——默认情况下禁用网络访问,以及使用SHA-256进行TLS 1.1+加密通信和身份验证。
添加小芒果微信(ID:mongingcom)进入中文用户组技术交流群。
扫描关注,获取更多精彩内容
中国官方网站www.mongodb.com/zh