您的位置:首页 > 数据库 > Mongodb

mongoDB的复制集5----复制集安全(认证,用户,权限)

2016-08-31 23:02 453 查看


一、什么是认证

  如何开启认证

    1).auth=true(在配置文件里增加)

    2).keyFile(建议添加到配置文件里)

#如果设置了auth=true,但第一次没有创建用户就启动实例怎么办
# 在配置文件里增加如下
echo "setParameter=enableLocalhostAuthBypass=1" >> /usr/local/mongoDB/conf/28001.conf
#然后用本地ip连接
mongo localhost:28001
  auth与keyFile的区别

    auth  单点

    keyFile  集群之间验证

   开户keyFile默认开户auth

1-1.如何配置keyfile

keyFile的注意事项:

  1.内容 base64编码集[a-z A-Z +/]

  2.长度 1000bytes

  3.权限至少 chmod 600 keyFile (

配置:

  1).在配置文件去除auth=true;

  2).增加keyFile=/usr/local/mongoDB/.keyFile,在28001.conf等三个文件都这么配置

changwen@ubuntu:~$ touch .keyFile
changwen@ubuntu:~$chmod 600 .keyFile

changwen@ubuntu:~$ openssl rand -base64 102
bFWO/1wdII04a6lNCFy9I5mfQ161K9HO/eMLcrQhUVhZrztXBSG2OkJxotXqvAhq
jEB6JSA/3Hq6m7X7a+K66pSQcCRXVgZ9+exl2piDdgkOFdB9q9PTXK+uCnvFXlfM
cJL+fA74
changwen@ubuntu:~$ openssl rand -base64 102 > .keyFile

# 后面就启动和连接服务器


二、用户

2-1.如何创建/删除一个用户

  1).创建语法:createUser(2.6之前为addUser)

  2).db.createUser(

     {user:"<name>",

      pwd:"<cleartext password>",

      roles:[{role:"<role>",db:"<database>"}]})

# 创建第一个用户一定要有创建其他用户的能力
db.createUser(
{user:'adminTest',
pwd:"'123455',
roles:[{role:'root',db:'admin'}]})

# 再次连接时,在哪创建的用户就需要登陆到哪个库的认证
db.auth('adminTest','12345')

#然后就可以操作数据库了
2).如何删除一个用户

  db.dropUser(<user_name>) :删除某个用户,接受字体串参数

  db.dropAllUsers()        :删除当前库的所有用户,使用小心

3).如何修改用户密码

  需要具备changePassword或changeOwnPassword

  db.changeUserPassword(<user_name>,<new_password>)

  db.updateUser(<user_name>,{update_object})

三、权限

  角色:对某一资源的权限的‘集合‘

  mongoDB有两种角色,一种是自带的角色(built-in roles),还有一种是自定义角色。

  3).角色类型:内建类型

  读写:read,readWrite,  

  管理员:dbAdmin,dbOwner,userAdmin、clusterAdmin,clusterManager,clusterMonitor,hostManager

  备份: backup、restore

  全局: readAnyDatabas, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase

  超级用户:root

 自定义角色

  db.createRole({

    role:<role_name>,

    privileges:[{resource:{db:<db_name>,collection:<coll_name>},actions:[<action_name>]}],

    roles:[{role:<role_name>,db:<db_name>}]})

# 将用户的权限都打印出来
db.runCommand({userInfo:'admin',showPrivileges:1})

#自定义角色
db.createRole({
role:'testRole',
privileges:[{resource:{db:'changwen',collection:''},
actions:['find','insert','remove']}],
roles:[{role:'read',db:'test'}]})

#创建用户
db.createUser(
{user:'roleTest',
pwd:"'123',
roles:[{role:'testRole',db:'admin'}]})


三、权限伸缩

1).如何增加权限

  db.grantRolesToUser(

    <user_name>,

    [{role:<role_name>,db:<db_name>}])

  注意,本方法接受2个参数,而不是两个对象

    而且如何权限重复不会覆盖,新的会增加

db.grantRolesToUser('roleTest,[{role:'readWrite',db:'test'}])
2).如何收缩权限

  db.revokeRolesToUser(

    <user_name>,

    [{role:<role_name>,db:<db_name>}])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息