我一直在搜索MongoDB和Stackoverflow的文档一段时间,但没有找到任何解决此问题的好方法。
我在EC2中为我的MongoDB服务器创建了一个管理员用户和一些其他用户,但是,当我连接时,我总是可以连接没有用户名或密码(是的,我在配置文件中有auth=true
)。
据我了解,MongoDB的默认行为是允许连接,然后使用db.auth()
或其他东西,但我可以禁用默认行为,因此您必须在执行mongo --host=xx.xx.xx.xx...
时进行身份验证吗?
谢谢,
约翰
答案 0 :(得分:1)
如果您不允许数据库连接,您希望数据库能够对人员进行身份验证吗?这必须可以进行身份验证。当你连接shell时,你所做的就是通过TCP成功连接到数据库的shell程序,就是它,没有命令运行,没有特殊权限需要这样做你可以用telnet做同样的事情连接到您的数据库(尽管您需要能够键入有线协议来执行任何操作)。
可怕的部分只是因为它看起来像你有访问权限,因为你有一个MongoDB shell提示符而不是登录提示符或类似提示符。实际上,与使用ssh
连接到远程服务器并让它向您显示login:
提示符没有什么不同 - 您已连接,是的,但您必须进行身份验证以实际执行任何操作。< / p>
如果您希望让人们自动登录,或者出现提示(如上面ssh
),那么您可以查看包装或自定义shell(难以支持)或者您可以看到为每个启动身份验证的用户部署mongorc file - 这当然是可选的,无法强制执行。他们仍然可以单独下载mongo shell(或修改rc文件),然后像以前一样使用它。
作为最终(比挑战/响应更安全的选项),您可以查看requiring SSL进行连接,从而拒绝任何出示无效证书的人。但是,对于最终用户来说,证书管理可能非常难以支持(更不用说设置烦人了)。