zoukankan      html  css  js  c++  java
  • MongoDB整理笔记の安全访问

        MongoDB安全访问将从以下三个方面得到控制!

        1、绑定IP内网地址访问MongoDB服务

        2、设置监听端口

        3、使用用户名和密码

        绑定IP内网地址访问MongoDB服务

        MongoDB可以限制只允许某一特定IP来访问,只要在启动时加一个参数bind_ip即可,如下:

        服务端限制只有192.168.1.103这个IP可以访问MongoDB服务

    [root@localhost bin]# ./mongod --bind_ip 192.168.1.103

        客户端访问时需要明确指定服务端IP,否则会报错:

    [root@localhost bin]# ./mongo 192.168.1.102
    MongoDB shell version: 1.8.1
    connecting to: 192.168.1.103/test
    >

        设置监听端口
        官方默认的监听端口是27017,为了安全起见,一般都会修改这个监听端口,避免恶意的连接尝试,具体如下:

        将服务端监听端口改为28018

    [root@localhost bin]# ./mongod --bind_ip 192.168.1.103 --port 28018

        客户端访问时不指定端口,会连接到默认端口27017,对于本例会报错

    [root@localhost bin]# ./mongo 192.168.1.102
    MongoDB shell version: 1.8.1
    connecting to: 192.168.1.102/test
    Sun Apr 15 15:55:51 Error: couldn't connect to server 192.168.1.102 shell/mongo.js:81
    exception: connect failed

        所以当服务端指定了端口后,客户端必须要明确指定端口才可以正常访问

    [root@localhost bin]# ./mongo 192.168.1.102:28018
    MongoDB shell version: 1.8.1
    connecting to: 192.168.1.102:28018/test
    >

        使用用户名和密码
        MongoDB默认的启动是不验证用户名和密码的,启动MongoDB后,可以直接用MongoDB连接上来,对所有的库具有root权限。所以启动的时候指定参数,可以阻止客户端的访问和连接。

        先来启用系统的登录验证模块,只需在启动时指定auth参数即可

    [root@localhost bin]# ./mongod --auth

        本地客户端连接一下看看效果

        很奇怪,为什么我们启用了登录验证模块,但我们登录时没有指定用户,为什么还可以登录呢?在最初始的时候 MongoDB 都默认有一个 admin 数据库(默认是空的)而 admin.system.users 中将会保存比在其它数据库中设置的用户权限更大的用户信息。注意:当 admin.system.users 中没有添加任何用户时,即使 MongoDB 启动时添加了 --auth参数,如果在除 admin 数据库中添加了用户,此时不进行任何认证依然可以使用任何操作,直到知道你在 admin.system.users 中添加了一个用户。

        两种添加用户方式

        建立系统root用户

        在admin库中新添一个用户root:

    [root@localhost bin]# ./mongo
    MongoDB shell version: 1.8.1
    connecting to: test
    > db.addUser("root","111")
    {
    "user" : "root",
    "readOnly" : false,
    "pwd" : "e54950178e2fa777b1d174e9b106b6ab"
    }
    > db.auth("root","111")
    1
    >
    View Code

        本地客户端连接,但不指定用户,结果如下:

    [root@localhost bin]# ./mongo
    MongoDB shell version: 1.8.1
    connecting to: test
    > show collections;
    Sun Apr 15 16:36:52 uncaught exception: error: {
    "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
    "code" : 10057
    }
    >
    View Code

        连上test库了,但进一步操作时有异常,看来MongoDB允许未授权连接,但不能进行任何操作。

        本地客户端连接,指定用户,结果如下:

    [root@localhost bin]# ./mongo -u root -p
    MongoDB shell version: 1.8.1
    Enter password:
    connecting to: test
    > show collections;
    system.indexes
    system.users
    >
    View Code

        看来指定了用户名之后,访问数据库才是正常。

        建立指定权限用户

        MongoDB也支持为某个特定的数据来设置用户,如我们为test库设置一个只读的用户user_reader:

    [root@localhost bin]# ./mongo -u root -p
    MongoDB shell version: 1.8.1
    Enter password:
    connecting to: test
    > show collections;
    system.indexes
    system.users
    > use test
    switched to db test
    > db.addUser("user_reader", "user_pwd", true)
    {
    "user" : "user_reader",
    "readOnly" : true,
    "pwd" : "0809760bb61ee027199e513c5ecdedc6"
    }
    >
    View Code

        客户端用此用户来访问:

    [root@localhost bin]# ./mongo -u user_reader -p
    MongoDB shell version: 1.8.1
    Enter password:
    connecting to: test
    > show collections;
    system.indexes
    system.users
    >
    View Code




  • 相关阅读:
    CAP 可用性理解
    如何真正理解设计模式
    jdk concurrent 中 AbstractQueuedSynchronizer uml 图.
    test 博客园功能 和 搜索 seo 能力
    异或运算进行两数交换
    基本排序之冒泡排序
    对数器的使用(用来生成随机数组来判断排序算法是否正确)
    全双工,半双工,单工的概念
    mac下彻底卸载mysql方法
    AngularJs学习第一课 Hello World
  • 原文地址:https://www.cnblogs.com/tomcatx/p/4245593.html
Copyright © 2011-2022 走看看