国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MongoDB安全訪問控制

Hydrogen / 3159人閱讀

摘要:一概述有時(shí)候我們會(huì)看到有些服務(wù)器或者數(shù)據(jù)庫(kù)被別人惡意攻擊,會(huì)導(dǎo)致中毒或者資料被盜取所,以我們對(duì)自己的服務(wù)器和數(shù)據(jù)庫(kù)的訪問安全性控制就顯得至關(guān)重要。所以,基于安全性的考慮,訪問權(quán)限的控制還是

一、概述

有時(shí)候我們會(huì)看到有些服務(wù)器或者數(shù)據(jù)庫(kù)被別人惡意攻擊,會(huì)導(dǎo)致中毒或者資料被盜取所,以我們對(duì)自己的服務(wù)器和數(shù)據(jù)庫(kù)的訪問安全性控制就顯得至關(guān)重要。

今天我們來說說MongoDB的幾點(diǎn)安全性訪問控制,可以通過的IP、端口或者使用賬戶、密碼登錄,來提高我們數(shù)據(jù)庫(kù)和服務(wù)器的安全性訪問情況,主要是通過

啟動(dòng)Mongod服務(wù)的時(shí)候,指定相關(guān)的參數(shù),或者基于角色上讀寫或者管理權(quán)限上的控制,接下來讓我們一起來看一下。

二、指定相關(guān)參數(shù)

1、--auth

我們?cè)趩?dòng)mongodb服務(wù)的時(shí)候,可以添加--auth參數(shù),MongoDB會(huì)驗(yàn)證客戶端連接的賬戶和密碼,

以確定其是否有訪問的權(quán)限。如果認(rèn)證不通過,那么客戶端不能訪問MongoDB的數(shù)據(jù)庫(kù)。

我們來驗(yàn)證下,MongoDB默認(rèn)是不開啟賬密驗(yàn)證的

