MongoDB Enterprise permite solicitações de autenticação de proxy para um serviço Lightweight Directory Access Protocol (LDAP).
O MongoDB suporta conexão simples e SASL com servidores LDAP:
Via  | Descrição  | 
|---|---|
Bibliotecas do sistema operacional  | O MongoDB permite a ligação a um servidor LDAP por meio de bibliotecas de sistemas operacionais. Isso permite que servidores MongoDB no Linux e Windows usem um servidor LDAP para autenticação. Nas versões anteriores, o MongoDB no Microsoft Windows não conseguia se conectar a servidores LDAP.  | 
  | Os servidores MongoDB no Linux suportam a ligação a um servidor LDAP através do daemon  Não disponível para MongoDB no Windows.  | 
Considerações
Uma descrição completa do LDAP está além do escopo desta documentação. Esta página pressupõe conhecimento prévio do LDAP.
Esta documentação descreve apenas a autenticação LDAP do MongoDB e não substitui outros recursos no LDAP. Recomendamos que você se familiarize completamente com o LDAP e com o assunto relacionado a ele antes de configurar a autenticação LDAP.
O MongoDB pode fornecer professional services para a configuração ideal da autenticação LDAP para sua implantação MongoDB.
Pool de Conexões
Ao se conectar ao servidor LDAP para autenticação/autorização, o MongoDB, por padrão:
Usa pool de conexões se executado:
no Windows ou
no Linux, onde os binários MongoDB Enterprise estão vinculados a libldap_r.
Não usa pool de conexões se executado:
no Linux, onde os binários MongoDB Enterprise estão vinculados ao libldap.
Para alterar o comportamento do pool de conexões , atualize o parâmetro ldapUseConnectionPool .
saslauthd e permissões de diretório
Importante
O diretório pai do arquivo de soquete de domínio Unix do saslauthd especificado para security.sasl.saslauthdSocketPath ou --setParameter saslauthdPath deve conceder permissões de leitura e execução (r-x) para:
O mongod ou mongos não pode autenticar com sucesso via saslauthd sem a permissão especificada no diretório saslauthd e seu conteúdo.
libldap e a libldap_r
Para binários do MongoDB 4.2 Enterprise vinculados ao libldap (como ao executar no RHEL), o acesso ao libldap é sincronizado, incorrendo em alguns custos de desempenho/latência.
Para binários do MongoDB 4.2 Enterprise vinculados ao libldap_r, não há alteração no comportamento de versões anteriores do MongoDB.
Gerenciamento de usuários LDAP no servidor MongoDB
Ao usar a autenticação LDAP sem a autorização LDAP, o gerenciamento de usuários exige o gerenciamento de usuários no servidor LDAP e no servidor MongoDB . Para cada usuário autenticado via LDAP, o MongoDB requer um usuário no banco de banco de dados $external cujo nome corresponda exatamente ao nome de usuário da autenticação. Alterações em um usuário no servidor LDAP podem exigir alterações no usuário MongoDB $external correspondente.
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.
Exemplo
Um usuário autentica como sam@dba.example.com. O servidor MongoDB se liga ao servidor LDAP e autentica o usuário, respeitando qualquer username transformations. Na autenticação bem-sucedida, o servidor MongoDB então verifica o banco de dados do $external para um usuário sam@dba.example.com e concede ao usuário autenticado os papéis e privilégios associados a este usuário.
Para gerenciar usuários no servidor MongoDB, você deve se autenticar como um usuário LDAP cujo usuário MongoDB $external correspondente tenha privilégios administrativos de usuário no banco de dados $external, como os fornecidos pelo userAdmin.
Importante
Se nenhum usuário $external tiver privilégios administrativos de usuário no banco de dados $external, não será possível executar o gerenciamento de usuários para autenticação LDAP. Esse cenário pode ocorrer se você configurar usuários antes de ativar a autenticação LDAP, mas não criar os administradores de usuários apropriados.
Gerenciamento de usuários não LDAP existentes
Se houver usuários existentes que não estejam no banco de dados $external, você deverá atender aos seguintes requisitos para cada usuário a fim de garantir o acesso contínuo:
O usuário tem um objeto de usuário correspondente no servidor LDAP
O usuário existe no banco de dados do
$externalcom privilégios e papéis equivalentes
Se quiser continuar permitindo o acesso de usuários que não estejam no banco de dados $external, será necessário configurar setParameter authenticationMechanisms para incluir SCRAM-SHA-1 e/ou SCRAM-SHA-256, conforme apropriado. Os usuários devem então especificar --authenticationMechanism SCRAM-SHA-1 ou SCRAM-SHA-256 ao autenticar.
Implantação da autenticação LDAP em um conjunto de réplicas
Para conjuntos de réplicas, configure a autenticação LDAP em membros secundários e árbitros antes de configurar o principal. Isso também se aplica a conjuntos de réplicas de shards ou conjuntos de réplicas de servidores de configuração. Configure um membro do conjunto de réplicas por vez para manter a maioria dos membros para disponibilidade de gravação.
Implementação da autenticação LDAP em um cluster fragmentado
Em clusters sharded, é necessário configurar a autenticação LDAP nos servidores de configuração e em cada mongos para usuários no nível do cluster. Opcionalmente, é possível configurar a autorização LDAP em cada shard para usuários locais do shard.
Autenticação LDAP por meio das bibliotecas LDAP do sistema operacional
O processo de autenticação LDAP utilizando bibliotecas de sistemas operacionais é resumida abaixo:
Um cliente se autentica no MongoDB, fornecendo as credenciais do usuário.
Se o nome de usuário exigir o mapeamento para um DN LDAP antes da vinculação ao servidor LDAP, o MongoDB poderá aplicar transformações com base na configuração de
security.ldap.userToDNMappingconfigurada.O MongoDB se vincula a um servidor LDAP especificado em
security.ldap.serversusando o nome de usuário fornecido ou, se uma transformação foi aplicada, o nome de usuário transformado.O MongoDB usa vinculação simples por padrão, mas também pode usar
saslvinculação se configurado emsecurity.ldap.bind.methodesecurity.ldap.bind.saslMechanisms.Se uma transformação exigir query do servidor LDAP ou se o servidor LDAP não permitir vínculos anônimos, o MongoDB utilizará o nome de usuário e senha especificados no
security.ldap.bind.queryUseresecurity.ldap.bind.queryPasswordpara vincular ao servidor LDAP antes de tentar autenticar as credenciais de usuário fornecidas.O servidor LDAP retorna o resultado da tentativa de vinculação ao MongoDB. Em caso de sucesso, o MongoDB tenta autorizar o usuário.
O servidor MongoDB tenta mapear o nome de usuário para um usuário no banco de dados do
$external, atribuindo ao usuário quaisquer papéis ou privilégios associados a um usuário correspondente. Se o MongoDB não conseguir encontrar um usuário correspondente, a autenticação falhará.O cliente pode executar as ações para as quais o MongoDB concedeu roles ou privilégios ao usuário autenticado.
Para usar o LDAP para autenticação por meio de bibliotecas do sistema operacional, especifique as seguintes configurações como parte do arquivo de configuração mongod ou mongos:
Opção  | Descrição  | Obrigatório  | 
|---|---|---|
Lista separada por vírgulas de servidores LDAP entre aspas no formato  Você pode prefixar servidores LDAP com  Se sua connection string especificar  Se a connection string especificar   | sim  | |
Utilizado para especificar o método que o  Padrão é   | NÃO, a menos que esteja usando o   | |
NÃO, a menos que você defina   | ||
A entidade LDAP, identificada por seu nome distinto (DN) ou nome SASL, com o qual o servidor MongoDB autentica, ou se liga, ao se conectar a um servidor LDAP. Use com  O usuário especificado deve ter os privilégios apropriados para executar queries no servidor LDAP.  | NÃO, a menos que especifique uma query como parte de uma transformação do   | |
A senha usada para autenticar em um servidor LDAP ao usar   | NÃO, a menos que especifique   | |
As implantações do Windows MongoDB podem utilizar as credenciais do sistema operacional em vez do   | NÃO, a menos que substitua   | |
Os clientes podem autenticar utilizando um nome de usuário cujo formato é incompatível com o formato esperado pelo  
 Se especificar uma transformação do   | NÃO, exceto se o cliente se autenticar com nomes de usuário que necessitem de transformação.  | 
