MongoDB单服务器生产环境的安全性和可靠性



我想在一台服务器上设置MongoDb,我一直在寻找,以确保我做得对。到目前为止,我已经收集了一些关于安全性的基础知识:

  1. 启用认证(http://www.mongodb.org/display/DOCS/Security+and+Authentication -默认不启用?)
  2. 只允许本地主机连接
  3. 在PHP中,一定要将GET和POST参数转换为字符串,以避免注入攻击(http://www.php.net/manual/en/mongo.security.php)

我还学会了一件关于可靠性的事。

  1. 你曾经在多个盒子上使用分片,但现在你可以只启用日志记录?(http://stackoverflow.com/questions/3487456/mongodb-are-reliability-issues-significant-still)

故事就这样结束了吗?启用身份验证和日志记录,您就可以使用单个服务器了吗?

谢谢!

如果您在单个服务器上运行,那么您肯定应该启用日志记录。在2.0上,这是64位构建的默认值;在32位构建或更早的版本(1.8。x系列),您可以使用--journal命令行标志或配置文件选项启用它。请注意,使用日志记录将导致MongoDB使用正常情况下的两倍内存,这在32位机器上主要是一个问题(因为内存通常限制在2GB左右,使用日志记录将有效地减半)。

身份验证可以提供帮助,但最好的安全措施是确保只有您控制的机器才能与MongoDB通信。您可以使用--bind_ip命令行标志或配置文件选项来完成此操作。您还应该设置防火墙(iptables或类似的防火墙)作为额外的措施。

对于注入攻击,只要您不盲目地将JSON(或类似结构)转换为PHP关联并将其直接传递给MongoDB方法,您就应该是安全的。如果您自己构建关联,通过处理$POST$GET值,您应该是安全的。

最新更新