共计 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
注意:无法在命令行修改改参数,只能在配置文件中指定。或者启动时通过 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
注意:无法在命令行修改改参数,只能在配置文件中指定。或者启动时通过 mongod –setParameter ocspEnabled=false 方式修改。
13.ocspValidationRefreshPeriodSecs
4.4 版本开始引入该参数,仅对 linux 平台可用。
作用:在刷新 OCSP 状态之前等待的秒数。应该指定 1 或 1 以上数值
默认:-1
注意:无法在命令行修改改参数,只能在配置文件中指定。或者启动时通过 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 行业资讯频道。