Internal Authentication

在本页面

您可以验证replica setssharded clusters的成员。对于成员的内部身份验证,MongoDB 可以使用密钥文件或x.509证书。

Note

启用内部身份验证也会启用client authorization

Keyfiles

密钥文件使用SCRAM质询和响应身份验证机制。密钥文件的内容用作成员的共享密码。密钥的长度必须在 6 到 1024 个字符之间,并且只能包含 base64 集中的字符。

MongoDB 去除空格字符(例如x0dx09x20)以方便跨平台使用。结果,以下操作产生相同的密钥:

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 系统上,不检查密钥文件权限。

在彼此连接的所有mongodmongos实例上,密钥文件的内容必须相同。您必须将密钥文件存储在副本集或分片群集的每个成员上。

要指定密钥文件,请使用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包含OOU的匹配规范以及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 配置之外,对于副本集或分片群集的每个成员,还应包括:

会员证书和 PEMKeyFile

要为 Client 证书认证配置 MongoDB,mongodmongos指定PEMKeyFile以通过配置文件中的net.ssl.PEMKeyFile设置或--sslPEMKeyFile命令行选项向 Client 端证明其身份。

如果未为内部成员身份验证指定clusterFile证书,则 MongoDB 将尝试使用PEMKeyFile证书进行成员身份验证。为了将PEMKeyFile证书用于内部身份验证以及 Client 端身份验证,则PEMKeyFile证书必须:

  • 省略extendedKeyUsage

  • 指定extendedKeyUsage值,除了serverAuth还包括clientAuth

有关 x.509 内部身份验证的示例,请参见使用 x.509 证书进行会员身份验证

要将密钥文件内部身份验证升级到 x.509 内部身份验证,请参阅从密钥文件身份验证升级到 x.509 身份验证