摘要:在前面一篇文章中,我介紹了如何在單臺(tái)上設(shè)置鑒權(quán),以防范對(duì)數(shù)據(jù)未經(jīng)授權(quán)的訪問。本文介紹在配置了主從和分片的情況下,如何為數(shù)據(jù)庫添加鑒權(quán)。創(chuàng)建用戶并賦予合適的角色這點(diǎn)參考前面的單臺(tái)如何設(shè)置鑒權(quán)即可,使用客戶端連上數(shù)據(jù)庫,創(chuàng)建用戶,過程完全一樣。
在前面一篇文章中,我介紹了如何在單臺(tái) MongoDB 上設(shè)置鑒權(quán),以防范對(duì)數(shù)據(jù)未經(jīng)授權(quán)的訪問。本文介紹在配置了主從(Replica Set)和分片(Sharding)的情況下,如何為數(shù)據(jù)庫添加鑒權(quán)。這兩種情況下的配置方式?jīng)]有區(qū)別,為簡(jiǎn)單起見,我將它們都稱作“多臺(tái)服務(wù)器”。
總的來說,為多臺(tái)服務(wù)器配置鑒權(quán)分為三步:
創(chuàng)建 key 文件;
通過 key 文件來啟動(dòng)每臺(tái)服務(wù)器;
創(chuàng)建用戶并賦予合適的角色。
創(chuàng)建 key 文件在單臺(tái) MongoDB 上配置鑒權(quán)時(shí),我們只需要關(guān)心客戶端與服務(wù)器之間的通信是否安全;而在多臺(tái)服務(wù)器環(huán)境下,我們還要關(guān)注服務(wù)器與服務(wù)器之間的通信。
為了保證服務(wù)器與服務(wù)器之間的通信安全,MongoDB 提供了一種很方便的方式:key 文件。所有的服務(wù)器都使用相同內(nèi)容的 key 文件來驗(yàn)證相互之間的通信,那么只要 key 文件不泄露出去,服務(wù)器之間的通信就無法仿冒,可以說是安全的。
key 文件的內(nèi)容應(yīng)該隨機(jī)生成,僅包含 base64 字符集中的字符,空白字符(空格,換行,制表符等)會(huì)被忽略。文件大小在 6~1024 字節(jié)之間。key 文件的訪問權(quán)限必須被設(shè)置為 600,否則 MongoDB 會(huì)報(bào)錯(cuò)說沒有設(shè)置正確的文件權(quán)限。
你可以用 vi 或 openssl 命令來生成 key 文件。下面是一個(gè)例子:
openssl rand -base64 741 > mongodb-keyfile chmod 600 mongodb-keyfile
創(chuàng)建好 key 文件后,將其分發(fā)到所有服務(wù)器上,并保證只有運(yùn)行 mongodb 的用戶能訪問該文件。
通過 key 文件來啟動(dòng)每臺(tái) MongoDB服務(wù)器的啟動(dòng)順序不變,區(qū)別僅僅是在啟動(dòng)命令里加上 --auth --keyFile mongodb-keyfile 這兩個(gè)參數(shù)。注意不管是 mongod 還是 mongos 都要加上這兩個(gè)參數(shù)。
創(chuàng)建用戶并賦予合適的角色這點(diǎn)參考前面的 “單臺(tái)MongoDB如何設(shè)置鑒權(quán)” 即可,使用客戶端連上數(shù)據(jù)庫,創(chuàng)建用戶,過程完全一樣。需要注意的是對(duì)于主從數(shù)據(jù)庫你應(yīng)該連到主數(shù)據(jù)庫上,而對(duì)于分片你應(yīng)該連到 mongos 上。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/18742.html
摘要:缺省是沒有設(shè)置鑒權(quán)的,業(yè)界大部分使用的項(xiàng)目也沒有設(shè)置訪問權(quán)限。本文介紹如何在單臺(tái)服務(wù)器上設(shè)置鑒權(quán)。類似的,為規(guī)劃用戶鑒權(quán)時(shí),至少要規(guī)劃兩種角色用戶管理員和數(shù)據(jù)庫用戶。缺省方式下是不進(jìn)行鑒權(quán)檢查的。 MongoDB 缺省是沒有設(shè)置鑒權(quán)的,業(yè)界大部分使用 MongoDB 的項(xiàng)目也沒有設(shè)置訪問權(quán)限。這就意味著只要知道 MongoDB 服務(wù)器的端口,任何能訪問到這臺(tái)服務(wù)器的人都可以查詢和操作 ...
摘要:我們常說的分表分庫分區(qū)等概念都屬于分片的實(shí)際體現(xiàn)。傳統(tǒng)分片做法是手工分表分庫。自動(dòng)分片技術(shù)是根據(jù)指定的片鍵自動(dòng)拆分?jǐn)?shù)據(jù)并維護(hù)數(shù)據(jù)請(qǐng)求路由的過程。 1.mongodb特性 1)mongo是一個(gè)面向文檔的數(shù)據(jù)庫,它集合了nosql和sql數(shù)據(jù)庫兩方面的特性。 2)所有實(shí)體都是在首次使用時(shí)創(chuàng)建。 3)沒有嚴(yán)格的事務(wù)特性,但是它保證任何一次數(shù)據(jù)變更都是原子性的。 4)也沒有固定的數(shù)據(jù)模型 5)...
摘要:學(xué)習(xí)筆記安裝沒什么好說的主從復(fù)制參照這個(gè)地址創(chuàng)建證書并給各個(gè)服務(wù)器主要命令開啟副本集驗(yàn)證初始化副本集添加備節(jié)點(diǎn)添加仲裁者節(jié)點(diǎn)啟動(dòng)時(shí)需要增加的參數(shù)指定鏈接的關(guān)鍵密匙統(tǒng)一集合名稱從服務(wù)器可查參照這個(gè)地址分片分片就是將數(shù)據(jù) Docker 學(xué)習(xí)筆記. Mongodb 安裝 沒什么好說的 = =! Mongodb 主從復(fù)制 參照這個(gè)地址 : http://dockone.io/artic...
摘要:學(xué)習(xí)筆記安裝沒什么好說的主從復(fù)制參照這個(gè)地址創(chuàng)建證書并給各個(gè)服務(wù)器主要命令開啟副本集驗(yàn)證初始化副本集添加備節(jié)點(diǎn)添加仲裁者節(jié)點(diǎn)啟動(dòng)時(shí)需要增加的參數(shù)指定鏈接的關(guān)鍵密匙統(tǒng)一集合名稱從服務(wù)器可查參照這個(gè)地址分片分片就是將數(shù)據(jù) Docker 學(xué)習(xí)筆記. Mongodb 安裝 沒什么好說的 = =! Mongodb 主從復(fù)制 參照這個(gè)地址 : http://dockone.io/artic...
閱讀 1226·2021-11-15 18:00
閱讀 1813·2021-10-08 10:15
閱讀 804·2021-09-04 16:48
閱讀 2417·2021-09-04 16:48
閱讀 1342·2019-08-29 18:40
閱讀 991·2019-08-29 13:08
閱讀 3016·2019-08-26 14:06
閱讀 1135·2019-08-26 13:35