zoukankan      html  css  js  c++  java
  • 开启权限认证

    系统不管设计的多么完善,总有一些漏洞在里面
    mongodb安全概览
    1、最安全的时物理隔离:不现实
      通过任何手段都不能连接我们的主机,只有一些重要的数据,会物理隔离到机房中
    2、网络隔离:比较安全,无法碰到漏洞,即使有漏洞,也不会有机会利用它
      我们知道很多公司,他们的开发机,测试机,都在自己的内网环境中,外部的人时进不去的,这是第二层次的隔离
    3、防火墙
      配置,只允许某些ip去连接我的mongodb,也能从一定程度上防范
    4、用户名密码:现实
      从安全来讲,次于以上3个,因为用户能够通过用户名密码来连接服务器的时候,说明能够正常的通信,如果用户名密码不是特别的复杂,就有可能被用户尝试出来
     
    之前使用mongodb时,并没有使用用户名密码,但还是自动连接上了,默认情况下,mongodb并没有为自己开启权限认证,开启权限认证有两种方法
    1、auth开启
    2、keyfile开启



    auth开启
    在启动时,在配置里面 auth = true 开启权限认证,再重启mongodb
    ./bin/mongo 127.0.0.1:12345
    MongoDB shell version v4.0.0
    connecting to: mongodb://127.0.0.1:12345/test
    MongoDB server version: 4.0.0

    依然可以链接上,是因为还没有创建用户,我们再开启了认证并创建了用户之后,不使用用户名密码就连不上了

    创建用户
    1、创建语法:createUser(2.6之前为addUser)
    {
      user:"<name>",
      pwd:'<cleartext password>',
      customData:{<any information>},//对这个用户名密码对说明
      roles:[{role:'<role>',db:'<dababase>'}]//这个用户的类型
    }
    roles,角色类型有好几种,mongodb自己内建了几种类型
    read:对指定的db上做读取操作,像find
    readWrite:除了读取操作外,还有写入的操作,比如insert, update,但不能创建索引,删除索引,创建数据库等
    dbAdmin:对这个db提供了一些管理权限,除了读取之外的其他操作,比如转换数据库类型
    dbOwner:是read,readWrite,dbAdmin的集合体,他拥有这三个权限的所有权限
    userAdmin:拥有这个权限的角色,可以对其他角色进行管理
    除了这些内建角色之外,还可以自定义一些角色,比如将一些小角色进行组合,比如可以find,insert但不能 update的权限
    创建用户名密码
    > db.createUser({user:'123',pwd:'123',customData:'test'})
    登录
    ./bin/mongo 127.0.0.1:12345 -u 123 -p 123




  • 相关阅读:
    Oracle 查询主外键关联
    maven
    LOG4J
    转换maven 项目为web 项目
    Iframe 高度自适应的问题
    JS 之CLASS类应用
    不要自己决定如何设计,遵从客户和客观需要
    私服搭建Nexus
    python经典算法题:无重复字符的最长子串
    Python输出hello world(各行命令详解)
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9472277.html
Copyright © 2011-2022 走看看