可以使用pymongo创建用户定义的角色吗?

use*_*620 2 mongodb pymongo

我有一个包含大约30个数据库的MongoDB实例,每个数据库都有一个“ client_data”集合。我想授予我的客户对所有数据库中的该集合的读取特权,而没有其他集合。我想编写一个执行以下操作的脚本:

mongoclient = pymongo.MongoClient("mongodb://admin:password@host/port")
rolenames = []
for dbname in mongoclient.get_databases():
   db = mongoclient[dbname]
   rolename = dbname + "role"
   rolenames.append[rolename]
   db.create_role(rolename, [ {resource: {db: dbname, collection: client_data}, actions: ["find"] } ])
Run Code Online (Sandbox Code Playgroud)

然后

db.create_user("client", password, roles=rolenames)
Run Code Online (Sandbox Code Playgroud)

我知道create_user()函数允许您传入预定义角色作为参数,但是也可以在pymongo中定义新角色吗?

小智 5

是的你可以!看我的例子:

db.command("createRole",
    "manageCurrentOpRole",
    privileges=[{"resource" : {"cluster" : True}, "actions" : ["inprog"]}],
    roles=[])
Run Code Online (Sandbox Code Playgroud)