mongodb-manual-3.0.1 6.1-6.2

6.1

6.1.1认证

在访问系统之前,所有客户端都需要被认证。这样才能确保在没有被明确允许的情况下,客户端不能访问mongodb中的数据。

mongodb主要支持两种认证机制:1.基于用户名密码的认证机制。2.X.509(SSL)认证。企业版额外支持两种认证:1.LDAP 2.KERBEROS

6.1.2基于角色的访问控制

访问控制例如 授权,决定了一个用户所能访问的资源和所能执行的操作。mongodb默认不打开授权功能。如果打开的话,它将对所有用户起作用。


6.2 

6.2.1

当你要添加一个用户时,必须在指定的数据库中创建这个用户。这个数据库将唯一的验证这个用户名。按照上面所说,如果两个用户有同样的名字但是被分别创建在两个数据库中的,那么这其实是两个不同的用户。所以当你登陆时必须指定一个数据库。

mongodb提供了db.createUser()和其它一些函数来添加和管理用户信息。

mongodb把所有用户的信息例如:用户名,密码,用户所对应的数据库,都存放在了admin库的system.users Collection中。(重要)

在mongodb 3.0版本之后 使用scram-sha-1作为默认的安全认证机制。 这里就不介绍 scram-sha-1了 大家如果需要的话自己去看吧~~


localhost Exception(本地例外情况)

本地例外情况允许你首先打开授权功能,然后再创建第一个用户。但是这是有条件的,条件就是在mongodb的实例中没有用户。

当你打算使用localhost Exception在一个新的mongodb实例中时,你必须在admin数据库中创建第一个用户,而且还要给这个用户赋于创建其他用户的权力。

6.2.2

mongodb使用基于角色的访问控制方法来管理对mongodb的访问。一个用户可以被赋于一个或多个角色,这些角色就决定了用户对数据库中资源的访问和对相应资源的操作。

mongodb提供了许多内建角色,这些内建角色都可以被用于一些特定的场景。

管理员也可以创建新的角色和权限来满足操作的需要。管理员可以分配collection粒度的权限。

一个用户可以被授于多个角色,他最后得到的权限是这个几个角色权限的和(并集)。


一个角色的权限被应用于包含它的数据库(在哪个数据库创建这个角色,这个角色的权限就适用于这个数据库),如果在admin库中创建一个角色的话,那么这个角色将适用于所有database 和cluster.

一个用户可以同时被赋于不同数据库的不同角色。


通过在一个特定数据库中指定一个特定的collection,来实现collection级别的权限控制。

mongodb把用户的证书保存在admin.system.users中。


Role Assignment To Users

mongodb把一个用户的作用域限制在创建他的database中。而把所有用户的定义都存放在admin database中的system.users.collection中。不建议直接访问这个collection,而是使用管理命令来进行访问。

第一个被创建的用户应该被赋于userAdmin或者userAdminAnyDatabase权限。这个用户可以创建所有用户。


Protect the User and Role Collections;

Mongodb保存所有角色信息和用户信息在admin.system.roles和admin.system.users collection中,这个两个collection只能使用user mangement 进行访问(不知道是否进行了硬性控制)

如果关闭了访问控制功能,最好还要使用普通的insert()和update()函数进行修改。


6.3.3

mongodb实现了collection级别的访问控制。

如下例子,给用户定义一个角色并包含一些权限:

privileges:[{resource:{db:"products",collection:"inventory"},actions:["find","update","insert"]},

 {resource:{db:"products",collection:"orders"},actions:["find"]}]


Enable Authentication after Creating the User Administrator

打开mongodb的认证功能过程中,你首先要创建第一个用户,这个用户可以必须是一个管理员用户,然后打开认证功能(应该是首先创建一个管理员用户,然后再打开认证功能)。这个过程需要重新启动数据库实例,如果不想重启,则可以首先打开访问控制功能,然后创建管理用户。

步骤1:打开数据库

mongod ---port 27017 --dbpath /data/db1

步骤2:创建数据库管理员,这个管理员的权限只能是userAdminAnyDatabase.

use admin

db.createUser(

{

user:"siteUserAdmin",

pwd:"password",

roles:[{role:"userAdminAnyDatabase",db:"admin"}]

}

)

步骤3:以打开认证的方式 重启mongodb实例

mongod --auth --config /etc/mongodb/mongodb.conf

步骤4:创建其它用户




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值