DBAtlas · 数据库运维图谱

定义自定义角色、创建用户、授予/撤销角色并修改密码

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 等宽泛角色。角色变更立即作用于现有会话;修改密码不会断开已打开的连接,只作用于新连接。

在 DBAtlas 中打开 →