温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MongoDB如何验证相关参数

发布时间:2022-10-21 14:43:28 来源:亿速云 阅读:228 作者:iii 栏目:MongoDB数据库

本文小编为大家详细介绍“MongoDB如何验证相关参数”,内容详细,步骤清晰,细节处理妥当,希望这篇“MongoDB如何验证相关参数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、验证参数

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命令行中配置

读到这里,这篇“MongoDB如何验证相关参数”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI