MongoDB 认证鉴权那点事(2)

A tunable work factor (iterationCount), 可灵活调整的安全系数 Per-user random salts rather than server-wide salts 每个用户有独立的随机系数 A cryptographically stronger hash function (SHA-1 rather than MD5), 更安全的hash函数 Authentication of the server to the client as well as the client to the server. 支持双向认证

对 SCRAM-SHA-1的实现感兴趣?戳这里

三、内部鉴权

副本集、分片集群内鉴权方式

内部鉴权是指 Mongo集群内部节点之间进行访问的鉴权方式,比如副本集内主备之间的访问、分片集群内Mongos 与Mongod之间的访问。 内部鉴权目前支持两种方式:

KeyFiles 密钥文件方式,采用SCAM-SHA-1 的鉴权机制,文件内包含了一个共享密钥,由集群内所有成员共同持有。 通常,密钥的长度在6-1024字符内,采用Base64编码。 如何使用?

X.509 证书 证书鉴权,用于SSL/TLS加密连接通道。 如何使用?

四、数据库角色

针对Mongodb数据库中的各种角色进行说明

数据库访问

角色名称拥有权限
read   允许读取指定数据库的角色  
readWrite   允许读写指定数据库的角色  

数据库管理

角色名称拥有权限
dbAdmin   允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile  
userAdmin   允许管理当前数据库的用户,如创建用户、为用户授权  
dbOwner   数据库拥有者(最高),集合了dbAdmin/userAdmin/readWrite角色权限  

集群管理

角色名称拥有权限
clusterAdmin   集群最高管理员,集合clusterManager/clusterMonitor/hostManager角色权限  
clusterManager   集群管理角色,允许对分片和副本集集群执行管理操作,如addShard,resync等  
clusterMonitor   集群监控角色,允许对分片和副本集集群进行监控,如查看serverStatus  
hostManager   节点管理角色,允许监控和管理节点,比如killOp、shutdown操作  

备份恢复

角色名称拥有权限
backup   备份权限,允许执行mongodump操作  
restore   恢复权限,允许执行mongoresotre操作  

数据库通用角色

角色名称拥有权限
readAnyDatabase   允许读取所有数据库  
readWriteAnyDatabase   允许读写所有数据库  
userAdminAnyDatabase   允许管理所有数据库的用户  
dbAdminAnyDatabase   允许管理所有数据库  

特殊角色

角色名称拥有权限
root   超级管理员,拥有所有权限  
__system   内部角色,用于集群间节点通讯  

基本是这些,有兴趣可看看官方的内置角色 Mongodb 的用户及角色数据一般位于当前实例的 admin数据库,system.users存放了所有数据; 存在例外的情况是分片集群,应用接入mongos节点,鉴权数据则存放于config节点。因此有时候为了方便分片集群管理,会单独为分片内部节点创建独立的管理操作用户;

五、相关操作

简单列举用户权限相关的常用操作

授权启动

./bin/mongod --auth

默认为非授权启动 也可以通过指定

创建管理员用户

use admin db.createUser({ user:'admin',pwd:'admin@2016',roles:[ {role:'clusterAdmin',db:'admin'}, {role:'userAdminAnyDatabase',db:'admin'} ]})

创建用户

use appdb db.createUser({user:'appuser',pwd:'appuser@2016'})

授予权限

use appdb db.grantRolesToUser("appuser", [{role:'readWrite',db:'appdb'}])

删除权限

use appdb db.revokeRolesFromUser("appuser",[{ role: "read", db: "appdb" }])

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9c122ccc12d63b162ae5cee604389e45.html