本文介紹一些應實施的安全措施,以保護您的MongoDB安全。
1.啟用訪問控制和強制驗證
啟用訪問控制並指定認證機制。可以使用默認的MongoDB身份驗證機制或現有的外部框架。 認證要求所有客戶端和服務器在連接到系統之前提供有效的憑據。 在群集部署中,為每個MongoDB伺服器啟用身份驗證。
2.配置基於角色的訪問控制
先創建用戶管理員,然後創建其他用戶。 為訪問系統的每個人員和應用程式創建一個唯一的MongoDB用戶。
創建定義一組用戶需要的確切訪問許可權的角色。 遵循最低許可權的原則。 然後創建用戶並分配他們只需要執行其操作所需的角色。用戶可以是個人或客戶端應用程式。
3.加密通信
配置MongoDB為所有傳入和傳出連接使用TLS/SSL。 使用TLS/SSL加密MongoDB部署的mongod和mongos組件之間以及所有應用程式和MongoDB之間的通信。
4.加密和保護數據
從MongoDB Enterprise 3.2開始,WiredTiger存儲引擎的本機加密在Rest中可以配置為加密存儲層中的數據。
如果您沒有使用WiredTiger的加密功能,則應使用檔系統,設備或物理加密在每臺主機上對MongoDB數據進行加密。 使用檔系統許可權保護MongoDB數據。MongoDB數據包括數據檔,配置檔,審核日誌和密鑰檔。
5.限制網路曝光
確保MongoDB在受信任的網路環境中運行,並限制MongoDB實例監聽傳入連接的介面。 只允許受信任的客戶端訪問MongoDB實例可用的網路介面和端口。
6.審計系統活動
跟蹤資料庫配置和數據的訪問和更改。 MongoDB Enterprise包括一個系統審核工具,可以在MongoDB實例上記錄系統事件(例如用戶操作,連接事件)。 這些審核記錄允許進行法證分析,並允許管理員驗證正確的控制。
7.使用專用用戶運行MongoDB
使用專用的操作系統用戶帳戶運行MongoDB進程。 確保帳戶具有訪問數據但沒有不必要許可權的許可權而導致的安全問題。
8.使用安全配置選項運行MongoDB
MongoDB支持執行某些伺服器端操作的JavaScript代碼:mapReduce
,group
和$where
。 如果不使用這些操作,請使用命令行上的--noscripting
選項禁用伺服器端腳本。
在生產部署中僅使用MongoDB線路協議。 不啟用以下功能,所有這些都啟用了Web伺服器介面:net.http.enabled
,net.http.JSONPEnabled
和net.http.RESTInterfaceEnabled
。保持這些禁用,除非向後相容性要求。
注:自 MongoDB3.2 版本以來已棄用:MongoDB的HTTP介面
保持輸入驗證有效。 MongoDB默認通過wireObjectCheck
設置啟用輸入驗證。 這確保了mongod實例存儲的所有文檔都是有效的BSON。
9.請求安全技術實施指南(如適用)
“安全技術實施指南”(STIG)載有美國國防部內部署的安全準則。 MongoDB Inc.根據要求提供其STIG,用於需要的情況。 請索取副本以獲取更多資訊。