共計 7307 個字符,預計需要花費 19 分鐘才能閱讀完成。
本文丸趣 TV 小編為大家詳細介紹“MongoDB 如何驗證相關參數”,內容詳細,步驟清晰,細節處理妥當,希望這篇“MongoDB 如何驗證相關參數”文章能幫助大家解決疑惑,下面跟著丸趣 TV 小編的思路慢慢深入,一起來學習新知識吧。
一、驗證參數 1.authenticationMechanisms
從 4.0 版本開始,移除了廢除的 MONGODB-CR 密碼驗證機制
作用:指定密碼驗證機制,只有該參數列表里有的密碼驗證機制才能夠被使用。
** 默認值:**MONGODB-X509,SCRAM-SHA-256 和 SCRAM-SHA-1
MONGODB-X509:用于 TLS/SSL 證書身份驗證
SCRAM-SHA-256:使用 SHA-256 哈希函數加密,并且需要將 featureCompatibilityVersion 設置為 4 才可以使用
SCRAM-SHA-1:使用 SHA-1 哈希函數加密,默認加密方式。
可用對象:mongod 和 mongos
注意:只能在數據庫啟動指定該參數
mongod –setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 –auth
2.clusterAuthMode
作用:集群驗證模式,支持 sendX509 和 x509。在集群滾動升級時,設置為 x509 用于集群成員之間的驗證,可以大大減少停機時間。
默認:undefined,未指定
可用對象:mongod 和 mongos
語法:
db.adminCommand( { setParameter: 1, clusterAuthMode: sendX509 } )
更詳細信息,請查看官方文檔:https://docs.mongodb.com/manual/tutorial/configure-ssl/
3.enableLocalhostAuthBypass
作用:啟用本機無密碼登錄數據庫,也就是可以通過本機無密碼登錄數據庫。禁用則設置為 0 或 false。一般用在新裝的數據庫上創建第一個管理員用戶。一旦創建了管理員,建議關閉該參數。
默認:啟用(true 或 1)
可用對象:mongod 和 mongos
語法:
mongod --setParameter enableLocalhostAuthBypass=true
注意:無法在命令行修改改參數,只能在配置文件中指定?;蛘邌訒r通過 mongod –setParameter 方式修改。
更詳細信息,請查看官方文檔:https://docs.mongodb.com/manual/core/security-users/#localhost-exception
4.KeysRotationIntervalSec
從 3.6 版本開始引入的該參數
作用:指定在轉到下一個簽名鍵之前 HMAC 簽名鍵有效的秒數。此參數主要用于方便身份驗證測試。
默認:7776000 秒(90 天)
語法:
mongod --setParameter KeysRotationIntervalSec=10000
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
5.ldapUserCacheInvalidationInterval
作用:使用 LDAP 驗證方式來部署 MongoDB.
mongod 實例在外部用戶緩存刷新之間等待的時間間隔(以秒為單位)。在 MongoDB 刷新外部用戶緩存之后,當經過 LDAP 授權的用戶下一次發出操作時,MongoDB 重新從 LDAP 服務器獲取授權數據。
增加該值會增加 MongoDB 和 LDAP 服務器不同步的時間,但會減少 LDAP 服務器上的負載。相反,減少指定的值會減少 MongoDB 和 LDAP 服務器不同步的時間,同時增加 LDAP 服務器上的負載。
可用對象:mongod
默認:30 秒
更詳細信息,請查看官方文檔:https://docs.mongodb.com/manual/core/security-ldap-external/#security-ldap-external
6.ldapUseConnectionPool
從 4.0.9 版本開始引入該參數
作用:指定當連接 LDAP 服務器時驗證時是否使用連接池。
默認:
4.2 版本開始:
Windows 平臺默認值:true
MongoDB 企業版二進制鏈接到 libldap_r 的 Linux 平臺默認:true
MongoDB 企業版二進制鏈接到 libldap 的 Linux 平臺默認:false
4.0.9 到 4.2 版本默認:false
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
7.ldapConnectionPoolUseLatencyForHostPriority
4.2.1 和 4.0.13 版本引入該參數
作用:用于確定 LDAP 連接池是否應該使用 LDAP 服務器的延遲來確定連接順序(從延遲最低到延遲最高)。
默認:true
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
8.ldapConnectionPoolMinimumConnectionsPerHost
4.2.1 和 4.0.13 版本引入該參數
作用:每個 LDAP 服務器保持打開連接得最小數量。
默認:1
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
9.ldapConnectionPoolMaximumConnectionsPerHost
4.2.1 和 4.0.13 版本引入該參數
作用:每個 LDAP 服務器保持打開連接得最大數量。
默認:2,在 4.4 版本之前默認值為:unset
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
10.ldapConnectionPoolHostRefreshIntervalMillis
4.2.1 和 4.0.13 版本引入該參數
作用:LDAP 連接池的運行狀況檢查之間間隔的毫秒數。
默認:60000
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
11.ldapConnectionPoolIdleHostTimeoutSecs
4.2.1 和 4.0.13 版本引入該參數
作用:連接到 LDAP 服務器的池連接在關閉前可以保持空閑的最大秒數。
默認:300
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
12.ocspEnabled
4.4 版本開始引入該參數,只對 linux 和 MacOS 平臺可用。
作用:指定是否啟用 OCSP (Online Certificate Status Protocol)
默認:true
注意:無法在命令行修改改參數,只能在配置文件中指定?;蛘邌訒r通過 mongod –setParameter ocspEnabled=false 方式修改。
13.ocspValidationRefreshPeriodSecs
4.4 版本開始引入該參數,僅對 linux 平臺可用。
作用:在刷新 OCSP 狀態之前等待的秒數。應該指定 1 或 1 以上數值
默認:-1
注意:無法在命令行修改改參數,只能在配置文件中指定?;蛘邌訒r通過 mongod –setParameter ocspValidationRefreshPeriodSecs=300 方式修改。
14.opensslCipherConfig
3.6 版本開始引入該參數,從 4.0 開始當使用本地 TLS/SSL 庫,將支持 Linux/BSD,不再支持 Windows 和 MacOS。
作用:使用 TLS/SSL 加密時,為 OpenSSL 指定密碼字符串。
默認:空
例子:
對于版本 4.2 及更高版本,最好使用 TLS 選項而不是 SSL 選項。TLS 選項具有與 SSL 選項相同的功能。
mongod --setParameter opensslCipherConfig= HIGH:!EXPORT:!aNULL@STRENGTH --tlsMode requireTLS --tlsCertificateKeyFile Certs/server.pem
對于 4.0 及之前版本:
mongod --setParameter opensslCipherConfig= HIGH:!EXPORT:!aNULL@STRENGTH --sslMode requireSSL --sslPEMKeyFile Certs/server.pem
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
15.opensslDiffieHellmanParameters
3.6 版本開始引入該參數,僅對 linux 平臺可用。
作用:指定包含 OpenSSL Diffie-Hellman 參數的 PEM 文件的路徑。通過指定 OpenSSL Diffie-Hellman 參數,可以在 TLS/SSL 加密期間支持 Ephemeral Diffie-Hellman (DHE)密碼套件。
Ephemeral Diffie-Hellman (DHE)密碼套件 (Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) 密碼套件)提供 Forward Secrecy,Forward Secrecy 密碼套件創建臨時會話密鑰,該密鑰由服務器的私鑰保護,但從不傳輸。這確保了即使服務器的私鑰被泄露,您也不能使用泄露的密鑰解密過去的會話。
默認:空
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
16.saslauthdPath
只用于 MongoDB 企業版(除了 Windows 的 MongoDB 企業版)。
作用:指定 saslauthd 實例用于代理身份驗證的 Unix Domain Socket 的路徑。
可用對象:mongod 和 mongos
默認:空
17.saslHostName
只用于 MongoDB 企業版
作用:為了配置 SASL 和 Kerberos 身份驗證,saslHostName 覆蓋了 MongoDB 的默認主機名檢測。
除了配置 SASL 和 Kerberos 之外,saslHostName 不會影響 mongod 或 mongos 實例的主機名。
可用對象:mongod 和 mongos
默認:空
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
18.saslServiceName
只用于 MongoDB 企業版
作用:允許用戶在每個實例的基礎上覆蓋 Kerberos 主體名的默認 Kerberos 服務名組件。
默認:mongodb
可用對象:mongod 和 mongos
注意:無法在命令行修改改參數,只能在啟動時通過 mongod –setParameter 方式修改。
19.scramIterationCount[有用]
作用:更改所有新的 SCRAM-SHA- 1 密碼使用的哈希迭代次數。更多的迭代增加了客戶端向 MongoDB 進行身份驗證所需的時間,但也降低了密碼被暴力的可能性。默認值對于大多數常見用例和需求來說已經足夠了。
默認:10000
可用對象:mongod 和 mongos
注意:修改該參數不會對之前密碼產生影響,值必須大于 5000??稍诿钚泻?mongod 中修改。
mongod –setParameter scramIterationCount=12000
db.adminCommand({ setParameter: 1, scramIterationCount: 12000} )
20.scramSHA256IterationCount
4.0 版本引入該參數
作用:和 scramIterationCount 參數作用差不多,只是針對的是 SCRAM-SHA-256 新密碼
默認:15000
可用對象:mongod 和 mongos
21.sslMode
配置 ssl,可配置為 preferSSL 或 requireSSL
可用對象:mongod 和 mongos
db.adminCommand({ setParameter: 1, sslMode:“preferSSL”} )
22.tslMode
4.2 版本引入該參數
配置 tls,可配置為 preferTLS 和 requireTLS
可用對象:mongod 和 mongos
db.adminCommand({ setParameter: 1, tlsMode:“preferTLS”} )
23.tlsOCSPStaplingTimeoutSecs
4.4 版本引入,只對 Linux 可用
作用:mongod/mongos 實例等待接收其證書的 OCSP 狀態響應的最大秒數。指定值應該 =1,如果未設置則使用 tlsOCSPVerifyTimeoutSecs 參數的值。
默認:-1
可用對象:mongod 和 mongos
可在配置文件中或 mongod 命令行中指定,mongod –setParameter tlsOCSPStaplingTimeoutSecs=20
24.tlsOCSPVerifyTimeoutSecs
4.4 版本引入,對 Linux/Windows 可用
作用:mongod/mongos 實例等待接收其證書的 OCSP 狀態響應的最大秒數。指定值應該 =1。
默認:5
可用對象:mongod 和 mongos
25.tlsWithholdClientCertificate
4.2 版本引入
作用:當未設置–tlsClusterFile 時,可以通過 –tlsClusterFile 選項或 –tlsCertificateKeyFile 選項為 mongod 設置 TLS 證書。如果設置了 TLS 證書,則默認情況下,實例在與部署中的其他 mongod 實例或 mongos 實例啟動集群內通信時,實例會發送證書。將 tlsWithholdClientCertificate 設置為 1 或 true 可以指示實例在這些通信期間不發送其 TLS 證書。在部署的所有成員上將此選項與 –tlsAllowConnectionsWithoutCertificates 一起使用(以允許沒有證書的入站連接)。tlsWithholdClientCertificate 與 –clusterAuthMode x509 互斥。
默認:false
可用對象:mongod 和 mongos
26.tlsX509ClusterAuthDNOverride
4.2 版本引入
作用:實例還可以用來標識部署成員的備用專有名稱(Distinguished Name DN)。
對于將 x.509 證書用于 clusterAuthMode 的 MongoDB 部署,在群集內部通信期間,部署成員使用 x.509 證書(如果指定,則使用 net.tls.clusterFile 和 net.tls.certificateKeyFile)相互標識。對于同一部署的成員,其證書中的 DN 必須具有相同的組織屬性(O),組織單位屬性(OU)和域組件(DC)。
如果為成員設置了 tlsX509ClusterAuthDNOverride,則該成員在比較顯示的證書的 DN 成分(O,OU 和 DC)時也可以使用替代值。那就是成員對照其 net.tls.clusterFile / net.tls.certificateKeyFile 檢查所提供的證書。如果 DN 不匹配,則成員將根據 tlsX509ClusterAuthDNOverride 值檢查顯示的證書。
默認:false
可用對象:mongod 和 mongos
如果設置,則必須在所有成員實例上設置。
27.tlsX509ExpirationWarningThresholdDays
4.4 版本引入
作用:從 MongoDB 4.4 開始,如果提供的 x.509 證書在 mongod / mongos 系統時鐘的 30 天內過期,則 mongod / mongos 會在連接時記錄警告。使用 tlsX509ExpirationWarningThresholdDays 參數來控制證書到期警告閾值:最小可設置為 0
增加參數值以在證書到期日期之前觸發警告。
減小參數值可在接近證書到期日期時觸發警告。
將參數設置為 0,禁用警告。
默認:30
可用對象:mongod 和 mongos
mongod –setParameter / mongos –setParameter
setParameter
28.sslWithholdClientCertificate
4.2 開始廢棄該參數,由 tlsWithholdClientCertificate 參數代替
默認:false
可用對象:mongod 和 mongos
29.userCacheInvalidationIntervalSecs[有用]
作用:在 mongos 實例上,指定 mongos 實例檢查以確定用戶對象的內存高速緩存中是否有陳舊數據的間隔(以秒為單位),如果是,則清除該高速緩存。如果用戶對象沒有更改,mongos 將不會清除緩存。
此參數的最小值為 1 秒,最大值為 86400 秒(24 小時)。
默認:30
可用對象:mongos
30.authFailedDelayMs[有用]
3.4 版本引入,僅企業版中支持
作用:通知客戶端認證嘗試失敗之前要等待的毫秒數。此參數的范圍可以是 0 到 5000(含)。
設置此參數會使對數據庫的暴力登錄攻擊更加耗時。但是,等待 MongoDB 服務器響應的客戶端仍會消耗服務器資源,如果服務器同時拒絕訪問許多其他客戶端,則這可能對業務正常登錄產生不利影響。
默認:0
可用對象:mongod 和 mongos
31.allowRolesFromX509Certificates
從 MongoDB 4.0.11 開始引入 (3.6.14 和 3.4.22)
作用:允許或不允許從客戶端 x.509 證書中檢索授權角色。
默認:true
可用對象:mongod 和 mongos
配置文件中配置,或 mongod 命令行中配置
讀到這里,這篇“MongoDB 如何驗證相關參數”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注丸趣 TV 行業資訊頻道。