mongod user and role management

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongod user and role management相关的知识,希望对你有一定的参考价值。

一、用户

  --auth: mongod启动项中加入--authmongodb启动后,就可以完成授权模块的启用)

  PS:虽然auth模块启用后本机还能否登陆到数据库,但是不具备增删改查的权限了,所以启动auth模块之前就应该创建一个超级用户

  --keyFile <file>: 主要用于分片集群与副本集相互之间的授权使用,在单机情况下只要用到auth,如果是在集群(分片+副本集)环境下,就必须要用到该参数;

  security.authorization MongoDB 2.6版本开始,mongod/mongos的启动配置文件增加了YAML格式的写法,功能更auth是一样的,后面的操作中,都是采用该格式

  security.keyFile 格式与security.authorization相同,功能与--keyFile相同。

mongdbV3.0版本之后内置了root 角色,也就是结合了 readWriteAnyDatabasedbAdminAnyDatabase userAdminAnyDatabaseclusterAdmin  4个角色权限,类似于Oraclesysdba角色,但是MongoDB的超级管理员用户名称是可以随便定义的:

> use admin

switched to db admin

> db.createUser(

...    {

...      user: "ljaiadmin",

...      pwd: "123456",

...     roles: [ { role: "root", db: "admin" } ]

...   }

... )

重启完mongod进程后,接下来做一下权限的验证:

> use admin

switched to db admin

> db.auth(‘ljaiadmin‘,‘123456‘) (注:切换到admin用户进行授权验证)

1

> show dbs 

> use admin

switched to db admin

> show users

创建普通用户:

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" }

    ]

  }

)

二、角色

    (1).数据库用户角色

    针对每一个数据库进行控制。

    read :提供了读取所有非系统集合,以及系统集合中的system.indexes, system.js, system.namespaces

    readWrite: 包含了所有read权限,以及修改所有非系统集合的和系统集合中的system.js的权限.

     

    (2).数据库管理角色

    每一个数据库包含了下面的数据库管理角色。

    dbOwner:该数据库的所有者,具有该数据库的全部权限。

    dbAdmin:一些数据库对象的管理操作,但是没有数据库的读写权限。(参考:http://docs.mongodb.org/manual/reference/built-in-roles/#dbAdmin

    userAdmin:为当前用户创建、修改用户和角色。拥有userAdmin权限的用户可以将该数据库的任意权限赋予任意的用户。

     

    (3).集群管理权限

    admin数据库包含了下面的角色,用户管理整个系统,而非单个数据库。这些权限包含了复制集和共享集群的管理函数。

    clusterAdmin:提供了最大的集群管理功能。相当于clusterManager, clusterMonitor, and hostManagerdropDatabase的权限组合。

    clusterManager:提供了集群和复制集管理和监控操作。拥有该权限的用户可以操作configlocal数据库(即分片和复制功能)

    clusterMonitor:仅仅监控集群和复制集。

    hostManager:提供了监控和管理服务器的权限,包括shutdown节点,logrotate, repairDatabase等。

    备份恢复权限:admin数据库中包含了备份恢复数据的角色。包括backuprestore等等。

     

    (4).所有数据库角色

    admin数据库提供了一个mongod实例中所有数据库的权限角色:

    readAnyDatabase:具有read每一个数据库权限。但是不包括应用到集群中的数据库。

    readWriteAnyDatabase:具有readWrite每一个数据库权限。但是不包括应用到集群中的数据库。

    userAdminAnyDatabase:具有userAdmin每一个数据库权限,但是不包括应用到集群中的数据库。

    dbAdminAnyDatabase:提供了dbAdmin每一个数据库权限,但是不包括应用到集群中的数据库。


    (5). 超级管理员权限

    root: dbadminadmin数据库、useradminadmin数据库以及UserAdminAnyDatabase。但它不具有备份恢复、直接操作system.*集合的权限,但是拥有root权限的超级用户可以自己给自己赋予这些权限。


    (6). 备份恢复角色:backuprestore


    (7). 内部角色:__system

三、相关命令

    除了db.createUser(),下面几个函数也是常用的:

    获得数据库的所有用户权限信息:db.getUsers()

    获得某个用户的权限信息:db.getUser()

    创建角色: db.createRole()

    更新角色:db.updateRole()

    删除角色:db.dropRole()

    获得某个角色信息:db.getRole()

    删除用户:db.dropUser()

    删除所有用户:db.dropAllUsers()

    将一个角色赋予给用户:db.grantRolesToUser()

    撤销某个用户的某个角色权限:db.revokeRolesFromUser()

    更改密码:db.changeUserPassword()

参考:https://docs.mongodb.com/manual/tutorial/create-users/

https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization


本文出自 “11462293” 博客,请务必保留此出处http://11472293.blog.51cto.com/11462293/1790863

以上是关于mongod user and role management的主要内容,如果未能解决你的问题,请参考以下文章

mongodb的管理

mongodb 设置权限

mongdb添加用户(使用密码登录)

MongoDB 权限备份还原去重

maven Tomcat idea 热部署

MongoDB - 运行