x.509
O MongoDB suporta autenticação de certificado x.509 para autenticação de clientes e autenticação interna dos nós de conjuntos de réplicas e clusters fragmentados.
x. A autenticação do certificado 509 requer umaconexão TLS/SSL segura.
Autoridade de certificação
Para uso em produção, seu MongoDB deployment deve usar certificados válidos gerados e assinados por uma autoridade de certificação. Você ou sua organização podem gerar e manter uma autoridade de certificação independente ou usar certificados gerados por fornecedores de TLS de terceiros. Obter e gerenciar certificados está além do escopo desta documentação.
Certificados de Cliente x.509
Para autenticar em servidores, os clientes podem usar certificados x.509 em vez de nomes de usuário e senhas.
Requisitos de Certificado do Cliente
Os certificados do cliente devem ter as seguintes propriedades:
Uma única Autoridade de Certificação (CA) deve emitir os certificados para o cliente e para o servidor.
Os certificados do cliente devem conter os seguintes campos:
keyUsage = digitalSignature extendedKeyUsage = clientAuth Cada usuário único do MongoDB deve ter um certificado exclusivo.
Um cliente x. O assunto do certificado 509 , que contém o Nome Distinto (
DN
), deve ser diferente dos assuntos do membro x.509 certificados.Importante
Se o assunto de um certificado x.509 do cliente corresponder aos atributos
O
,OU
eDC
do certificado x.509 do membro (outlsX509ClusterAuthDNOverride
, se definido) exatamente, a conexão do cliente será aceita, todas as permissões serão concedidas e uma mensagem de aviso será exibida no registro.Somente certificados x509 de membros do cluster devem usar as mesmas combinações de atributos
O
,OU
eDC
.Se a implementação do MongoDB tiver
tlsX509ClusterAuthDNOverride
definido, o cliente x.509 o assunto do certificado não deve corresponder a esse valor.Se a implementação do MongoDB tiver
tlsX509ClusterAuthDNOverride
definido, o cliente x.509 o assunto do certificado também deve ser diferente desse valor.O certificado x.509 não pode expirar.
O
mongod
/mongos
registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de30
dias do horário do sistema hostmongod/mongos
. Consulte a página Avisos de expiração dos certificados x.509 para obter mais informações.
Usuário do MongoDB e $external
banco de dados
Para autenticar com um certificado de cliente, você deve primeiro adicionar o valor do subject
certificado de cliente como um usuário MongoDB. Cada x. O certificado de cliente 509 corresponde a um único usuário do MongoDB. Você não pode usar um único certificado de cliente para autenticar mais de um usuário do MongoDB .
Adicione o usuário no reconhecimento de data center do $external
. O reconhecimento de data center $external
é o reconhecimento de data center de autenticação para o usuário.
Para usar sessões de cliente e garantias de consistência causal com usuários de autenticação $external
(usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.
Aviso de inicialização do certificado de conexão TLS X509
A partir do MongoDB 5.0, mongod
e mongos
agora emitem um aviso de inicialização quando seus certificados não incluem um atributo Subject Alternative Name.
As seguintes plataformas não suportam validação de nome comum:
iOS 13 e superior
MacOS 10.15 e superior
Vá para 1,15 e superior
Os clientes que usam essas plataformas não se autenticarão no MongoDB Server que usa o certificado X.509 cujos nomes de host são especificados pelos atributos CommonName.
Certificados de Nó x.509
Para autenticação interna entre nós de clusters fragmentados e conjuntos de réplica, você pode usar x.509 certificados em vez de keyfiles, que usam o mecanismo de autenticação SCRAM .
Requisitos de certificado de membro
Os certificados de membro que você usa para verificar a associação a um cluster fragmentado ou a um conjunto de réplicas (net.tls.clusterFile
, se especificado, e net.tls.certificateKeyFile
) devem ter as seguintes propriedades:
Uma única Autoridade de Certificação (CA) deve emitir todas as x.509 certificados para os membros de um cluster fragmentado ou de um conjunto de réplicas.
O nome diferenciado (
DN
), encontrado no certificado de membrosubject
, deve especificar um valor não vazio para pelo menos um dos seguintes atributos:a Organização (
O
)a Unidade Organizacional (
OU
)o componente de domínio (
DC
)
Os atributos da Organização (
O
's), os atributos da Unidade organizacional (OU
's) e os componentes de domínio (DC
's) devem corresponder aos dos certificadosnet.tls.clusterFile
enet.tls.certificateKeyFile
para o outros membros do cluster (ou o valortlsX509ClusterAuthDNOverride
, se definido).Para corresponder, o certificado deve corresponder a todas as especificações desses atributos, mesmo a não especificação desses atributos. A ordem dos atributos não importa.
No exemplo a seguir, os dois
DN
contêm especificações correspondentes paraO
,OU
, bem como a não especificação do atributoDC
.CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2 No entanto, os dois
DN
a seguir contêm uma incompatibilidade para o atributoOU
, pois um contém duas especificaçõesOU
e o outro, apenas uma especificação.CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB Em sistemas de vários clusters, cada cluster deve usar um certificado de membro X.509 diferente. Cada certificado deve ter valores exclusivos nos campos
O
,OU
eDC
Campos de nome distinto (DN).Se dois clusters tiverem certificados com os mesmos valores de DN, um servidor comprometido em um cluster poderá se autenticar como membro do outro.
As entradas Nome comum (
CN
) ou uma das entradas nome alternativo do assunto (SAN
) devem corresponder ao servidor para outros membros do cluster. A partir do MongoDB 4.2, ao compararSAN
s, o MongoDB pode comparar nomes DNS ou endereços IP. Nas versões anteriores, o MongoDB compara apenas os nomes DNS.Por exemplo, os certificados de um cluster podem ter os seguintes assuntos:
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 Se o certificado utilizado como
certificateKeyFile
incluirextendedKeyUsage
, o valor deverá incluirclientAuth
("Autenticação de cliente Web TLS") eserverAuth
("Autenticação de servidor Web TLS").extendedKeyUsage = clientAuth, serverAuth Se o certificado utilizado como
clusterFile
incluirextendedKeyUsage
, o valor deverá incluirclientAuth
.extendedKeyUsage = clientAuth O certificado x.509 não pode expirar.
O
mongod
/mongos
registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de30
dias do horário do sistema hostmongod/mongos
. Consulte a página Avisos de expiração dos certificados x.509 para obter mais informações.
Configuração do MongoDB para Autenticação de Membros
Você pode usar TLS para autenticação interna entre cada membro do seu conjunto de réplicas (cada instância mongod
) ou cluster fragmentado (cada instância mongod
e mongos
).
Para usar TLS para autenticação interna, use as seguintes configurações:
security.clusterAuthMode
ou--clusterAuthMode
definido comox509
As instâncias mongod
e mongos
usam o arquivo de chave de certificado para provar sua identidade aos clientes, mas ele também pode ser usado para autenticação de associação. Se você não especificar um arquivo de cluster, os nós utilizarão seus arquivos de chave de certificado para autenticação de associação. Especifique o arquivo de chave do certificado com net.tls.certificateKeyFile
ou --tlsCertificateKeyFile
.
Para usar o certificate key file
para autenticação de cliente e autenticação de associação, o certificado deve:
Omitir
extendedKeyUsage
ouEspecificar
extendedKeyUsage = serverAuth, clientAuth