在MySQL中,我可以授予更新特定字段的权限:
GRANT SELECT, UPDATE (col_Eagle) ON db_ANIMAL.tb_BIRD to 'JOHNNY'@'localhost';
MongoDB只有"读"或" readWrite"作用:
db.createUser(
{
user: "JOHNNY",
pwd: "pass",
roles: [
{
role: "read", # or readWrite??
db: "db_ANIMAL"
}
]
}
)
如何限制MongoDB 3.4中特定字段的更新权限?
答案 0 :(得分:4)
与MongoDB 3.4一样,内置访问控制的粒度仅为Collection-Level Access Control。
例如,您可以为集合创建用户定义的角色限制权限:
privileges: [
{ resource: { db: "db_ANIMAL", collection: "tb_BIRD" }, actions: [ "find", "update" ] }
]
为了限制对集合数据子集的只读访问,您可以考虑使用MongoDB 3.4中的新Views功能或使用$redact
聚合阶段实现Field Level Redaction(MongoDB 2.6) +)。
如果您需要对字段级更新进行更细粒度的访问控制,那么您当前必须在API或应用程序代码中实现此功能。
您可能希望在MongoDB问题跟踪器中观看/提升一些相关功能请求:
答案 1 :(得分:0)
我刚刚针对此主题创建了一个 post in MongoDB's forums,MongoDB 员工向我指出了解决方案。
要为最终用户(与直接访问数据库的应用程序交互的用户)实现字段级权限,现在可以使用 MongoDB Realm 来完成,如解释在 documentation 中。