MongoDB的權(quán)限訪問(wèn)控制

MongoDB的訪問(wèn)控制能夠有效保證數(shù)據(jù)庫(kù)的安全,訪問(wèn)控制是指綁定Application監(jiān)聽(tīng)的IP地址频祝,設(shè)置監(jiān)聽(tīng)端口尤泽,使用賬戶和密碼登錄

一,訪問(wèn)控制的參數(shù)

1巾钉,綁定IP地址

mongod 參數(shù):--bind_ip?

默認(rèn)值是所有的IP地址都能訪問(wèn)悦冀,該參數(shù)指定MongoDB對(duì)外提供服務(wù)的綁定IP地址,用于監(jiān)聽(tīng)客戶端?Application的連接睛琳,客戶端只能使用綁定的IP地址才能訪問(wèn)mongod盒蟆,其他IP地址是無(wú)法訪問(wèn)的。

2师骗,設(shè)置監(jiān)聽(tīng)端口

mongod 參數(shù):--port

MongoDB 默認(rèn)監(jiān)聽(tīng)的端口是27017历等,該參數(shù)顯式指定MongoDB實(shí)例監(jiān)聽(tīng)的TCP 端口,只有當(dāng)客戶端Application連接的端口和MongoDB實(shí)例監(jiān)聽(tīng)的端口一致時(shí)辟癌,才能連接到MongoDB實(shí)例寒屯。

3,啟用用戶驗(yàn)證

mongod 參數(shù):--auth

默認(rèn)值是不需要驗(yàn)證黍少,即?--noauth寡夹,該參數(shù)啟用用戶訪問(wèn)權(quán)限控制;當(dāng)mongod 使用該參數(shù)啟動(dòng)時(shí)厂置,MongoDB會(huì)驗(yàn)證客戶端連接的賬戶和密碼菩掏,以確定其是否有訪問(wèn)的權(quán)限。如果認(rèn)證不通過(guò)昵济,那么客戶端不能訪問(wèn)MongoDB的數(shù)據(jù)庫(kù)智绸。

Enables authorization to control user’s access to database resources and operations. When authorization is enabled, MongoDB requires all clients to authenticate themselves first in order to determine the access for the client.

4野揪,權(quán)限認(rèn)證

mongo 參數(shù):--username, -u

mongo 參數(shù):--password, -p

mongo 參數(shù):--authenticationDatabase??指定創(chuàng)建User的數(shù)據(jù)庫(kù);在特定的數(shù)據(jù)庫(kù)中創(chuàng)建User瞧栗,該DB就是User的authentication database斯稳。

在連接mongo時(shí),使用參數(shù)--authenticationDatabase迹恐,會(huì)認(rèn)證 -u 和 -p 參數(shù)指定的賬戶和密碼挣惰。如果沒(méi)有指定驗(yàn)證數(shù)據(jù)庫(kù),mongo使用連接字符串中指定的DB作為驗(yàn)證數(shù)據(jù)塊殴边。

二憎茂,基于角色的訪問(wèn)控制(Role-Based Access Control)

角色是授予User在指定資源上執(zhí)行指定操作的權(quán)限,MongoDB官方手冊(cè)對(duì)角色的定義是:

A role grants privileges to perform the specified actions on resource.

MongoDB為了方便管理員管理權(quán)限找都,在DB級(jí)別上預(yù)先定義了內(nèi)置角色唇辨;如果用戶需要對(duì)權(quán)限進(jìn)行更為細(xì)致的管理廊酣,MongoDB允許用戶創(chuàng)建自定義的角色能耻,能夠在集合級(jí)別上控制User能夠執(zhí)行的操作。

MongoDB使用角色(Role)授予User訪問(wèn)資源的權(quán)限亡驰,Role決定User能夠訪問(wèn)的數(shù)據(jù)庫(kù)資源和執(zhí)行的操作晓猛。一個(gè)User能夠被授予一個(gè)或多個(gè)Role,如果User沒(méi)有被授予Role凡辱,那么就沒(méi)有訪問(wèn)MongoDB系統(tǒng)的權(quán)限戒职。

A user is granted one or more?roles?that determine the user’s access to database resources and operations. Outside of role assignments, the user has no access to the system.

1,內(nèi)置角色(Built-In Roles)

內(nèi)置角色是MongoDB預(yù)定義的角色透乾,操作的資源是在DB級(jí)別上洪燥。MongoDB擁有一個(gè)SuperUser的角色:root,擁有最大權(quán)限乳乌,能夠在系統(tǒng)的所有資源上執(zhí)行任意操作捧韵。

數(shù)據(jù)庫(kù)用戶角色(Database User Roles):

read:授予User只讀數(shù)據(jù)的權(quán)限

readWrite:授予User讀寫(xiě)數(shù)據(jù)的權(quán)限

