MongoDB实践六(数据库安全) (

  1. 1docker exec -it mymongo mongo
  2. use admin;
  3. db.createUser( user:"leon",pwd:"leon",roles:["userAdminAnyDatabase"] }); //创建管理员用户
  4. show users;
 
  1. [root@localhost ~]# docker exec -it mymongo bash
    1. root@ae6522c9aa8c:/# mongo -u "leon" -p "leon" --authenticationDatabase "admin"
  2. db.auth("root","root")
  3. use admin
  4. 查看用户 show users;
 
权限:
{resource:{db:"test",collection:""},actions:["find","update"]}
{resource:{cluster:true},actions:["shutdown"]}
 
MongoDB基本的角色
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root 
//这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限
 
自定义角色(创建一个只能读取 test . accounts 集合的角色)
db.createRole( { role:"readAccounts", privileges:[ {resource:{db:"test",collection:"accounts"},actions:["find"]}],roles:[]});
db.createUser({user:"accountsReader",pwd:"passwd",roles:["readAccounts"]});
 
授权:将角色赋予用户
 
db.createUser({user:"testReader",pwd:"passwd",roles:[{role:"read",db:"test"}]}) //创建一个只读 test用户
mongo -u "testReader" -p "passwd" --authenticationDatabase "test"mongo -u "testReader" -p "passwd" --authenticationDatabase "test"
 
创建一个读写用户
db.createUser({
... user:"writeUser",
... pwd:"passwd",
... roles:["readWriteAnyDatabase"]
... });
 
使用mongostat 需要对操作数据库具备clusterMonitor角色的权限
> db.createUser({
... user:"monitorUser",
... pwd:"passwd",
... roles:["clusterMonitor"]
... });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted @ 2021-03-03 14:12  year12  阅读(103)  评论(0编辑  收藏  举报