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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

前提条件


在数据库中创建一个角色,你必须有:   
    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,如需转载请自行联系原作者



相关文章
|
缓存 NoSQL Shell
MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引
在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本和分片中创建索引,使用滚动索引构建过程。
669 0
|
NoSQL 安全 MongoDB
mongodb设置用户账号密码登录
今天有个同事的项目中mongodb 被黑客攻占了,然后数据库被清掉,留下了一堆“案发现场”,还整了一个段话,附上给大家伙瞧瞧。。。。
3262 1
mongodb设置用户账号密码登录
|
NoSQL MongoDB 数据库
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
615 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
|
存储 监控 NoSQL
🍃MongoDB结合Koa2做用户登录验证
🍃MongoDB结合Koa2做用户登录验证
368 0
🍃MongoDB结合Koa2做用户登录验证
|
NoSQL MongoDB 索引
MongoDB 创建集合
MongoDB 创建集合
365 0
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
297 0
|
NoSQL MongoDB 索引
MongoDB创建、查看、删除索引
MongoDB创建、查看、删除索引
235 0
|
SQL 存储 NoSQL
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
引入一套统一的新功能,以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理

推荐镜像

更多