Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB禁用仅通过shell连接的访问_Mongodb - Fatal编程技术网

MongoDB禁用仅通过shell连接的访问

MongoDB禁用仅通过shell连接的访问,mongodb,Mongodb,我已经在MongoDB和Stackoverflow的文档中搜索了一段时间,但还没有找到解决这个问题的好方法 我已经在EC2中为我的MongoDB服务器创建了一个管理员用户和一些其他用户,但是,当我连接时,我总是可以不使用用户名或密码进行连接(是的,我在配置文件中有auth=true) 据我所知,MongoDB的默认行为是允许连接,然后使用db.auth()或其他东西,但是我可以禁用默认行为,以便在执行mongo--host=xx.xx.xx.xx…时必须进行身份验证吗 谢谢 Johan如果您不允

我已经在MongoDB和Stackoverflow的文档中搜索了一段时间,但还没有找到解决这个问题的好方法

我已经在EC2中为我的MongoDB服务器创建了一个管理员用户和一些其他用户,但是,当我连接时,我总是可以不使用用户名或密码进行连接(是的,我在配置文件中有
auth=true

据我所知,MongoDB的默认行为是允许连接,然后使用
db.auth()
或其他东西,但是我可以禁用默认行为,以便在执行
mongo--host=xx.xx.xx.xx…
时必须进行身份验证吗

谢谢


Johan

如果您不允许用户连接,您希望数据库如何对其进行身份验证?这必须能够进行身份验证。当您与shell连接时,您所做的只是使用shell程序通过TCP成功地连接到数据库,也就是说,不需要运行命令,也不需要特殊权限,您可以使用telnet连接到数据库(尽管您需要能够键入wire协议才能执行任何操作).

令人害怕的是,看起来您有访问权限,因为您有一个MongoDB shell提示符,而不是登录提示符或类似的提示符。实际上,这与使用
ssh
连接到远程服务器并让它向您显示
登录:
提示没有什么不同-您已连接,是的,但您必须进行身份验证才能实际执行任何操作

如果您希望让人们自动登录,或者看到提示(如上面的
ssh
),那么您可以研究包装或自定义shell(难以支持),或者您可以考虑为每个用户部署一个启动身份验证的脚本-这当然是可选的,不能强制执行。他们仍然可以单独下载MongoShell(或修改rc文件),然后像以前一样简单地使用它


作为最后一个(比质询/响应更安全的选项),您可以查看以拒绝任何提供无效证书的人的连接。但是,对于最终用户来说,证书管理可能非常难以支持(更不用说设置起来很烦人)。

您可以连接,但您可以执行除信息和身份验证之外的其他操作吗?至于禁用,不,如果MongoDB阻止任何连接,它怎么能进行身份验证呢?是的,就是这样。我可以禁用它吗?让人们连联系都感到害怕吗?等等,这样来宾用户就可以对您的数据库执行完整的操作,如读/写等?如果是这样,那就不应该是这样不,他们不能。他们只需要身份验证和信息。但是我想禁用他们甚至可以连接。好的,对不起,我必须确保我正确理解你。据我所知,这是无法阻止的,因为正如10gen对我说的“如果MongoDB无法连接,它如何进行身份验证?”。对您的安全产生额外疑虑的最佳方法是使用防火墙规则添加第一层安全性我希望允许他们连接,但立即提供凭据,就像我在连接
mongo
时指定用户名和密码一样。这个答案并不是说我想做的事情是否可行,只是说这无关紧要。但是,我猜mongo实例与每个未经身份验证的用户都有一个打开的连接,这是不可避免的?除非您包装shell(例如,使用bash脚本)、为用户提供自定义shell或类似内容,否则目前无法提示预接密码。连接后,您可以为每个用户提供一个mongorc文件(如果您可以强制执行),该文件将有效地自动为他们运行auth命令。您还可以研究要求SSL证书进行身份验证的选项,在这种情况下,任何没有有效证书的连接都将被拒绝,但这可能是过分的。我将添加到答案的链接,指向这两个问题的相关文档。