[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/data/db
[root@mongotest1 bin]# ./mongo
MongoDB Enterprise > show dbs   //默認(rèn)是可以查看到所有實(shí)例
local       
test       
MongoDB Enterprise > use admin
switched to db admin
//切換到admin下創(chuàng)建dba用戶
MongoDB Enterprise > db.createUser({user:"dba",pwd:"dba",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
    "user" : "dba",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
//查看下剛剛有沒有剛剛創(chuàng)建的用戶
MongoDB Enterprise > show users
{
    "_id" : "admin.dba",
    "user" : "dba",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
或者使用這樣的命令查看所
MongoDB Enterprise > db.system.users.find()
{ "_id" : "admin.dba", "user" : "dba", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "qv2mpn/EzS7DjhwYPn0iJQ==", 
"storedKey" : "FNwJUOCaOIeEBfJwuJPpx4nUs1k=", "serverKey" : "rXL2hql7dsxytS3G7aFxSob7ACs=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }

然后我們?cè)僦貑⒎?wù),這次重新啟動(dòng)的時(shí)候要加上--auth參數(shù)

[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/data/db  --auth
[root@mongotest1 bin]# ./mongo
MongoDB Enterprise > use admin
switched to db admin
MongoDB Enterprise > show dbs   //添加上--auth參數(shù)后,沒有進(jìn)行驗(yàn)證查看數(shù)據(jù)庫(kù)實(shí)例的時(shí)候直接報(bào)錯(cuò)沒有執(zhí)行的權(quán)限
2018-05-30T11:02:02.277+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:761:19
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1
//接著我們進(jìn)行驗(yàn)證下后再查看實(shí)例
MongoDB Enterprise > db.auth("dba","dba")  //1表示驗(yàn)證通過,0表示驗(yàn)證不通過(賬密不匹配)
1
MongoDB Enterprise > show dbs  //驗(yàn)證通過后就能夠正常查看到實(shí)例
admin      
local      
test   

2、--port

默認(rèn)端口是27017,該參數(shù)指定Mongod對(duì)應(yīng)的端口,如果指定端口后用其他端口是無法訪問的

//啟動(dòng)服務(wù)的時(shí)候指定端口28017
[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/date/db  --port 28017
//然后我們?cè)僭L問看看
[root@mongotest1 bin]# ./mongo  //沒有指定端口的時(shí)候,無法訪問
MongoDB shell version: 3.2.8
connecting to: test
2018-06-05T17:31:51.737+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2018-06-05T17:31:51.738+0800 E QUERY    [thread1] Error: couldn"t connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:229:14
@(connect):1:6
exception: connect failed
[root@mongotest1 bin]# ./mongo --port=28017    //指定28017端口后,可以正常訪問
MongoDB shell version: 3.2.8
connecting to: 127.0.0.1:28017/test
Server has startup warnings: 
2018-06-05T17:26:59.313+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-06-05T17:26:59.313+0800 I CONTROL  [initandlisten] 
MongoDB Enterprise > show dbs
local  0.000GB

3、--bind_ip

默認(rèn)是沒有IP管控的,該參數(shù)指定Mongod服務(wù)對(duì)應(yīng)其他可以訪問的IP,如果指定后只能是指定的IP才有訪問權(quán)限

//設(shè)置只有本地IP才能訪問 127.0.0.1
[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/date/db  --bind_ip 127.0.0.1
//使用另一個(gè)IP訪問情況
[root@mongodbtest2 bin]# ./mongo --bind_id IP1  //設(shè)置前是可以IP2是可以訪問IP的
Error parsing command line: unrecognised option "--bind_id"
try "./mongo --help" for more information
[root@mongodbtest2 bin]# ./mongo 10.130.170.41
MongoDB shell version: 3.2.8
connecting to: IP1/test
Server has startup warnings: 
2018-06-06T15:32:54.546+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-06-06T15:32:54.546+0800 I CONTROL  [initandlisten] 
MongoDB Enterprise > show dbs
local  0.000GB
[root@mongodbtest2 bin]# ./mongo IP1  設(shè)置后IP2訪問IP1就報(bào)錯(cuò)
MongoDB shell version: 3.2.8
connecting to: IP1/test
2018-06-06T15:51:40.506+0800 W NETWORK  [thread1] Failed to connect to 10.130.170.41:27017, reason: errno:111 Connection refused
2018-06-06T15:51:40.506+0800 E QUERY    [thread1] Error: couldn"t connect to server 10.130.170.41:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:231:14
@(connect):1:6
exception: connect failed

可以添加多個(gè)IP訪問,中間用逗號(hào)‘,’隔開,例如

[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/date/db  --bind_ip 127.0.0.1,IP2

三、基于角色權(quán)限

驗(yàn)證數(shù)據(jù)庫(kù)用戶角色:

1、在test集合上創(chuàng)建只讀和讀寫用戶

//只讀用戶 readonly
MongoDB Enterprise > db.createUser({user:"readonly",pwd:"123",roles:[{role:"read",db:"test"}]})
Successfully added user: {
    "user" : "readonly",
    "roles" : [
        {
            "role" : "read",
            "db" : "test"
        }
    ]
}
//讀寫用戶  readwrite
MongoDB Enterprise > db.createUser({user:"readwrite",pwd:"123123",roles:[{role:"readWrite",db:"test"}]})
Successfully added user: {
    "user" : "readwrite",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}
//查看用戶
MongoDB Enterprise > show users
{
    "_id" : "test.readonly",
    "user" : "readonly",
    "db" : "test",
    "roles" : [
        {
            "role" : "read",
            "db" : "test"
        }
    ]
}
{
    "_id" : "test.readwrite",
    "user" : "readwrite",
    "db" : "test",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "test"
        }
    ]
}

2、重啟mongod服務(wù)

[root@mongotest1 bin]# ./mongod --dbpath /usr/local/mongodb/data/db --auth

3、驗(yàn)證用戶權(quán)限

a.只讀用戶的權(quán)限

MongoDB Enterprise > db.auth("readonly","123")
1
MongoDB Enterprise > db.mongo.insert({"no":"F2","name":"Lily"})  //寫入數(shù)據(jù)報(bào)錯(cuò)
WriteResult({
    "writeError" : {
        "code" : 13,
        "errmsg" : "not authorized on test to execute command { insert: "mongo", documents: [ { _id: ObjectId("5b17a675637751cda118430b"), no: "F2", name: "Lily" } ], ordered: true }"
    }
})
MongoDB Enterprise > db.mongodb.find()  //可以查看數(shù)據(jù)
{ "_id" : ObjectId("5b17a4be2d7daf7945717c22"), "no" : "F1", "name" : "Jack" }
//從以上可以看出只讀用戶無法寫入數(shù)據(jù),但是可以查看集合的數(shù)據(jù)

b.讀寫用戶

MongoDB Enterprise > db.auth("readwrite","123123")
1
MongoDB Enterprise > db.mongodb.insert("no":"F2","name":"Lily") //可以寫入數(shù)據(jù)
2018-06-06T17:18:25.698+0800 E QUERY    [thread1] SyntaxError: missing ) after argument list @(shell):1:22
MongoDB Enterprise > db.mongodb.insert({"no":"F2","name":"Lily"})
WriteResult({ "nInserted" : 1 })
MongoDB Enterprise > db.mongodb.find()  //同時(shí)也可以查看
{ "_id" : ObjectId("5b17a4be2d7daf7945717c22"), "no" : "F1", "name" : "Jack" }
{ "_id" : ObjectId("5b17a6f1637751cda118430c"), "no" : "F2", "name" : "Lily" }
//從上可以看出,讀寫用戶既可以查看集合的數(shù)據(jù)也可以寫入數(shù)據(jù)

四、總結(jié)

管理員可以管理所有數(shù)據(jù)庫(kù),但是不能直接管理其他數(shù)據(jù)庫(kù),要先在admin數(shù)據(jù)庫(kù)認(rèn)證后才可以,要注意的是,

MongoDB默認(rèn)是沒有管理員賬號(hào),所以要先添加管理員賬號(hào),再開啟權(quán)限認(rèn)證。所以,基于安全性的考慮,訪問權(quán)限的控制還是

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/19390.html

相關(guān)文章

  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來越近了。因此無論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來越近了。從2018年5月25日起,任何一個(gè)未能滿足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬歐元——無論哪種罰...

    ningwang 評(píng)論0 收藏0
  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來越近了。因此無論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來越近了。從2018年5月25日起,任何一個(gè)未能滿足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬歐元——無論哪種罰...

    Hwg 評(píng)論0 收藏0
  • 如何保證MongoDB安全性?

    摘要:另外,保證數(shù)據(jù)庫(kù)的訪問安全非常重要,同時(shí)也需要保證數(shù)據(jù)的安全性,做好必要的數(shù)據(jù)備份。關(guān)于如何保護(hù)數(shù)據(jù)的安全性,可以參考我們的博客是這樣備份數(shù)據(jù)的。 上周寫了個(gè)簡(jiǎn)短的新聞《MongoDB裸奔,2億國(guó)人求職簡(jiǎn)歷泄漏!》: 根據(jù)安全站點(diǎn)HackenProof的報(bào)告,由于MongoDB數(shù)據(jù)庫(kù)沒有采取任何安全保護(hù)措施,導(dǎo)致共計(jì)202,730,434份國(guó)人求職簡(jiǎn)歷泄漏。 然后很多人評(píng)論說Mongo...

    Steve_Wang_ 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<