Autenticação LDAP via saslauthd
Aviso
O MongoDB Enterprise para Windows não suporta ligação via saslauthd.
Considerações
Os servidores Linux MongoDB suportam ligação a um servidor LDAP através do daemon
saslauthd.Utilize conexões seguras criptografadas ou confiáveis entre clientes e o servidor, como também, entre o
saslauthde o servidor LDAP. O servidor LDAP utiliza o mecanismoSASL PLAIN, enviando e recebendo dados em texto sem formatação. Você deve usar apenas um canal confiável, como uma VPN, uma conexão criptografada com TLS/SSL ou uma rede cabeada confiável.
Configuração
Para configurar o servidor MongoDB para vincular ao servidor LDAP utilizando via saslauthd, inicie o mongod utilizando as seguintes opções de linha de comando ou as seguintes configurações de arquivo de configuração:
--authpara habilitar o controle de acesso,--setParametercom oauthenticationMechanismsdefinido comoPLAIN, e--setParametercom o parâmetrosaslauthdPathdefinido para o caminho para o soquete de domínio Unix da instânciasaslauthd. Especifique uma string vazia""para utilizar o caminho de soquete padrão Unix-domain.
Inclua quaisquer outras opções de linha de comando necessárias para sua implementação. Para obter a documentação completa sobre as opções da linha de comando mongod, consulte mongod.
security.authorizationdefinido comoenabled,setParametercom o parâmetroauthenticationMechanismsdefinido comoPLAINesetParametercom osaslauthdPathdefinido para o caminho para o Soquete de domínio Unix da instância saslauthd. Especifique uma string vazia""para utilizar o caminho de soquete padrão Unix-domain.
Inclua quaisquer outras definições de arquivo de configuração necessárias para sua implantação. Para obter a documentação completa sobre arquivos de configuração, consulte Arquivo de configuração YAML.
É necessário criar ou atualizar o arquivo saslauthd.conf com os parâmetros apropriados para o seu servidor LDAP. Documentar saslauthd.conf está fora do escopo desta documentação.
Importante
O diretório pai do arquivo de soquete de domínio Unix do saslauthd especificado para security.sasl.saslauthdSocketPath ou --setParameter saslauthdPath deve conceder permissões de leitura e execução (r-x) para:
O mongod ou mongos não pode autenticar com sucesso via saslauthd sem a permissão especificada no diretório saslauthd e seu conteúdo.
Os seguintes tutoriais fornecem informações básicas sobre configurar o saslauthd.conf para trabalhar com dois serviços LDAP populares:
Consulte a documentação do saslauthd, e do seu serviço LDAP específico para obter conselhos.
Conectar a um servidor MongoDB via autenticação LDAP
Para autenticar em um servidor MongoDB via autenticação LDAP, utilize o db.auth() no banco de dados do $external com os seguintes parâmetros:
Opção  | Descrição  | 
|---|---|
  | O nome de usuário para autenticar como.  | 
  | A senha necessária para autenticar.  | 
  | Defina como   |