mongod user and role management

一、用户

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

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

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

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

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

mongdb在V3.0版本之后内置了root 角色,也就是结合了 readWriteAnyDatabase、dbAdminAnyDatabase 、 userAdminAnyDatabase、clusterAdmin  4个角色权限,类似于Oracle的sysdba角色,但是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 hostManager和dropDatabase的权限组合。

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

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

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

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

 

(4).所有数据库角色

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

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

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

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

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

(5). 超级管理员权限

root: dbadmin到admin数据库、useradmin到admin数据库以及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

时间: 2025-01-05 00:01:49

mongod user and role management的相关文章

You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1

今天在Windows Server 2008 下安装SQL SERVER 2008时,碰到如下错误: You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1. 既然碰到了顺便还是记录一下,虽然感觉没啥技术含量也没有难度,有时候有必要养成一个好习惯.记录你碰到的问题.解决问题的方案,你思考的点点滴滴! 打开 Server Manager,在"Features&quo

ABP官方文档翻译 6.4 导航

导航 创建菜单 注册导航提供者 显示菜单 每一个网络应用都会有一些菜单用来在pages/screens之间导航.ABP提供了通用的基础设施来创建并显示菜单. 创建菜单 应用可以由不同的模块组成,每一个模块都有自己的菜单项.为了定义菜单项,我们需要创建一个继承自NavigationProvider的类. 假定,我们有一个如下所示的主菜单: Tasks Reports Administration User management Role management 这里,Administration菜单

[Hive - LanguageManual] Create/Drop/Grant/Revoke Roles and Privileges / Show Use

Create/Drop/Grant/Revoke Roles and Privileges Hive Default Authorization - Legacy Mode has information about these DDL statements: CREATE ROLE GRANT ROLE REVOKE ROLE GRANT privilege_type REVOKE privilege_type DROP ROLE SHOW ROLE GRANT SHOW GRANT For 

Entity Framework技术系列之8:使用Entity Framework技术实现RBAC模型

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前言 RBAC(Role-Based Access Control,基于角色的访问控制),是继DAC(Discretionary Access Control,自主访问控制)和MAC(Mandatory Access Control,强制访问控

MongoDB用户及权限管理(一):角色说明

mongodb安装完后默认是不开启auth模块的,普通用户和超级管理员均不通过认证就可操作.当然裸奔有风险,安全起见还是开启auth模块. 首先需要了解下面几点: 1.mongodb是没有默认管理员账号,所以要先添加管理员账号,然后开启权限认证. 2.切换到admin数据库,添加的账号才是管理员账号. 3.用户只能在用户所在数据库登录,包括管理员账号. 4.管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以.这一点比较怪. 1.用户权限角色说明 1.1  D

[it-ebooks]电子书列表

#### it-ebooks电子书质量不错,但搜索功能不是很好 #### 格式说明  [ ]中为年份      ||  前后是标题和副标题  #### [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Objective-C to develop iPhone games http://it-ebooks.info/book/3544/ Learning Web App Developmen

&lt;&lt;ABP文档&gt;&gt; 导航

文档目录 本节内容: 创建菜单 注册导航供应器 显示菜单 每个web应用都有一些菜单用来在页面/屏幕之间导航,ABP提供了一个通用的基础框架创建并显示菜单给用户. 创建菜单 一个应用可能由不同模块组成,每个模块可以有它自己的菜单项,为了定义菜单项,我们需要创建一个继承于NavigationProvider的类. 假设有一个如下所示的主菜单: Tasks Reports Administration User management Role management 这里,Administration

ABP框架详解(五)Navigation

ABP框架中的Navigation功能用于管理业务系统中所有可用的菜单导航控件,通常在业务系统的首页会有一个全局性的导航菜单,JD商城,天猫,猪八戒网莫不如是.所以为方便起见,Navigation功能默认定义了一个"MainMenu"菜单添加到缓存字典中.该Navigation功能与普通ERP项目中可定制动态生成的导航菜单最大的区别应该是每一个菜单定义(MenuItemDefinition)可以设置一个权限只有用户拥有权限才会显示给该用户,控制更加的细更加的松耦合不是直接绑定到某个用户

.net资料

.NET开发语言电子资料汇总: Pro LINQ:Language Integrated Query in C# 2008 http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=166647 MS Press - Introducing Microsoft LINQ http://bbs.topsage.com/dispbbs.asp?boardID=121&ID=163429 LINQ for Visual C# 2005 (07年6月出版)