MongoDB安全指引

2021-08-27 03:15:43 字數 3246 閱讀 9780

mongodb社群版有三大主要安全措施,分別是安全認證、角色授權和tls/ssl傳輸加密。當然除此之外,定期做資料庫備份,也是很好的安全防範手段。另外,本文還將對一些提公升mongodb安全性的細節做闡述。其中部分安全措施,暫時不能細化操作步驟,以後實踐中再補充。

開發期間做過多的安全配置,會影響開發效率,在必要時按部就班實施各種安全措施即可。

本文不關注分片情況下和mongodb企業版的安全措施。

一、安全認證

mongodb啟動時可以附帶多種配置,其中-auth就是開啟安全認證的引數,開啟認證的同時需配置資料庫管理員使用者名稱和密碼,命令示例:mongod --auth。

如上方式啟動資料庫後,通過mongo命令進入shell,通過以下步驟配置指定資料庫賬戶:

分別執行use admin和db.createuser(]})

分別執行use admin和db.auth(『admin』,』123456』),返回1,表示認證通過

分別執行usemydb和db.createuser(]}),即可為資料庫mydb建立賬戶qj。之後連線該資料庫自然要先通過該認證。

二、角色授權

如上,在建立資料庫使用者時可以直接指定當前賬戶的操作許可權。這樣就可以對每個使用者可以執行的操作進行更細粒度的控制。使用基於角色的認證可以限制對資料庫的訪問,而不是所有的使用者都是管理員。

其中幾個常用命令簡述如下,詳情可查mongodb官方文件:

db.createrole()該命令用於建立角色,並為該角色設定操作許可權。mongodb有預設配置的多種許可權供選擇,如:read,readwrite等。

db.grantrolestouser()該命令既是將某角色(許可權組)授權給指定使用者。

三、tls/ssl傳輸加密

啟用tls/ssl可將應用和資料庫之間的傳輸加密,避免竊聽、篡改和「中間人」攻擊。具體開啟步驟,還需要更多時間除錯。

四、資料庫備份

備份可以有效減小資料汙染、清空等損失。

這裡介紹通過定時執行mongodb自帶的mongodump命令對資料庫備份的方法。特別說明一下mongodump得到的備份並非資料庫的快照,在備份同時如果資料庫在做增刪改操作,可能出現資料備份不完整。對於一般應用,把備份生成時間設定在資料庫操作較少時即可(比如凌晨3點),暫停應用也是乙個辦法。

1、建立mongodb資料庫備份目錄

mkdir -p /home/backup/mongod_bak/mongod_bak_now

mkdir -p /home/backup/mongod_bak/mongod_bak_list

2、新建mongodb資料庫備份指令碼

vi /home/crontab/mongod_bak.sh #新建檔案,輸入以下**

#!/bin/sh

dump=/usr/local/mongodb/bin/mongodump #mongodump備份檔案執行路徑

out_dir=/home/backup/mongod_bak/mongod_bak_now #臨時備份目錄

tar_dir=/home/backup/mongod_bak/mongod_bak_list #備份存放路徑

date=`date +%y_%m_%d` #獲取當前系統時間

db_user=username #資料庫賬號

db_pass=123456 #資料庫密碼

days=7 #days=7代表刪除7天前的備份,即只保留最近7天的備份

tar_bak="mongod_bak_$date.tar.gz" #最終儲存的資料庫備份檔案名

cd $out_dir

rm -rf $out_dir/*

mkdir -p $out_dir/$date

$dump -u $db_user -p $db_pass -o $out_dir/$date #備份全部資料庫

tar -zcvf $tar_dir/$tar_bak $out_dir/$date #壓縮為.tar.gz格式

find $tar_dir/ -mtime +$days -delete #刪除7天前的備份檔案

:wq! #儲存退出

3、修改檔案屬性,使其可執行

chmod +x /home/crontab/mongod_bak.sh

4、修改/etc/crontab #新增計畫任務

vi /etc/crontab #在下面新增

30 1 * * * root /home/crontab/mongod_bak.sh #表示每天凌晨1點30執行備份

5、重新啟動crond使設定生效

/etc/rc.d/init.d/crond restart

chkconfig crond on #設為開機啟動

service crond start #啟動

每天在/home/backup/mongod_bak/mongod_bak_list目錄下面可以看到mongod_bak_2015_02_28.tar.gz這樣的壓縮檔案。

五、限制網路介面

可以通過bind_ip引數,指定允許訪問的ip。如:bind_ip=127.0.0.1,192.168.10.188。引數設定可以將允許資料庫的位址訪問限制為本地和192.168.10.188。

也可通過系統防火牆限制mongodb的外部訪問,使用vpn提供外部訪問通道。

六、禁用http介面

預設情況下mongodb在埠28017上執行http介面,以提供「主」狀態頁面。在生產環境下推薦不要使用此介面,最好禁止這個介面。使用"nohttpinte***ce"配置設定可以禁止這個http介面。(3.2以上版本已經移除httpinte***ce,無需使用該措施)。

七、建立專用賬戶訪問mongodb檔案

可以建立乙個使用者名為mongodb的系統賬戶,專用於mongodb檔案的訪問。這種方式可以強化資料庫系統自身安全,防止惡意、強制、以不安全的方式重啟mongodb。

八、使用mongodb企業版

使用mongodb企業版,可以啟用更多安全措施。

論壇的安全配置指引

論壇的安全配置 由於本人掌握的技術和愛好原因,這個部分會講得特別詳細。首先說說asp論壇的資料庫問題,在資料庫裡存放了整個論壇的所有資料,包括使用者的敏感資訊,這是非常危險的,這時我們就面臨乙個防資料 的問題,其實真正做到防 有兩個辦法 請看下面的目錄結構 e user sangel databas...

論壇的安全配置指引

論壇的安全配置 由於本人掌握的技術和愛好原因,這個部分會講得特別詳細。首先說說asp論壇的資料庫問題,在資料庫裡存放了整個論壇的所有資料,包括使用者的敏感資訊,這是非常危險的,這時我們就面臨乙個防資料 的問題,其實真正做到防 有兩個辦法 請看下面的目錄結構 e user sangel databas...

論壇的安全配置指引

論壇的安全配置 由於本人掌握的技術和愛好原因,這個部分會講得特別詳細。首先說說asp論壇的資料庫問題,在資料庫裡存放了整個論壇的所有資料,包括使用者的敏感資訊,這是非常危險的,這時我們就面臨乙個防資料 的問題,其實真正做到防 有兩個辦法 請看下面的目錄結構 e user sangel databas...