Mongodb

是否可以通過 MongoDB 中的文件(而不是集合)向使用者授予角色權限?

  • October 5, 2017

我正在研究用於調查目的的數據庫。我想公開其中一些資訊,但其他資訊是高度機密的。

我想創建一個使用者並僅授予對集合文件內的公共資訊的訪問權限。例如,在我的集合“人”中,我想顯示姓名而不是電話號碼:

{
  "_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 以保持數據模型的完整性。

引用自:https://dba.stackexchange.com/questions/187620