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

資訊專欄INFORMATION COLUMN

Mongodb的認(rèn)證及權(quán)限管理

IT那活兒 / 3249人閱讀
Mongodb的認(rèn)證及權(quán)限管理

對于各種數(shù)據(jù)庫軟件,啟用認(rèn)證的方法都不同,比如PG是在pg_hba.conf中對用戶設(shè)置使用啟用密碼認(rèn)證,而Oracle遠程登錄均需要使用密碼認(rèn)證。Mongodb是在參數(shù)中控制是否啟用密碼認(rèn)證,并且啟用后,對所有用戶生效,并不能像PG一樣對用戶區(qū)別對待。需要啟用認(rèn)證,使用mongod --auth或者在參數(shù)文件中加入authorization: enabled。mongodb的認(rèn)證分為用戶驗證(client auth)和集群間認(rèn)證(internal auth),在復(fù)制集中啟用認(rèn)證需指定keyFile參數(shù),指定后即默認(rèn)啟用了用戶驗證。

從3.0開始,mongodb默認(rèn)采用SCRAM加密算法,在3.0以前默認(rèn)使用MongoDB-CR算法,所以如果數(shù)據(jù)庫是從2.X版本升級上來的數(shù)據(jù)庫,可能出現(xiàn)認(rèn)證機制不兼容導(dǎo)致客戶端無法連接數(shù)據(jù)庫的情況。另外mongodb還支持x.509算法,主要用于加密連接中,本人也未使用過,此處不做探討。


一. 用戶創(chuàng)建及管理

在Mongodb中的用戶是基于數(shù)據(jù)庫的,不同數(shù)據(jù)庫中可以存在同名用戶,所以在登錄數(shù)據(jù)庫的時候,需要指定mongo --authenticationDatabase=XX 參數(shù)選擇認(rèn)證數(shù)據(jù)庫。在生產(chǎn)中,為了規(guī)范和便于管理,我們建議將所有用戶都創(chuàng)建在admin庫中。需要注意的是Mongodb默認(rèn)是沒有創(chuàng)建任何內(nèi)置用戶的,所以在數(shù)據(jù)庫實例啟用認(rèn)證前,需要先創(chuàng)建一個超管賬號,然后再重啟實例啟用認(rèn)證。

——用戶創(chuàng)建

use admin
db.createUser({user:"fhtest", pwd:"Ba@31^T2cy",roles:[{role:"read",db:"production"}]});
{role:"read",db:"production"},

表示在production庫有read角色,可以看到roles值是一個數(shù)組,所以可以具有多個庫的多種角色或者一個庫的多種角色

——用戶授權(quán)

db.grantRolesToUser( "ticket" , [ { role: "dbOwner", db: "pc_ticket" },{ role: "dbOwner", db: "pc_payment" } ]) ;

——權(quán)限回收

db.revokeRolesFromUser( "ticket", [{role:"clusterMonitor",db:"admin"}] );

——用戶查詢

db.getUsers();


二.  角色管理

從上面用戶管理的命令可以看到,不管是授權(quán)還是回收權(quán)限,都是基于角色的,Mongodb不能直接將某個集合或者數(shù)據(jù)庫的操作權(quán)限授予用戶,只能通過role來進行授權(quán),role可以是系統(tǒng)內(nèi)置的,也可以是用戶自定義的。

內(nèi)置角色包括root、dbOwner、clusterAdmin、read、readWrite等,root角色相當(dāng)于PG的superuser超管權(quán)限。在生產(chǎn)環(huán)境中,會有給用戶授予所有數(shù)據(jù)庫讀權(quán)限的需求,類似oracle的select any table ,Mongodb中具有all database role,如readAnyDatabase、readWriteAnyDatabase等 ,詳細(xì)內(nèi)置role可查看官方文檔。

由于不能將對象權(quán)限授予用戶,所以當(dāng)要進行精細(xì)的權(quán)限控制,內(nèi)置角色無法滿足需求,就只能自定義角色。自定義角色里面可以直接對對象(resource)進行操作(action)的權(quán)限,也可以包含某個角色。如:

use admin
db.createRole(
   {
     role: "myClusterwideAdmin",
     privileges: [
       { resource: { cluster: true }, actions: [ "addShard" ] },
       { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
       { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
       { resource: { db: "", collection: "" }, actions: [ "find" ] }
     ],
     roles: [
       { role: "read", db: "admin" }
     ]
   },
   { w: "majority" , wtimeout: 5000 }
)
從上面的例子可以看出resource是一個子文檔,包含db和collection,如果為空則表示所有對象,action是一個數(shù)組,包含需要授予的操作權(quán)限。

當(dāng)然也可以將role授權(quán)給role,使用db.grantRolesToRole() 。

在生產(chǎn)環(huán)境中若,經(jīng)常需要在mongo上執(zhí)行javascript腳本,并且使用db.eval()調(diào)用javascript腳本,則可能出現(xiàn)如下報錯,提示無權(quán)限

eval需要所有資源的所有權(quán)限,需創(chuàng)建如下角色并授予用戶

db.createRole(
   {
     role: "eval_role",
     privileges: [
       { resource: { anyResource: true }, actions: [ "anyAction" ] }
     ],
   roles:[]
   }
)

在此,強烈不建議授予此類權(quán)限!調(diào)用javascript可以使用其他方案,比如load 。


相關(guān)閱讀



以文本形式將MySql數(shù)據(jù)遷移Mongodb的方法

Mongodb聚合查詢及在日常運維中的使用

Mongodb日常性能問題處理案例分享

Mongodb增量備份和基于時間點恢復(fù)

Mongodb升級方案概述


END


更多精彩干貨分享

點擊下方名片關(guān)注

IT那活兒

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

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

相關(guān)文章

  • MongoDB 入門教程

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

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

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

    zhonghanwen 評論0 收藏0
  • MongoDB開啟權(quán)限認(rèn)證

    摘要:默認(rèn)是不開啟權(quán)限認(rèn)證的,而我也是一直這么做的。自從上次爆發(fā)了贖金門事件,必須重視下的權(quán)限認(rèn)證了。開啟認(rèn)證也很簡單,在配置文件默認(rèn)是里面加入這樣一行就行了。 MongoDB version: v3.4.4 MongoDB默認(rèn)是不開啟權(quán)限認(rèn)證的,而我也是一直這么做的。自從上次MongoDB爆發(fā)了贖金門事件,必須重視下MongoDB的權(quán)限認(rèn)證了。 開啟認(rèn)證也很簡單,在配置文件(默認(rèn)是/etc...

    30e8336b8229 評論0 收藏0
  • mongoDB安裝與操作

    摘要:一下安裝數(shù)據(jù)庫進入官網(wǎng),選擇相應(yīng)的版本下載,安裝時默認(rèn)勾選安裝服務(wù)和修改一些數(shù)據(jù)庫配置,如已有數(shù)據(jù)庫連接工具,可取消默認(rèn)勾選的安裝。 一、Win下安裝數(shù)據(jù)庫 進入mongo官網(wǎng),選擇相應(yīng)的msi版本下載,安裝時默認(rèn)勾選安裝MongoD服務(wù)和修改一些數(shù)據(jù)庫配置,如已有數(shù)據(jù)庫連接工具Robo 3T,可取消默認(rèn)勾選的compass安裝。 若啟動服務(wù)報mp錯誤,可修改binmongod.cfg...

    zorpan 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

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