mongodb 角色管理
来源:互联网 发布:怎么设置软件锁 编辑:程序博客网 时间:2024/06/08 13:47
一 、创建自定义角色
db.createRole(role, writeConcern)
writeConcern 为可选项
须具有:createRole 、grantRole action 权限
{
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]}
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]}
db.createRole({role:"manageCurrentOpRole",
privileges:[
{resource:{cluster:true},actions:["killop","inprog"]},
{resource:{db:"",collection:""},actions:["killCurrsors"]}
],roles:[]
})
db.createRole({role:"manageLogRotateRole",privileges:[{resource:{cluster:true},actions:["logRotate"]}],roles:[]});
db.createRole({role:"SupervisorRole",privileges:[{resource:{cluster:true},actions:["shutdown","replSetStateChange"]}],roles:[]});
注:必须加 roles 项,roles:[] 的[] 代表没有任何角色。
Resource具有 database 或collection 或 cluster 或 anyResource4种类型:
1.1
如果 是 db:""类型(值为空)并且 collection:collectionName(值不为空),则表示拥有 所有数据库上 集合名为collectionName 上的权限
Example:
{db:"",collection:"collectionName"}
1.2
如果 是 collection:""类型(值为空),但db:dbname(值不为空),则表示拥有 在指定数据库上但 不包括系统表collection 上的 权限
Example:
{db:"dbname",collection:""}
如果要指定系统表 则 需要指定具体的系统表 。例如 collection:"system.profile"
1.3
指定在所有数据库上的非系统集合表上拥有权限
Example:
{db:"",collection:""}
3、
Resource是 cluster类型的有:
{cluster:true}
即如果要创建 复制集或分片上的角色权限时要指定 {cluter:true}
3.1、创建一个可以 管理 mongostat的角色
use admin
db.createRole({role:"mongostatMangeRole",
privileges:[{resource:{cluster:true},actions:["serverStatus"]}]
})
4、
anyResource 类型是mongodb的内部使用类型。慎用(超级权限)
db.createRole({role:"bigRole",privileges:[{resource:{anyResource:true},actions:["anyAction"]}],roles:[]})
二 、更新角色
db.updateRole(rolename, update, writeConcern)
writeConcern 为可选项
须具有:revokeRole 、grantRole action 权限
db.updateRole(
"<rolename>",
{
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
]
},
{ <writeConcern> })
"<rolename>",
{
privileges:
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles:
[
{ role: "<role>", db: "<database>" } | "<role>",
...
]
},
{ <writeConcern> })
Example:
use dbname
db.updateRole(
"myroleName",
{
privileges:[{resource:{db:"dbname",collection:"collectionName"},actions:["find","update","createIndex"]}],
roles:[{role:"readWrite",db:"dbname"}]
},
{w:2})
三、删除角色(删除所有角色)
db.dropRole(rolename, writeConcern)----在指定的数据库上 删除指定的单个用户自定义角色
writeConcern 为可选项
须具有:dropRole action 权限
Example:
use dbname
db.dropRole("myroleName")
或
db.dropRole("myroleName",{w:"majority"})
b.dropAllRoles(writeConcern)---在指定的数据库上 删除所有用户自定义角色
use dbname
db.dropAllRoles()
或
db.dropAllRoles({w:"majority"})
四、将权限加入到指定角色中
db.grantPrivilegesToRole(rolename, privileges, writeConcern)
writeConcern 为可选项
须具有:grantRole action 权限
db.grantPrivilegesToRole(
"< rolename >",
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
"< rolename >",
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
{ < writeConcern > })
Example:
use products
db.grantPrivilegesToRole(
"inventoryCntrl01",
[
{
resource: { db: "products", collection: "" },
actions: [ "insert" ]
},
{
resource: { db: "products", collection: "system.js" },
actions: [ "find" ]
}
],
{ w: "majority" }
)
五、将权限从指定角色中移除
db.revokePrivilegesFromRole(rolename, privileges, writeConcern)
writeConcern 为可选项
须具有:revokeRole action 权限
Example:
db.revokePrivilegesFromRole(
"associate",
[
{
resource: { db: "products", collection: "" },
actions: [ "createCollection", "createIndex", "find" ]
},
{
resource: { db: "products", collection: "orders" },
actions: [ "insert" ]
}
],
{ w: "majority" }
)
注:移除权限从指定角色中,要求 resource的域范围一致。比如 如果 {db:"dbaname",collection:""}时,在移除操作时 不能在collection 范围中指定具体的 collectionName值,否则不会有任何变化。
比如 products库上有 accountRole角色并具有如下权限
{
"resource" : {
"db" : "products",
"collection" : ""
},
"actions" : [
"find",
"update"
]}
"resource" : {
"db" : "products",
"collection" : ""
},
"actions" : [
"find",
"update"
]}
以下移除权限是错误的,结果不会有任何变化
use products
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : "gadgets"
},
actions : [
"find",
"update"
]
}
]
)
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : "gadgets"
},
actions : [
"find"
]
}
]
)
用下列方法移除则 正确:
use products
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : ""
},
actions : [
"find"
]
}
]
)
六、将多个角色加入指定用户自定义角色中
db.grantRolesToRole(rolename, roles, writeConcern)
db.grantRolesToRole( "<rolename>", [ <roles> ], { <writeConcern> } )
writeConcern 为可选项
须具有:grantRole action 权限
use dbname
db.grantRolesToRole("myRolesName",["myRoleReader","myRoleWrite"],{w:"majority",wtimeout:10000})
或
db.grantRolesToRole("myRolesName",["myRoleReader",{role:"roleName"db:"FromDB"}],{w:"majority",wtimeout:10000})
即:可以直接写角色名也可以显示指定角色名及角色所属数据库
注:在Admin数据库长创建的角色可以继承来自任何数据库上的角色
七、将角色从指定的角色中移除
db.revokeRolesFromRole(rolename, roles, writeConcern)
db.revokeRolesFromRole( "<rolename>", [ <roles> ], { <writeConcern> } )
writeConcern 为可选项
须具有:revokeRole action 权限
use emea
db.revokeRolesFromRole( "purchaseAgents",
[
"writeOrdersCollection",
"readOrdersCollection"
],
{ w: "majority" , wtimeout: 5000 }
)
或
use emea
db.revokeRolesFromRole( "purchaseAgents",
[
{role:"writeOrdersCollection",db:"emea"},
{role:"readOrdersCollection",db:"emea"}
],
{ w: "majority" , wtimeout: 5000 }
)
即:可以直接写角色名也可以显示指定角色名及角色所属数据库
八、获取角色继承的权限及权限
db.getRole(rolename, showPrivileges)
showPrivileges 为可选项
use dbname
db.getRole("myroleName")
或者
db.getRole("myroleName",{showPrivileges:true})
须具有:viewRole action 权限
九、获取指定数据库上的所有角色
db.getRoles()
参数有:
rolesInfo :1 显示所有用户定义角色
showPrivileges: true 则显示权限,false则不显示。可选项
showBuiltinRoles:true 则显示内置的角色及用用户定义的角色
如果不传入 任何参数则 显示所有用户自定义角色
须具有:viewRole action 权限
0 0
- mongodb 角色管理
- MONGODB用户、角色和权限管理
- 角色管理
- 角色管理
- 角色管理
- 角色管理
- MongoDB 之 角色权限
- mongodb 3.0 用户角色
- mongodb 角色总结
- mongodb用户与角色
- MongoDB 内置角色
- mongodb角色权限
- 管理角色与执行角色
- MongoDB 3.2 用户角色配置
- mongodb的内建角色
- MongoDB用户的角色权限
- MongoDB 安全控制角色说明
- 权限角色管理模块
- Facebook开源闪光控件(ShimmerForAndroid)使用
- Seckill系统高并发优化
- 统计当前文件夹下文件和目录的个数
- UE4源码分析2-文件目录说明
- unity3D添加光源没有效果问题之一
- mongodb 角色管理
- 表格的一些属性
- OOA/OOD/OOP 的区别
- Android Fragment 真正的完全解析(上)
- Java 顺时针打印矩阵
- 【hadoop】Hadoop,MapReduce操作Mysql(比较早的操作方法,可以看看)
- 短信发送倒计时(以及正则验证)
- android中不依赖activity的dialog弹窗的实现
- LeetCode之链表数相加