• 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成员
  • 相关阅读:
    中间件格式
    python3 bytes与str数据类型相互转换
    python 连接mongodb 使用
    md5 简单加密
    django 使用https协议运行runserver
    工厂模式
    C++字符串
    C++字符
    C++数学函数
    MATLAB函数总结——数值运算和符号运算
  • 原文地址:https://www.cnblogs.com/zhaowenzhong/p/5667244.html
Copyright © 2020-2023  润新知