2016-06-27 14 views
2

Ich habe eine MongoDB-Instanz, die ungefähr 30 Datenbanken mit jeweils einer "client_data" -Auflistung enthält. Ich möchte meinem Kunden Leseberechtigungen für diese Sammlung für alle Datenbanken und keine anderen Sammlungen erteilen. Ich möchte ein Skript schreiben, die so etwas wie dies funktioniert:Ist es möglich, benutzerdefinierte Rollen mit Pymongo zu erstellen?

mongoclient = pymongo.MongoClient("mongodb://admin:[email protected]/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"] } ]) 

und dann

db.create_user("client", password, roles=rolenames) 

Ich weiß, dass die create_user() Funktion, die Sie in vordefinierten Rollen als Argument passieren lässt, aber es ist ein Möglichkeit, auch neue Rollen in Pymongo zu definieren?

Antwort

2

Ja, Sie können! Sehen Sie sich mein Beispiel an:

db.command("createRole", 
    "manageCurrentOpRole", 
    privileges=[{"resource" : {"cluster" : True}, "actions" : ["inprog"]}], 
    roles=[]) 
+0

Hat dies funktioniert? Kannst du erklären, wie das funktioniert? Wo ist die API-Dokumentation dafür? – pitchblack408

Verwandte Themen