如何防止不使用凭据访问MongoDB服务器?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (42)

我的机器中有一个新的MongoDB服务器(2.6.0),我用以下配置文件启动了monhead实例:

dbpath = c:\mongo\data\db
port = 27017
logpath = c:\mongo\data\logs\mongo.log
auth = true

稍后,我通过mongoshell连接到这个mongoshell实例,并创建了一个管理用户:

use admin
db.createUser(
  {
    user: "tugberk",
    pwd: "12345678",
    roles:
    [
      {
        role: "userAdminAnyDatabase",
        db: "admin"
      }
    ]
  }
)

然后,我从shell中注销并使用以下命令重新连接:

mongo --host localhost --port 27017 -u tugberk -p 12345678 --authenticationDatabase admin

然后,我创建了一个具有根访问权限的用户:

use admin
db.createUser(
    {
      user: "tugberkRoot",
      pwd: "12345678",
      roles: [ "root" ]
    }
)

这里不需要最后一步,但是现在应该完全禁用匿名访问。但是,我仍然可以通过mongoshell匿名连接它(即使我没有任何访问权限):

我应该做些什么来防止任何匿名连接?

提问于
用户回答回答于

身份验证阻止您在数据库上执行操作(正如屏幕截图显示的那样--您甚至不能列出数据库),它也不会阻止连接--毕竟,您必须能够连接才能进行身份验证。

有一个添加超时的功能请求,这基本上是服务器的行为方式。

如果要从连接角度锁定内容,则MongoDB透视图中的唯一选项是使用bindIp选择。使用127.0.0.1例如,将其锁定为本地使用(但随后您将无法从远程主机连接),这使得复制成为一个问题,因此在选择绑定地址时要小心。

在MongoDB之外,您应该从防火墙的角度来查看锁定内容。

扫码关注云+社区