數(shù)據(jù)庫(kù)管理角色(Database Administration Roles):

dbAdmin:在當(dāng)前dB中執(zhí)行管理操作

dbOwner:在當(dāng)前DB中執(zhí)行任意操作

userAdmin:在當(dāng)前DB中管理User

備份和還原角色(Backup and Restoration Roles):

backup

restore

跨庫(kù)角色(All-Database Roles):

readAnyDatabase:授予在所有數(shù)據(jù)庫(kù)上讀取數(shù)據(jù)的權(quán)限

readWriteAnyDatabase:授予在所有數(shù)據(jù)庫(kù)上讀寫(xiě)數(shù)據(jù)的權(quán)限

userAdminAnyDatabase:授予在所有數(shù)據(jù)庫(kù)上管理User的權(quán)限

dbAdminAnyDatabase:授予管理所有數(shù)據(jù)庫(kù)的權(quán)限

集群管理角色(Cluster Administration Roles):

clusterAdmin:授予管理集群的最高權(quán)限

clusterManager:授予管理和監(jiān)控集群的權(quán)限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.

clusterMonitor:授予監(jiān)控集群的權(quán)限汉操,對(duì)監(jiān)控工具具有readonly的權(quán)限

hostManager:管理Server

2再来,用戶自定義的角色(User-Defined Roles)

內(nèi)置角色只能控制User在DB級(jí)別上執(zhí)行的操作,管理員可以創(chuàng)建自定義角色磷瘤,控制用戶在集合級(jí)別(Collection-Level)上執(zhí)行的操作芒篷,即,控制User在當(dāng)前DB的特定集合上執(zhí)行特定的操作采缚。

在創(chuàng)建角色時(shí)针炉,必須明確Role的四個(gè)特性:

Scope:角色作用的范圍,創(chuàng)建在Admin中的角色扳抽,能夠在其他DB中使用糊识;在其他DB中創(chuàng)建的角色绩社,只能在當(dāng)前DB中使用;

Resource:角色控制的資源赂苗,表示授予在該資源上執(zhí)行特定操作的權(quán)限愉耙;

Privilege Actions:定義了User能夠在資源上執(zhí)行的操作,系統(tǒng)定義Action是:Privilege Actions拌滋;

Inherit:角色能夠繼承其他角色權(quán)限

2.1 角色作用的范圍(Scope)

在admin 數(shù)據(jù)庫(kù)中創(chuàng)建的角色朴沿,Scope是全局的,能夠在admin败砂,其他DB和集群中使用赌渣,并且能夠繼承其他DB的Role;而在非admin中創(chuàng)建的角色昌犹,Scope是當(dāng)前數(shù)據(jù)庫(kù)坚芜,只能在當(dāng)前DB中使用,只能繼承當(dāng)前數(shù)據(jù)庫(kù)的角色斜姥。

A role created in the admin database can include privileges that apply to the admin database, other databases or to the cluster resource, and can inherit from roles in other databases as well as the admin database.?Except for roles created in the admin database, a role can only include privileges that apply to its database and can only inherit from other roles in its database.?

2.2?權(quán)限的操作(Privilege actions)

MongoDB的權(quán)限包由:資源(Resource)和操作(Action)兩部分組成鸿竖,Privilege Actions 定義User能夠在資源上執(zhí)行的操作,例如:MongoDB在文檔級(jí)別(Document-Level)上執(zhí)行的讀寫(xiě)操作(Query and Write Actions)列表是

find

insert

remove

update

3铸敏,創(chuàng)建角色

使用db.CreateRole()在當(dāng)前DB中創(chuàng)建角色缚忧,創(chuàng)建的語(yǔ)法示例如下:

use admin

