On this page
Internal Authentication
在本页面
您可以验证replica sets和sharded clusters的成员。对于成员的内部身份验证,MongoDB 可以使用密钥文件或x.509证书。
Note
启用内部身份验证也会启用client authorization。
Keyfiles
密钥文件使用SCRAM质询和响应身份验证机制。密钥文件的内容用作成员的共享密码。密钥的长度必须在 6 到 1024 个字符之间,并且只能包含 base64 集中的字符。
MongoDB 去除空格字符(例如x0d
,x09
和x20
)以方便跨平台使用。结果,以下操作产生相同的密钥:
echo -e "my secret key" > key1
echo -e "my secret key\n" > key2
echo -e "my secret key" > key3
echo -e "my\r\nsecret\r\nkey\r\n" > key4
在 UNIX 系统上,密钥文件不得具有组或世界权限。在 Windows 系统上,不检查密钥文件权限。
在彼此连接的所有mongod和mongos实例上,密钥文件的内容必须相同。您必须将密钥文件存储在副本集或分片群集的每个成员上。
要指定密钥文件,请使用security.keyFile设置或--keyFile
命令行选项。
有关密钥文件内部认证的示例,请参见在副本集中实施密钥文件访问控制。
x.509
副本集或分片群集的成员可以使用 x.509 证书进行内部身份验证,而不使用密钥文件。 MongoDB 支持用于安全 TLS/SSL 连接的 x.509 证书身份验证。
会员证书要求
用于内部身份验证以验证分片群集或副本集成员身份的成员证书必须具有以下属性:
单个证书颁发机构(CA)必须为分片群集或副本集的成员颁发所有 x.509 证书。
在成员证书的
subject
中找到的专有名称(DN
)必须为以下至少个属性指定非空值:组织(O
),组织单位(OU
)或域组件(DC
) 。组织属性(
O
),组织单位属性(OU
)和域组件(DC
)必须与其他群集成员的证书中的属性匹配。为了匹配,证书必须匹配这些属性的所有规范,甚至必须匹配这些属性的非规范。属性的 Sequences 无关紧要。
在下面的示例中,两个DN
包含O
,OU
的匹配规范以及DC
属性的非规范。
CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US
C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2
但是,以下两个DN
包含OU
属性的不匹配,因为一个包含两个OU
规范,另一个包含一个规范。
CN=host1,OU=Dept1,OU=Sales,O=MongoDB
CN=host2,OU=Dept1,O=MongoDB
- 公用名(
CN
)或主题备用名(SAN
)条目之一必须与集群的其他成员使用的服务器的主机名匹配。
例如,群集的证书可以具有以下主题:
subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US
subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US
subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US
- 如果证书包含扩展密钥用法(
extendedKeyUsage
)设置,则该值必须包含clientAuth
(“ TLS WebClient 端身份验证”)。
extendedKeyUsage = clientAuth
您还可以使用不包含扩展密钥用法(EKU)的证书。
MongoDB Configuration
要为内部身份验证指定 x.509,除了适用于您的部署的其他 TLS/SSL 配置之外,对于副本集或分片群集的每个成员,还应包括:
security.clusterAuthMode和net.ssl.clusterFile(如果使用configuration file),或者
--clusterAuthMode
和--sslClusterFile
命令行选项。
会员证书和 PEMKeyFile
要为 Client 证书认证配置 MongoDB,mongod和mongos指定PEMKeyFile
以通过配置文件中的net.ssl.PEMKeyFile设置或--sslPEMKeyFile
命令行选项向 Client 端证明其身份。
如果未为内部成员身份验证指定clusterFile证书,则 MongoDB 将尝试使用PEMKeyFile
证书进行成员身份验证。为了将PEMKeyFile
证书用于内部身份验证以及 Client 端身份验证,则PEMKeyFile
证书必须:
省略
extendedKeyUsage
或指定
extendedKeyUsage
值,除了serverAuth
还包括clientAuth
。
有关 x.509 内部身份验证的示例,请参见使用 x.509 证书进行会员身份验证。
要将密钥文件内部身份验证升级到 x.509 内部身份验证,请参阅从密钥文件身份验证升级到 x.509 身份验证。