本文介紹一些應實施的安全措施,以保護您的MongoDB安全。
啟用存取控制並指定認證機制。可以使用預設的MongoDB身份驗證機制或現有的外部框架。 認證要求所有用戶端和伺服器在連線到系統之前提供有效的憑據。 在群集部署中,為每個MongoDB伺服器啟用身份驗證。
先建立使用者管理員,然後建立其他使用者。 為存取系統的每個人員和應用程式建立一個唯一的MongoDB使用者。
建立定義一組使用者需要的確切存取許可權的角色。 遵循最低許可權的原則。 然後建立使用者並分配他們只需要執行其操作所需的角色。使用者可以是個人或用戶端應用程式。
組態MongoDB為所有傳入和傳出連線使用TLS/SSL。 使用TLS/SSL加密MongoDB部署的mongod和mongos元件之間以及所有應用程式和MongoDB之間的通訊。
從MongoDB Enterprise 3.2開始,WiredTiger儲存引擎的本機加密在Rest中可以組態為加密儲存層中的資料。
如果您沒有使用WiredTiger的加密功能,則應使用檔案系統,裝置或物理加密在每台主機上對MongoDB資料進行加密。 使用檔案系統許可權保護MongoDB資料。MongoDB資料包括資料檔案,組態檔案,稽核紀錄檔和金鑰檔案。
確保MongoDB在受信任的網路環境中執行,並限制MongoDB範例監聽傳入連線的介面。 只允許受信任的用戶端存取MongoDB範例可用的網路介面和埠。
跟蹤資料庫組態和資料的存取和更改。 MongoDB Enterprise包括一個系統稽核工具,可以在MongoDB範例上記錄系統事件(例如使用者操作,連線事件)。 這些稽核記錄允許進行法證分析,並允許管理員驗證正確的控制。
使用專用的作業系統使用者帳戶執行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。
「安全技術實施指南」(STIG)載有美國國防部內部署的安全準則。 MongoDB Inc.根據要求提供其STIG,用於需要的情況。 請索取副本以獲取更多資訊。