定义自定义角色、创建用户、授予/撤销角色并修改密码
MongoDB安全命令
use admin
db.createRole({
role: "opsRead",
privileges: [
{ resource: { db: "shop", collection: "" }, actions: ["find", "listCollections", "listIndexes", "collStats", "dbStats"] },
{ resource: { cluster: true }, actions: ["serverStatus", "inprog"] }
],
roles: []
})
db.createUser({ user: "shop_app", pwd: passwordPrompt(), roles: [{ role: "readWrite", db: "shop" }, { role: "opsRead", db: "admin" }] })
db.grantRolesToUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.revokeRolesFromUser("shop_app", [{ role: "clusterMonitor", db: "admin" }])
db.changeUserPassword("shop_app", passwordPrompt())
db.getUser("shop_app", { showPrivileges: true })
db.runCommand({ usersInfo: { forAllDBs: true } })作用
定义包含特定数据库和集群操作的自定义角色,创建拥有该角色和内置角色的用户,授予和撤销角色,修改密码,并列出所有数据库中的用户。
适用场景
按最小权限创建应用和监控账户时、访问评审或密码轮换期间。
注意
定义用户的数据库(此处为 admin)用作 authSource;它必须与应用的连接字符串一致。不要向应用账户授予 root/dbOwner 等宽泛角色。角色变更立即作用于现有会话;修改密码不会断开已打开的连接,只作用于新连接。