MongoDB创建一个用户自定义角色

前提条件


在数据库中创建一个角色,你必须有:   
    1.在该数据库资源上的createRole行为。    
    2.在该数据库上grantRole行为给新角色指定权限以及指定继承的角色。

内嵌角色userAdmin和userAdminAnyDatabase提供了它们各自资源的createRole和grantRole行为。


创建一个角色管理当前操作


下面的示例创建了角色manageOpRole,只提供了运行db.currentOp()和db.killOp()的权限。


1. 使用适当的权限连接到MongoDB。   
使用在前提条件部分指定的权限,连接到mongod或mongos。    
下面的过程创建了一个用户管理员siteUserAdmin:

1
2
3
4
5
6
7
8
use admin   
db.createUser(    
  {    
    user"siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

登录到MongoDB:   

1
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin拥有在admin以及其他数据库创建角色的权限。


2. 创建一个新的角色管理当前操作。   
manageOpRole有权限在多个数据库以及cluster资源操作。因此,你必须在admin数据库创建角色。

1
2
3
4
5
6
7
8
9
10
11
use admin   
db.createRole(    
   {    
     role: "manageOpRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "killop""inprog" ] },    
       { resource: { db: "", collection: "" }, actions: [ "killCursors" ] }    
     ],    
     roles: []    
   }    
)

新角色被授权能杀掉任何操作。


警告:   
终止运行中的操作要极其小心。只使用db.killOp()来终止客户端发起的操作而不会终止内部数据库操作

内嵌的角色ClusterMonitor也提供了权限运行db.currentOp()及其他权限,内嵌的角色hostManager提供了权限运行db.killOp()以及其他权限。


创建一个角色运行mongostat


下面的示例创建一个角色mongostatRole提供了只有运行mongostat的权限。


1. 使用适当的权限连接到MongoDB。   
使用在前提条件部分指定的权限,连接到mongod或mongos。    
下面的过程创建了一个用户管理员siteUserAdmin:

1
2
3
4
5
6
7
8
use admin   
db.createUser(    
  {    
    user"siteUserAdmin",    
    pwd: "password",    
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]    
  }    
)

登录到MongoDB:   

1
mongo --port 27017 -u siteUserAdmin -p password --authenticationDatabase admin

siteUserAdmin拥有在admin以及其他数据库创建角色的权限。


2.创建一个新的角色来管理当前操作。   
mongostatRole有权限在cluster资源操作。因此,你必须在admin数据库创建角色。

1
2
3
4
5
6
7
8
9
10
use admin   
db.createRole(    
   {    
     role: "mongostatRole",    
     privileges: [    
       { resource: { cluster: true }, actions: [ "serverStatus" ] }    
     ],    
     roles: []    
   }    
)

内嵌的角色clusterMonitor也提供了权限运行mongostat以及其他权限。


参见:https://docs.mongodb.org/manual/tutorial/manage-users-and-roles/#create-role-to-manage-ops



















本文转自UltraSQL51CTO博客,原文链接: http://blog.51cto.com/ultrasql/1706466,如需转载请自行联系原作者



上一篇:iOS 的块操作也可以象Java匿名类一样到处都是


下一篇:vs2015通过ODBC连接SQLSERVER2012