MongoDB安全问题

Red*_*gle 1 javascript java database security mongodb

我对MongoDB安全性的信心受到了冲击,我正在跳过它,它会被解释为我做错了...

我已经创建了MongoDB的Windows服务,如下所示:

mongod --logpath"C:\ mongoDB\logs"--logappend --dbpath"C:\ mongoDB\data\db"--serviceName MongoDB --serviceDisplayName"Mongo DB"--port 27017 --auth --install

然后,我创建了一个数据库,并将管理用户添加到该数据库的system.users集合中.

然后我用一些随机信息将该数据库填入我创建的测试集合中.

到目前为止,一切都很好,只有拥有管理员凭据才能访问数据库...

现在重要的是......

我删除了这样的服务:

mongod --remove --serviceName"MongoDB"

然后我重新创建了服务,但没有像这样的身份验证:

mongod --logpath"C:\ mongoDB\logs"--logappend --dbpath"C:\ mongoDB\data\db"--serviceName MongoDB --serviceDisplayName"Mongo DB"--port 27017 --noauth --install

令我惊讶的是,我现在能够访问我用现在认证创建的数据库...

请告诉我,我应该采取不同的做法.

Chr*_*ald 5

身份验证发生在守护程序级别,而不是数据库级别.数据本身未加密或以其他方式访问控制.如果您在不需要凭据的情况下运行服务,那么,正如预期的那样,连接和使用它不需要凭据.

这通常不被认为是有问题的,因为如果你有机会到服务器,并可以修改后台程序,您可以通过定义可以访问数据文件反正.

  • 服务在*运行的用户必须*具有对数据文件的读访问权.为了在没有身份验证的情况下启动服务并且能够读取数据文件,启动服务的用户必须能够成为数据库用户,因此必须能够访问数据文件.换句话说,如果系统用户可以修改mongo守护进程,为什么他不能只编写一个小程序来读取磁盘上的数据文件并以类似方式运行它,完全绕过mongo守护进程? (3认同)