MongoDB如何验证相关参数

寻技术 MongoDB 2023年08月21日 132

一、验证参数

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

作用: 集群验证模式,支持sendX509x509。在集群滚动升级时,设置为x509用于集群成员之间的验证,可以大大减少停机时间。

默认: undefined,未指定

可用对象: mongod和mongos

语法:

db.adminCommand( { setParameter: 1, clusterAuthMode: "sendX509" } )

更详细信息,请查看官方文档:https://docs.mongodb.com/manual/tutorial/configure-ssl/

3.enableLocalhostAuthBypass

作用: 启用本机无密码登录数据库,也就是可以通过本机无密码登录数据库。禁用则设置为0false。一般用在新装的数据库上创建第一个管理员用户。一旦创建了管理员,建议关闭该参数。

默认:启用(true1)

可用对象: 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版本开始引入该参数,只对linuxMacOS平台可用。

作用: 指定是否启用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 SecrecyForward 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,可配置为 preferSSLrequireSSL

可用对象: mongod和mongos

db.adminCommand( { setParameter: 1, sslMode: “preferSSL” } )

22.tslMode

4.2版本引入该参数

配置tls,可配置为preferTLSrequireTLS

可用对象: 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命令行中配置

关闭

用微信“扫一扫”