成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

mongodb賬戶授權管理

paney129 / 2366人閱讀

摘要:最近出現了較多的權限事故,遠的有國外的信用卡信息泄露,近的有國內用戶人臉識別數據庫被脫褲,原因都是使用了未加權限管理的數據庫,導致在公網可以直接通過加端口的方式訪問。

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

要想對db授權, 首先要搞清楚mongodb的角色種類:

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

mongodb給用戶授權有兩種方式
1.在添加用戶的時候授權

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

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

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

刪除用戶

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

回收用戶權限

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

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

授權必須在被授權的db中進行,否則授權無效(我的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"
        }
    ]
}

然后在另外一個終端登錄進行認證

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"
        }
    ]
}

在另外一個終端進行登錄授權

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"
}

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

轉載請注明本文地址:http://systransis.cn/yun/19507.html

相關文章

  • mongoDB初階系列一:用戶和權限

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

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

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

    luffyZh 評論0 收藏0
  • MongoDB 入門教程

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

    Vicky 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<