【发布时间】:2021-04-13 14:34:23
【问题描述】:
我的数据库有那些 Collection : 用户、交易、余额、... 每个集合管理器由一个 VPS。如何使用指定操作为每个集合创建用户? 示例 VPS A 只能读取集合用户,但无法读取用户中的密码字段。 VPS B 可以读取/创建收款余额,但不能编辑或删除它。谢谢!
【问题讨论】:
我的数据库有那些 Collection : 用户、交易、余额、... 每个集合管理器由一个 VPS。如何使用指定操作为每个集合创建用户? 示例 VPS A 只能读取集合用户,但无法读取用户中的密码字段。 VPS B 可以读取/创建收款余额,但不能编辑或删除它。谢谢!
【问题讨论】:
你需要create a Role,然后你可以grant privileges给它。
但是,您不能为单个字段指定权限。您只能在数据库和/或集合级别设置它。
例子:
use admin
db.createRole(
{
role: "VPS_A",
roles: [],
privileges: [
{ resource: { db: "db", collection: "user" }, actions: ["find"] }
]
}
)
db.createRole(
{
role: "VPS_B",
roles: [],
privileges: [
{ resource: { db: "db", collection: "balances" }, actions: ["find", "insert"] }
]
}
)
db.createRole(
{
role: "VPS_ReadAll",
roles: [],
privileges: [
// Can read ANY collection in db
{ resource: { db: "db", collection: "" }, actions: ["find"] }
]
}
)
db.grantRolesToUser("<username>", ["VPS_A", "VPS_B"])
Mongo 还提供Built-In Roles。为了在数据库的所有集合上授予read 权限,您还可以授予:
db.grantRolesToUser("<username>", [{ role: "read", db: "db" }])
【讨论】: