用户管理
用户创建
MongoDB采用基于角色的访问控制(RBAC)来确定用户的访问。 授予用户一个或多个角色,确定用户对MongoDB资源的访问权限和用户可以执行哪些操作。 用户应该只有最小权限集才能确保最小权限的系统。
MongoDB系统的每个应用程序和用户都应该映射到不同的用户。 这种访问隔离便于访问撤销和持续的用户维护。
创建管理员用户
要在MongoDB部署中创建用户,请连接到部署,然后使用db.createUser()方法或createUser命令添加用户。
> use admin
> db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
)
修改密码
db.changeUserPassword("username","newpassword")
用户删除
db.dropUser("root")
用户认证
db.auth('user','pwd')
用户查询
db.system.users.find()
删除用户角色
db.revokeRolesFromUser(
"usename",
[
{ role: "readWrite", db: "accounts" }
]
)
添加用户角色
db.grantRolesToUser(
"reportsUser",
[
{ role: "read", db: "accounts" }
]
)
角色管理
自定义角色保存在admin数据库system.roles集合中
添加角色
db.createRole(
{
role: "<name>",
privileges: [
{
resource: { db: "myApp", collection: "" },
actions: [ "insert", "dbStats", "collStats", "compact" ]
}
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
]
}
)
查看角色
db.getRole("rolename",{showPrivileges:true})
删除角色
db.dropRole("rolename")
角色权限
角色 | 权限 |
---|---|
read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
dbOwner | 允许在当前DB中执行任意操作 |
useradmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
readAnyDatabase | 赋予用户所有数据库的读权限,只在admin数据库中可用 |
readWriteAnyDatabase | 赋予用户所有数据库的读写权限,只在admin数据库中可用 |
userAdminAnyDatabase | 赋予用户所有数据库管理User的权限,只在admin数据库中可用 |
dbAdminAnyDatabase | 赋予管理所有数据库的权限,只在admin数据库中可用 |
root | 超级账号,超级权限,只在admin数据库中可用。 |
clusterAdmin | 赋予管理集群的最高权限,只在admin数据库中可用 |
clusterManager | 赋予管理和监控集群的权限 |
clusterMonitor | 赋予监控集群的权限,对监控工具具有readonly的权限 |
hostManager | 赋予管理Server |
更多:https://docs.mongodb.com/manual/core/security-user-defined-roles/