Mongodb
是否可以通過 MongoDB 中的文件(而不是集合)向使用者授予角色權限?
我正在研究用於調查目的的數據庫。我想公開其中一些資訊,但其他資訊是高度機密的。
我想創建一個使用者並僅授予對集合文件內的公共資訊的訪問權限。例如,在我的集合“人”中,我想顯示姓名而不是電話號碼:
{ "_id" : ObjectId("5910e7abce41fe759ebb1720"), "name" : "name", "phone" : "999999999" }
我怎樣才能做到這一點?我只找到瞭如何通過集合授予使用者定義的角色。
db.createRole( { role: "myClusterwideAdmin", privileges: [ { resource: { cluster: true }, actions: [ "addShard" ] }, { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] }, { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] }, { resource: { db: "", collection: "" }, actions: [ "find" ] } ], roles: [ { role: "read", db: "admin" } ] }, { w: "majority" , wtimeout: 5000 } )
我應該創建一個“公共資訊”集合還是有更好的方法?
不,您不能授予文件權限…但是您可以查看僅顯示該公共資訊的內容。
如果您還沒有使用(並且無法升級到)MongoDB 3.4,那麼視圖將不是一個選項。在這種情況下,您將需要求助於在不同的集合中提供公共資訊。您始終可以引用屬於敏感集合中文件的 _id 以保持數據模型的完整性。