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

資訊專欄INFORMATION COLUMN

mongodb賬戶授權(quán)管理

paney129 / 2364人閱讀

摘要:最近出現(xiàn)了較多的權(quán)限事故,遠(yuǎn)的有國(guó)外的信用卡信息泄露,近的有國(guó)內(nèi)用戶人臉識(shí)別數(shù)據(jù)庫被脫褲,原因都是使用了未加權(quán)限管理的數(shù)據(jù)庫,導(dǎo)致在公網(wǎng)可以直接通過加端口的方式訪問。

最近mongodb出現(xiàn)了較多的權(quán)限事故,遠(yuǎn)的有國(guó)外的信用卡信息泄露,近的有國(guó)內(nèi)用戶人臉識(shí)別數(shù)據(jù)庫被脫褲,原因都是使用了未加權(quán)限管理的mongodb數(shù)據(jù)庫,導(dǎo)致在公網(wǎng)可以直接通過ip加端口的方式訪問。最近我們新開的一個(gè)項(xiàng)目也是用了mongodb,為了避免自己成為背鍋俠,我也不得已實(shí)踐一遍mongodb的用戶權(quán)限管理。

要想對(duì)db授權(quán), 首先要搞清楚mongodb的角色種類:

Read:允許用戶讀取指定數(shù)據(jù)庫
readWrite:允許用戶讀寫指定數(shù)據(jù)庫
dbAdmin:允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶
clusterAdmin:只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
readAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限
readWriteAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限
userAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限
dbAdminAnyDatabase:只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。
root:只在admin數(shù)據(jù)庫中可用。超級(jí)賬號(hào),超級(jí)權(quán)限

mongodb給用戶授權(quán)有兩種方式
1.在添加用戶的時(shí)候授權(quán)

use order;
db.createUser(
   {
     user: "devweb-test3",
     pwd: "mmt-devweb",
     roles: [ { role: "dbAdmin", db: "order" },{ role: "readWrite", db: "order" }   ]
   }
);

2.創(chuàng)建用戶后給用戶添加權(quán)限

use order;
db.grantRolesToUser( "devweb-test3" , [ { role: "dbOwner", db: "order" } ])

刪除用戶

use order;
db.dropUser("devweb-test3");

回收用戶權(quán)限

use order;
db.revokeRolesFromUser( "devweb-test3" , [ { role: "readWrite", db: "order" } ])

以上是我實(shí)踐中成功的案例,下面是實(shí)踐中踩到的一些坑

授權(quán)必須在被授權(quán)的db中進(jìn)行,否則授權(quán)無效(我的mongo版本是4.0.7)

use admin;
switched to db admin
> db.createUser(
...    {
...      user: "devweb-test3",
...      pwd: "mmt-devweb",
...      roles: [ { role: "dbAdmin", db: "order" },{ role: "readWrite", db: "order" }   ]
...    }
... );
Successfully added user: {
    "user" : "devweb-test3",
    "roles" : [
        {
            "role" : "dbAdmin",
            "db" : "order"
        },
        {
            "role" : "readWrite",
            "db" : "order"
        }
    ]
}

然后在另外一個(gè)終端登錄進(jìn)行認(rèn)證

db.logout();
{ "ok" : 1 }
> db.auth("devweb-test3","mmt-devweb");
Error: Authentication failed.

2.僅僅給用戶添加adAdmin角色仍然無法訪問db,還需要readWrite角色

db.createUser(
...    {
...      user: "devweb-test",
...      pwd: "mmt-devweb",
...      roles: [ { role: "dbAdmin", db: "order" }  ]
...    }
... );
Successfully added user: {
    "user" : "devweb-test",
    "roles" : [
        {
            "role" : "dbAdmin",
            "db" : "order"
        }
    ]
}

在另外一個(gè)終端進(jìn)行登錄授權(quán)

db.auth("devweb-test","mmt-devweb");
1
> show collections;
financialAssetFlow
productDetail
productList
> db.financialAssetFlow.find().pretty();
Error: error: {
    "ok" : 0,
    "errmsg" : "not authorized on order to execute command { find: "financialAssetFlow", filter: {}, lsid: { id: UUID("676a5042-0c80-4b79-9e8a-d91b63e80199") }, $db: "order" }",
    "code" : 13,
    "codeName" : "Unauthorized"
}

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

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

相關(guān)文章

  • mongoDB初階系列一:用戶和權(quán)限

    摘要:本文將重點(diǎn)介紹的用戶和權(quán)限這一部分。結(jié)果返回,表示管理員登錄成功。接下來,用這個(gè)管理員給數(shù)據(jù)庫創(chuàng)建一個(gè)普通用戶,并指定其權(quán)限為。 前言 對(duì)于數(shù)據(jù)庫而言,用戶和權(quán)限是非常重要的一部分,因?yàn)檫@涉及到安全,那么mongoDB的用戶和權(quán)限是怎么樣的呢? 說明 環(huán)境說明 本文所用的mongoDB版本是3.6,操作系統(tǒng)是windows。 其他說明 限于篇幅,本文不會(huì)介紹數(shù)據(jù)庫從下載到安裝的過程,關(guān)...

    CastlePeaK 評(píng)論0 收藏0
  • 記錄一次并發(fā)讀取MongoDB的踩坑過程

    摘要:出現(xiàn)的問題筆者前段時(shí)間開發(fā)一個(gè)新項(xiàng)目的某個(gè)功能模塊要讀取老游戲中某個(gè)數(shù)據(jù)庫計(jì)作庫連續(xù)讀庫中的個(gè)集合相當(dāng)于的張表取數(shù)據(jù)在測(cè)試環(huán)境單次操作時(shí)是內(nèi)但是并發(fā)測(cè)試情況下比如內(nèi)個(gè)并發(fā)時(shí)讀取庫個(gè)集合的耗時(shí)能達(dá)到以上甚至且個(gè)并發(fā)請(qǐng)求幾乎同時(shí)完成但是在我本地 出現(xiàn)的問題 筆者前段時(shí)間開發(fā)一個(gè)新項(xiàng)目的某個(gè)功能模塊,要讀取老游戲中某個(gè)Mongo數(shù)據(jù)庫(計(jì)作A庫),連續(xù)讀A庫中的6個(gè)集合(相當(dāng)于MySQL的6...

    luffyZh 評(píng)論0 收藏0
  • MongoDB 入門教程

    摘要:可選,拋出異常的級(jí)別。示例教程更新一條數(shù)據(jù)標(biāo)題。命令行下執(zhí)行進(jìn)入數(shù)據(jù)庫進(jìn)入庫可查看當(dāng)前庫用戶列表執(zhí)行新建用戶設(shè)置賬戶密碼,并指定級(jí)別。重啟服務(wù)重新進(jìn)入數(shù)據(jù)庫,發(fā)現(xiàn)命令無法執(zhí)行,報(bào)權(quán)限不足錯(cuò)誤。命令可以正常執(zhí)行。 1.MongoDB 簡(jiǎn)介 MongoDB 是由C++語言編寫的,是一個(gè)基于分布式文件存儲(chǔ)的開源數(shù)據(jù)庫系統(tǒng)。在高負(fù)載的情況下,添加更多的節(jié)點(diǎn),可以保證服務(wù)器性能。MongoDB ...

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

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

0條評(píng)論

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