在mongodb中创建安全数据库

时间:2011-03-23 14:33:29

标签: mongodb

我想在mongodb中创建安全的数据库。

安全意味着应用程序必须通过用户名/密码才能连接到mongodb中的数据库。

2 个答案:

答案 0 :(得分:18)

来自Mongo Java Tutorial

MongoDB可以在安全模式下运行,通过名称和密码身份验证来控制对数据库的访问。在此模式下运行时,任何客户端应用程序必须在执行任何操作之前提供名称和密码。在Java驱动程序中,您只需使用连接的mongo对象执行以下操作:

boolean auth = db.authenticate(myUserName, myPassword);

如果名称和密码对数据库有效,则auth将为true。否则,它将是假的。您应该查看MongoDB日志以获取更多信息(如果有)。

大多数用户在受信任的环境中运行MongoDB而无需身份验证。


配置身份验证和安全性

身份验证存储在每个数据库的system.users集合中。例如,在数据库projectx上,projectx.system.users将包含用户信息。

我们应该首先为整个数据库服务器进程配置管理员用户。该用户存储在特殊管理数据库下。

如果admin.system.users中没有配置用户,则可以从localhost接口访问数据库而不进行身份验证。因此,从运行数据库的服务器(以及因此在localhost上),运行数据库shell并配置管理用户:

$ ./mongo
> use admin
> db.addUser("theadmin", "anadminpassword")

我们现在有一个为数据库管理员创建的用户。请注意,如果我们之前没有进行过身份验证,那么现在我们必须执行进一步的操作,因为admin.system.users中有一个用户。

> db.auth("theadmin", "anadminpassword")

我们可以使用以下命令查看数据库的现有用户:

> db.system.users.find()

现在,让我们为另一个数据库配置一个“常规”用户。

> use projectx
> db.addUser("joe", "passwordForJoe")

最后,让我们添加一个只读用户。 (仅在1.3.2 +中支持)

> use projectx
> db.addUser("guest", "passwordForGuest", true)

答案 1 :(得分:3)

  • 为mongo实例创建管理员用户

> use admin

> db.addUser("admin", "xyzxyz")

  • 切换到需要进行身份验证的数据库

> use newdb

> db.addUser("newuser", "strongpwd")

  • 停止mongo实例/服务。如果通过ppa安装了mongodb,则将其配置为服务。

sudo service mongodb stop

如果是从源安装的,请使用以下命令停止该过程:

/etc/init.d/mongodb stop

  • 更改配置文件以默认使用身份验证

vim /etc/mongodb.conf

auth = true

  • 启动mongodb。如果是服务

sudo service mongodb restart

否则

mongod --config /etc/mongodb.conf

  • 检查是否启用了身份验证:
> show collections上的

newdb应该提供错误

"$err" : "not authorized for query on newdb.system.namespaces",
"code" : 16550

并且应该在

之后工作

> db.auth("newuser", "strongpwd")

现在数据库newdb已受到保护。