zoukankan      html  css  js  c++  java
  • mongodb 安全认证

    默认情况下,mongodb不启用验证的。数据库级别的权限,要么可读写要么只读权限。mongod的验证配置比较操蛋。
    分两种情形:一种是单服务器,只需启动时添加–auth参数即可。 另一种是复制集、分片集群服务器,必须指定keyfile参数,其他节点之间的通讯基于该keyfile。
    在这种情况下,–auth参数是隐含启用的,所有的mongodb访问都必须验证的。
     
    Mongodb中安全权限验证是数据库级别的
    1、在admin中创建的 权限账号是全局性的,可以访问所有DB;
    2、在非admin中创建的权限账号是 本地账号,只对本地DB具有操作权限;
    3、如果在非 admin数据中 创建权限账号时指定了具有对其他DB的权限,则相应的具有其权限;
    4、密码中不能有 < > & " ' : @
     
    ************************************************
    db.createUser({user:"wenzhong",pwd:"yearmonth@20140111",roles:["root"]},{w:1,wtimeout:10000}); 
    ************************************************
    一、单服务器模式
    添加管理员用户,admin库下的用户是全局用户,对所有的数据库可读写。
     
    # ./mongo
    > use admin
    > db.addUser("root","www.ttlsa.com")
    > db.auth("root","www.ttlsa.com")
    创建普通的用户,是数据库级别的。
     
    > use database_name
    > db.addUser('guest','www.ttlsa.com') 可读写
    > db.addUser('guest','www.ttlsa.com',true) 只可读
    查看用户
     
    > db.system.users.find()
    删除用户
     
    > db.removeUser(username)
    > db.system.users.remove( { user: username } )
    配置文件加上下面的参数后重新启动mongod实例
     
    auth = ture
     
    二、复制集与分片集群模式下
    2.1 keyfile规则
    1. 集群服务器之间通讯通过keyfile进行身份验证。
    2. 每个实例的keyfile文件内容要一致。
    3. keyfile文件权限仅当前用户可读。
    4. 集群成员都需要指定–keyFile参数。
    5. 每个客户端连接到数据库之前必须验证。
    6. key长度必须在6到1024个字符之间,否则会报错,mongod无法启动。
    7. 任何空格被忽略。
    8. 最好是3的倍数 。key不能包含非法字符=,否则会报错,mongod无法启动 。
     
     
    1、在primary服务器上 生产keyfile文件秘钥  (注必须是 600权限,否则会报错)
    先在 Admin库先创建 超级账号(primary)
    replSet:primary>use admin
    replSet:primary>db.createUser({user:"wenzhong",pwd:"yearmonth@20140111",roles:["root"]},{w:1,wtimeout:10000});
    2、
    sheel> openssl rand -base64 666 > /opt/mongo/conf/MongoReplSet_KeyFile
    sheel> chown mongod.mongod   /opt/mongo/conf/MongoReplSet_KeyFile
    sheel> chmod 600   /opt/mongo/conf/MongoReplSet_KeyFile
    3、
    将 产生的 keyfile 文件 拷贝到 其他成员服务器
    4、
    修改配置文件
    keyFile=/opt/mongo/conf/MongoReplSet_KeyFile
    5、
    重启mongod服务(primary-secondary)
    replSet:primary>use admin
    replSet:primary>rs.stepDown(60);
    replSet:secondary>db.shutdownServer()
     
    cat /etc/rc.local
    sudo  runuser -c "/usr/local/mongo/bin/mongod -f /opt/mongo/conf/mongo.conf" mongod
     
    依次重启 secondary成员
  • 相关阅读:
    Linux的常用用法
    docker入门实践01
    airflow安装rest api插件发现airflow webserver服务不能启动的解决办法
    27.Spark中transformation的介绍
    1.Cloudera Manager安装
    win10系统不能ping通vmware虚假机解决办法
    在airflow的BashOperator中执行docker容器中的脚本容易忽略的问题
    AirFlow后台运行调度程序
    Airflow怎么删除系统自带的DAG任务
    airflow删除dag不在页面显示
  • 原文地址:https://www.cnblogs.com/zhaowenzhong/p/5667244.html
Copyright © 2011-2022 走看看