On this page本页内容
You can require that members of replica sets and sharded clusters authenticate to each other. 您可以要求副本集和分片集群的成员彼此进行身份验证。For the internal authentication of the members, MongoDB can use either keyfiles or x.509 certificates.对于成员的内部身份验证,MongoDB可以使用密钥文件或x.509证书。
The selected method is used for all internal communication. 所选方法用于所有内部通信。For example, when a client authenticates to a 例如,当客户端使用支持的身份验证机制之一对mongos
using one of the supported authentication mechanisms, the mongos
then uses the configured internal authentication method to connect to the required mongod
processes.mongos
进行身份验证时,mongos
将使用配置的内部身份验证方法连接到所需的mongod
进程。
Enabling internal authentication also enables client authorization.启用内部身份验证还可以启用客户端授权。
Keyfiles use SCRAM challenge and response authentication mechanism where the keyfiles contain the shared password for the members.密钥文件使用SCRAM质询和响应身份验证机制,其中密钥文件包含成员的共享密码。
A key's length must be between 6 and 1024 characters and may only contain characters in the base64 set. 密钥的长度必须介于6到1024个字符之间,并且只能包含base64集合中的字符。MongoDB strips whitespace characters (e.g. MongoDB去除空白字符(例如x0d
, x09
, and x20
) for cross-platform convenience. x0d
、x09
和x20
),以便于跨平台使用。As a result, the following operations produce identical keys:因此,以下操作将生成相同的密钥:
echo -e "mysecretkey" > key1 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
Starting in MongoDB 4.2, keyfiles for internal membership authentication use YAML format to allow for multiple keys in a keyfile. The YAML format accepts content of:从MongoDB 4.2开始,用于内部成员身份验证的密钥文件使用YAML格式,以允许在密钥文件中使用多个密钥。YAML格式接受以下内容:
The YAML format is compatible with the existing single-key keyfiles that use the text file format.YAML格式与使用文本文件格式的现有单键密钥文件兼容。
For example,例如
If the keyfile contains a single key, you can specify the key string with or without quotes
my old secret key1
You can specify multiple key strings [1] where each key string is enclosed in quotes:
'my old secret key1' 'my new secret key2'
You can specify multiple key strings [1] as a sequence of key strings (optionally enclosed in quotes):
- my old secret key1 - my new secret key2
The ability to specify multiple keys in a file allows for the rolling upgrade of the keys without downtime. 在一个文件中指定多个密钥的能力允许在不停机的情况下滚动升级密钥。See Rotate Keys for Replica Sets and Rotate Keys for Sharded Clusters.请参见复制集的旋转关键点和分片群集的旋转关键帧。
All 部署的所有mongod
and mongos
instances of a deployment must share at least one common key.mongod
和mongos
实例必须至少共享一个公共密钥。
On UNIX systems, the keyfile must not have group or world permissions. 在UNIX系统上,密钥文件不得具有组或世界权限。On Windows systems, keyfile permissions are not checked.在Windows系统上,不检查密钥文件权限。
You must store the keyfile on each server hosting the member of the replica set or sharded clusters.您必须将密钥文件存储在承载副本集或分片集群成员的每个服务器上。
[1] | (1, 2) For MongoDB's encrypted storage engine, the keyfile used for local key management can only contain a single key . |
To specify the keyfile, use the 要指定密钥文件,请使用security.keyFile
setting or --keyFile
command line option.security.keyFile
设置或--keyFile
命令行选项。
For an example of keyfile internal authentication, see Update Replica Set to Keyfile Authentication.有关密钥文件内部身份验证的示例,请参阅将副本集更新为密钥文件身份验证。
Members of a replica set or sharded cluster can use x.509 certificates for internal authentication instead of using keyfiles. 副本集或分片集群的成员可以使用x.509证书进行内部身份验证,而不是使用密钥文件。MongoDB supports x.509 certificate authentication for use with a secure TLS/SSL connection.MongoDB支持用于安全TLS/SSL连接的x.509证书身份验证。
Starting in version 4.0, MongoDB disables support for TLS 1.0 encryption on systems where TLS 1.1+ is available. 从版本4.0开始,MongoDB在TLS 1.1+可用的系统上禁用对TLS 1.0加密的支持。For more details, see Disable TLS 1.0.有关详细信息,请参阅禁用TLS 1.0。
Use member certificates to verify membership to a sharded cluster or a replica set. 使用成员证书验证分片群集或副本集的成员身份。Member certificates are stored in net.tls.clusterFile
and net.tls.certificateKeyFile
. Member certificate requirements:会员证书要求:
The x.509 certificate must not be expired.x.509证书不得过期。
Changed in version 4.4.在版本4.4中更改。
mongod
/ mongos
logs a warning on connection if the presented x.509 certificate expires within 30
days of the mongod/mongos
host system time. The Distinguished Name (DN
), found in the member certificate's subject
, must specify a non-empty value for at least one of the following attributes:
O
)OU
)DC
)Each cluster member certificate must have identical O
s, OU
s, and DC
s in their net.tls.clusterFile
and net.tls.certificateKeyFile
certificates. This also applies to the tlsX509ClusterAuthDNOverride
value, if set. Attribute order doesn't matter.
Here's an example. The two DN
s below have matching specifications for O
and OU
, and DC
is not specified.
CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2
The following example is incorrect, because the DN
s don't match. One DN
has two OU
specifications and the other has only one OU
specification.
CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB
Either the Common Name (CN
) or one of the Subject Alternative Name (SAN
) entries must match the server hostname for other cluster members. Starting in MongoDB 4.2, when comparing SAN
s, MongoDB can compare either DNS names or IP addresses. In previous versions, MongoDB only compares DNS names.
For example, the certificates for a cluster could have the following subject
s:
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
If the certificate includes the Extended Key Usage (如果证书包含扩展密钥使用(extendedKeyUsage
) setting, the value must include clientAuth
("TLS Web Client Authentication").extendedKeyUsage
)设置,则该值必须包括clientAuth
(“TLS Web客户端身份验证”)。
extendedKeyUsage = clientAuth
You can use TLS for internal authentication between each member of your replica set (each mongod
instance) or sharded cluster (each mongod
and mongos
instance).
To use TLS for internal authentication, use the following settings:
security.clusterAuthMode
or --clusterAuthMode
set to x509
net.tls.clusterFile
or --tlsClusterFile
(available starting in MongoDB 4.2)mongod
and mongos
instances use their certificate key files to prove their identity to clients, but certificate key files can also be used for membership authentication. If you do not specify a cluster file, members use their certificate key files for membership authentication. Specify the certificate key file with net.tls.certificateKeyFile
or --tlsCertificateKeyFile
(available starting in MongoDB 4.2).
To use the certificate key file for both client authentication and membership authentication, the certificate must either:要将证书密钥文件用于客户端身份验证和成员身份验证,证书必须:
extendedKeyUsage
orextendedKeyUsage = serverAuth, clientAuth
For an example of x.509 internal authentication, see Use x.509 Certificate for Membership Authentication.有关x.509内部身份验证的示例,请参阅使用x.509Certificate进行成员身份验证。
To upgrade from keyfile internal authentication to x.509 internal authentication, see Upgrade from Keyfile Authentication to x.509 Authentication.要从keyfile内部身份验证升级到x.509内部身份验证,请参阅从keyfile身份验证升级至x.509Authentication。