MongoDB权限:限制对两个数据库的访问
我试图在我的MongoDB服务器上实现一些限制: 关于删除/删除操作,我的服务器上的两个数据库应该受到限制-应该只允许一个特殊的用户帐户这样做。所有其他数据库应完全不受限制(当然不包括管理数据库): 我尝试使用两个用户来模拟这种情况:MongoDB权限:限制对两个数据库的访问,mongodb,permissions,roles,Mongodb,Permissions,Roles,我试图在我的MongoDB服务器上实现一些限制: 关于删除/删除操作,我的服务器上的两个数据库应该受到限制-应该只允许一个特殊的用户帐户这样做。所有其他数据库应完全不受限制(当然不包括管理数据库): 我尝试使用两个用户来模拟这种情况: | database A & B | all the other databases | --------------------------------------------------------- user a | r
| database A & B | all the other databases |
---------------------------------------------------------
user a | read & write | read & write |
user b | read-only | read & write |
使用readAnyDatabase
角色,让每个人都阅读所有数据库很容易。
然而,用户b只能读取数据库A和b,但对所有其他数据库(包括稍后创建的数据库)具有读写访问权限,这让我感到头痛
如何在MongoDB中实现此安全模型?首先在您的
MongoDB.conf
文件中启用身份验证
auth = true
创建一个数据库perm
,用于保存我们将在下面创建的用户权限
use perm
然后为DatabaseA
和DatabaseB
创建具有只读权限的userb
db.createUser(
{
user: "userb",
pwd: "12345",
roles: [
{ role: "read", db: "DatabaseA" },
{ role: "read", db: "DatabaseB" }
]
}
)
userb
将只允许读取DatabaseA
和DatabaseB
rest所有对userb的数据库访问都将是读写
现在userb
可以使用下面的命令登录
mongo --port 27017 -u userb -p 12345 --authenticationDatabase perm
这是不可能的
您可以组合多个角色并从多个数据库继承它们,但:
授予角色后,用户将获得该角色的所有权限。
一个用户可以同时拥有多个角色,在这种情况下
接收各自角色的所有特权的联合
-
角色总是授予特权,从不限制访问。例如,如果
用户在数据库上同时具有读取和读写数据库角色,则以更大的访问权限为准。
您可以在中找到这些段落
为了对所有未来的数据库进行读写操作,您需要将readWriteAnyDatabase
角色设置为userb。这意味着,对于A和B数据库,您不能降级到read
角色
恐怕您需要手动设置新dbs的角色。您应该使用
security:
authorization: enabled
而不是auth=true
,至于其余部分,Rohit answer完成了任务
另请参见:简而言之,您希望
用户B
具有在特定数据库上只读的有限功能?是的。但同时,此用户应该对当前存在和将来将存在的所有其他数据库(包括用户b创建的数据库)拥有完全权限。userb具有对DatabaseA和DatabaseB的读取权限,但其他数据库呢?在我的问题中,我写道我需要userb能够读写访问其他数据库。使用所示命令创建的userb,这不起作用,因为userb无权访问任何其他数据库。