Rob*_*ert 6 permissions roles mongodb
我试图在我的MongoDB服务器上实现一些限制:
我的服务器上的两个数据库应该限制删除/删除操作 - 只允许一个特殊的用户帐户这样做.所有其他数据库应完全不受限制(当然不包括管理数据库):
我尝试使用两个用户来模拟这种情况:
| database A & B | all the other databases |
---------------------------------------------------------
user a | read & write | read & write |
user b | read-only | read & write |
Run Code Online (Sandbox Code Playgroud)
使用该readAnyDatabase角色可以轻松地让所有人都阅读所有数据库.但是,建模用户b只能读取数据库A和B,但对所有其他数据库(包括稍后创建的数据库)具有读写访问权限让我头疼.
如何在MongoDB中实现此安全模型?
小智 1
首先在您的mongodb.conf文件中启用身份验证
auth = true
Run Code Online (Sandbox Code Playgroud)
创建一个数据库perm来保存我们将在下面创建的用户权限。
use perm
Run Code Online (Sandbox Code Playgroud)
然后userb使用只读权限创建DatabaseA和DatabaseB
db.createUser(
{
user: "userb",
pwd: "12345",
roles: [
{ role: "read", db: "DatabaseA" },
{ role: "read", db: "DatabaseB" }
]
}
)
Run Code Online (Sandbox Code Playgroud)
userb将只允许读取DatabaseA和DatabaseB其余所有数据库访问用户b将是read-write
现在userb可以使用以下命令登录
mongo --port 27017 -u userb -p 12345 --authenticationDatabase perm
Run Code Online (Sandbox Code Playgroud)