赞
踩
MongoDB使用基于角色的访问控制(RBAC)来确定用户的访问权限。用户被赋予一个或多个角色决定了用户的访问或特权MongoDB的资源和操作 用户可以执行。用户应该只拥有确保系统具有最小权限所需的最小权限集。
MongoDB系统的每个应用程序和用户都应映射到不同的用户。此访问隔离有助于访问撤销和持续的用户维护。
添加用户时,可以在特定数据库中创建用户。该数据库是用户的身份验证数据库。
用户可以拥有跨不同数据库的权限; 也就是说,一个数据库中创建的用户可以拥有对其他数据库执行操作的权限。
用户的名称和身份验证数据库充当该用户的唯一标识符。也就是说,如果两个用户具有相同的名称但是在不同的数据库中创建,则它们是两个单独的用户。如果您打算让单个用户拥有多个数据库的权限,请在适用的数据库中创建具有角色的单个用户,而不是在不同的数据库中多次创建用户。
dbAdmin:提供执行管理任务(如与架构相关的任务,索引和收集统计信息)的功能。此角色不授予用户和角色管理权限。
dbOwner:数据库所有者可以对数据库执行任何管理操作。
userAdmin:提供在当前数据库上创建和修改角色和用户的功能。由于该userAdmin
角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地提供 对数据库的超级用户访问权限,或者,如果范围限定为admin
数据库,则提供对群集的访问权限。
db.createUser(
{
user: "<name>", # 用户名
pwd: "<cleartext password>", # 密码
customData: { <any information> }, # 任意内容,相当于备注
roles: [
{ role: "<role>", # 内置常用的角色有root,dbAdmin,readWrite,read
db: "<database>" } | "<role>", # 管理的数据库对象
...(可以添加多个角色)
]})
示例1:切换到reporting认证数据库,创建用户reportsUser,密码为’12345678’,权限为对reporting,products,sales拥有只读权限,对accounts库拥有读写权限
use reporting
db.createUser(
{
user: "reportsUser",
pwd: "12345678",
roles: [
{ role: "read", db: "reporting" },
{ role: "read", db: "products" },
{ role: "read", db: "sales" },
{ role: "readWrite", db: "accounts" }
]
}
)
示例2:创建超级管理员用户,管理所有数据库
use admin
db.createUser(
{
user: "root",
pwd: "password",
roles: [ { role: "root", db: "admin" } ]
})
示例3:test库管理用户
use test
db.createUser(
{
user: "admin",
pwd: "password",
roles: [ { role: "dbAdmin", db: "test" } ]
})
示例4:创建app1用户,对test拥有读写权限
use test
db.createUser(
{
user: "app1",
pwd: "password",
roles: [ { role: "readWrite" ,db: "test" } ]
})
示例5:创建app2用户,对test只读权限
use test
db.createUser(
{
user: "app2",
pwd: "password",
roles: [ { role: "read" } ]
})
use admin
db.dropUser("root")
db.system.users.find().pretty();
# 方式1:
mongo -umyUserAdmin -pabc123 127.0.0.1:27017/admin
# 方式2:
mongo --port 27017 -u myUserAdmin -p 'abc123' --authenticationDatabase 'admin'
# 连接到数据库
mongo
# 切换到验证数据库
use admin
# db.auth('myUserAdmin','abc123')
需要在配置文件开启验证
security:
authorization: enabled # 打开认证功能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。