db.createRole(

? {

? ? role: "new_role",

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

)

在roles數(shù)組中,指定被繼承的role杈笔,即闪水,新建的new_role從roles數(shù)組中繼承權(quán)限:

如果被繼承的role在當(dāng)前DB中,定義的格式是:roles:["role"]蒙具;

如果被繼承的role不在當(dāng)前DB中球榆,需要使用doc,指定該role所在的DB禁筏,定義的格式是:roles:[{role:"role_name", db:"db_name"}]持钉;

4,自定義角色管理函數(shù)

db.createRole():Creates a role and specifies its privileges.

db.updateRole():Updates a user-defined role.

db.dropRole():Deletes a user-defined role.

db.dropAllRoles():Deletes all user-defined roles associated with a database.

db.grantPrivilegesToRole():Assigns privileges to a user-defined role.

db.revokePrivilegesFromRole():Removes the specified privileges from a user-defined role.

db.grantRolesToRole():Specifies roles from which a user-defined role inherits privileges.

db.revokeRolesFromRole():Removes inherited roles from a role.

db.getRole():Returns information for the specified role.

db.getRoles():Returns information for all the user-defined roles in a database.

三融师,管理用戶和權(quán)限

1右钾,創(chuàng)建用戶

use db_name

db.createUser( {? ? user: "user_name",? ? pwd: "user_pwd",? ? roles: [? { role: "clusterAdmin", db: "admin" },? ? ? ? ? ? ? { role: "readAnyDatabase", db: "admin" },? ? ? ? ? ? ? "readWrite"

] })

為新建的User,授予一個(gè)或多個(gè)角色旱爆,通過(guò)roles數(shù)組來(lái)實(shí)現(xiàn):

如果role存在于當(dāng)前DB中舀射,roles的格式:roles:["role"];

如果role不存在于當(dāng)前DB中,roles的格式:roles:[Role:"role_name", db:"db_name"];

2腺兴,權(quán)限認(rèn)證(Authenticate)

mongo連接到mongod笙僚,有兩種權(quán)限認(rèn)證的方式:

在連接時(shí)認(rèn)證用戶訪問(wèn)的權(quán)限并徘,mongo 使用參數(shù)--authenticationDatabase? 指定認(rèn)證數(shù)據(jù)庫(kù)鸦采;

在連接后毙驯,認(rèn)證用戶訪問(wèn)的權(quán)限竟坛,mongo 沒(méi)有使用參數(shù)--authenticationDatabase?拜鹤,在連接到mongod之后框冀,切換到驗(yàn)證數(shù)據(jù)庫(kù)(authentication database)中,使用db.auth() 驗(yàn)證User是否有權(quán)限訪問(wèn)當(dāng)前數(shù)據(jù)庫(kù)敏簿;

use db_name

db.auth("user_name", "user_pwd" )

3明也,用戶管理函數(shù)

db.auth():Authenticates a user to a database.

db.createUser():Creates a new user.

db.updateUser():Updates user data.

db.changeUserPassword():Changes an existing user’s password.

db.dropAllUsers():Deletes all users associated with a database.

db.dropUser():Removes a single user.

db.grantRolesToUser():Grants a role and its privileges to a user.

db.revokeRolesFromUser():Removes a role from a user.

db.getUser():Returns information about the specified user.

db.getUsers():Returns information about all users associated with a database.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市惯裕,隨后出現(xiàn)的幾起案子温数,更是在濱河造成了極大的恐慌,老刑警劉巖蜻势,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撑刺,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡握玛,警方通過(guò)查閱死者的電腦和手機(jī)够傍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)败许,“玉大人王带,你說(shuō)我怎么就攤上這事淑蔚∈幸螅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵刹衫,是天一觀的道長(zhǎng)醋寝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)带迟,這世上最難降的妖魔是什么音羞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮仓犬,結(jié)果婚禮上嗅绰,老公的妹妹穿的比我還像新娘。我一直安慰自己搀继,他們只是感情好窘面,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著叽躯,像睡著了一般财边。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上点骑,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天酣难,我揣著相機(jī)與錄音谍夭,去河邊找鬼。 笑死憨募,一個(gè)胖子當(dāng)著我的面吹牛紧索,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菜谣,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼齐板,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了葛菇?” 一聲冷哼從身側(cè)響起甘磨,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎眯停,沒(méi)想到半個(gè)月后济舆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莺债,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年滋觉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齐邦。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椎侠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出措拇,到底是詐尸還是另有隱情我纪,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布丐吓,位于F島的核電站浅悉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏券犁。R本人自食惡果不足惜术健,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粘衬。 院中可真熱鬧荞估,春花似錦、人聲如沸稚新。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枷莉。三九已至娇昙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笤妙,已是汗流浹背冒掌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工噪裕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人股毫。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓膳音,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铃诬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祭陷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一、源題QUESTION 36Your database is open and the LISTENER lis...
    貓貓_tomluo閱讀 1,243評(píng)論 0 2
  • Built-In Roles(內(nèi)置角色): 1. 數(shù)據(jù)庫(kù)用戶角色:read趣席、readWrite; 2. 數(shù)據(jù)庫(kù)管理...
    阿杰Alex閱讀 1,447評(píng)論 0 1
  • centos7下安裝3.2.6版本的MongoDB參考此篇文章 上述過(guò)程安裝下的mongodb兵志,在命令窗口中默認(rèn)是...
    Uzero閱讀 7,377評(píng)論 0 4
  • 一、源題QUESTION 1The instance abnormally terminates because ...
    貓貓_tomluo閱讀 1,600評(píng)論 0 2
  • “愛(ài)在左宣肚,情在右想罕,走在生命的兩旁。隨時(shí)撒種霉涨,隨時(shí)開(kāi)花按价,將這一路長(zhǎng)徑點(diǎn)綴得花香彌漫,使穿枝拂葉的行人笙瑟,踏著荊棘楼镐,不覺(jué)...
    流離烽火閱讀 7,542評(píng)論 9 10