一、验证参数
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命令行中配置