【问题标题】:MongoDB Security issueMongoDB安全问题
【发布时间】:2012-11-07 18:58:08
【问题描述】:

我对 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

令我惊讶的是,我现在能够访问我使用 now 身份验证创建的数据库...

请告诉我我应该做些不同的事情。

【问题讨论】:

  • 您关闭了身份验证并担心您可以在没有身份验证的情况下访问数据?身份验证控制谁可以访问它,它不应该加密数据。它正在做你告诉它做的事情。
  • 正如其他 cmets 中所述,身份验证通过 mongod 服务控制访问,但不会加密或更改磁盘上的数据。这与其他软件一致..例如,在 Windows 中设置密码也不会加密您的数据。有加密敏感数据的解决方案;见Securing Data in MongoDB with Gazzang

标签: javascript java mongodb security database


【解决方案1】:

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

这通常不被认为是有问题的,就像您可以访问服务器并且可以修改守护程序一样,根据定义,您无论如何都可以访问数据文件。

【讨论】:

  • 嗯,这听起来并不完全正确,除非我遗漏了什么。用户是否可以访问服务,即系统管理员,但不能访问数据库?虽然它可能有点不常见,但我可以这样设置。或者更一般地说,我有一个 mongoService 和一个 mongoUser 帐户,它们有两个不同的安全领域。
  • 运行服务的用户必须拥有对数据文件的读取权限。为了在没有身份验证的情况下启动服务并使其能够读取数据文件,启动服务的用户必须能够成为数据库用户,因此必须能够访问数据文件。换句话说,如果系统用户可以修改 mongo 守护进程,那他为什么不能写一个小程序从磁盘上读取数据文件并类似地运行它,完全绕过 mongo 守护进程?
【解决方案2】:

没有身份验证意味着您不必提供凭据:

无身份验证

Default: true

Disable authentication. Currently the default. Exists for future compatibility and clarity.

For consistency use the auth option.

source

您犯的配置错误是您禁用了数据库中的任何身份验证措施。

【讨论】:

    【解决方案3】:

    嗯……

    因为如果我们用文本编辑器编辑数据库文件,我们可以看到存储的信息,你是对的,信息没有加密。

    在我看来,按照这个想法顺序,在安全数据库上执行 mongodump 或 mongorestore 命令时指定用户和密码是多余的。让我们面对现实吧,如果一个恶意的管理员对导出数据感兴趣,他可以自己编辑数据库文件,当然还有更多的工作:P

    我知道身份验证是在数据库级别,而不是实例本身(通过管理数据库),但我认为,对于一个恶意的用户来说,再次获取数据库信息非常容易,因为他不需要指定身份验证删除 Windows 服务...

    感谢您的意见!

    【讨论】:

    • 如果管理员有能力停止或删除 Windows 服务,您就假设他们是恶意管理员。根据定义,具有管理员角色的用户具有重新配置服务、查看数据和以其他方式管理该服务器的完全访问权限。普通或受限用户帐户并非如此 - 文件系统安全性会阻止查看数据文件,而 o/s 权限会限制对其他用户启动的服务的访问。
    猜你喜欢
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多