2017-04-21 51 views
2

在MySQL我可以授予權限,以更新的具體領域:如何爲MongoDB實現字段級權限?

GRANT SELECT, UPDATE (col_Eagle) ON db_ANIMAL.tb_BIRD to 'JOHNNY'@'localhost'; 

MongoDB中只有「讀取」或「讀寫」的角色:

db.createUser(
    { 
     user: "JOHNNY", 
     pwd: "pass", 
     roles: [ 
     { 
      role: "read", # or readWrite?? 
      db: "db_ANIMAL" 
     } 
     ] 
    } 
) 

如何限制更新權限到MongoDB的具體領域3.4?

+0

的MongoDB有這個不支持,最小的他們有[每個集合](https://docs.mongodb.com/manual/core/collection-level-access-control/)。如果你真的需要,你將不得不在自己的應用層中實現它。 –

回答

1

截至MongoDB的3.4,內置的訪問控制的粒度只有竟把Collection-Level Access Control

例如,您可以創建一個用戶定義的角色限制爲集合特權:

privileges: [ 
    { resource: { db: "db_ANIMAL", collection: "tb_BIRD" }, actions: [ "find", "update" ] } 
] 

爲了限制以只讀方式收集數據的子集的訪問,你可以考慮使用新Views功能MongoDB的3.4或使用$redact聚合階段(MongoDB的2.6+)實施Field Level Redaction

如果您需要爲您目前有你自己的API或應用程序代碼中實現這個字段級更新更細粒度訪問控制。

有可能要觀看MongoDB的問題跟蹤/給予好評一些相關的功能要求: