Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

mongoldap

Nesta página

  • Synopsis
  • Instalação
  • Uso
  • Comportamento
  • Opções

MongoDB Enterprise

Observação

A partir do MongoDB 8.0, A autenticação e autorização LDAP estão obsoletas. O LDAP está disponível e continuará a operar sem alterações durante a vida útil do MongoDB 8. O LDAP será removido em uma futura versão principal.

Para obter detalhes, consulte Descontinuação do LDAP.

O MongoDB Enterprise fornece mongoldap para testar as opções de configuração LDAP do MongoDB em um servidor LDAP em execução ou em um conjunto de servidores.

Para validar as opções LDAP no arquivo de configuração, configure a opção mongoldap --config para o caminho do arquivo de configuração.

Para testar as opções de configuração LDAP, você deve especificar um --user e --password. O mongoldap simula a autenticação em um servidor MongoDB em execução com as opções de configuração e credenciais fornecidas.

mongoldap retorna um relatório que inclui o sucesso ou a falha de qualquer etapa do procedimento de autenticação ou autorização LDAP. As mensagens de erro incluem informações sobre erros específicos encontrados e possíveis conselhos para resolver o erro.

Ao configurar as opções relacionadas à autorização LDAP, mongoldap executa uma query LDAP construída usando as opções de configuração e o nome de usuário fornecidos e retorna uma lista de funções no banco de dados admin as quais o usuário está autorizado.

Você pode usar essas informações ao configurar funções de autorização LDAP para controle de acesso do usuário. Por exemplo, use mongoldap para garantir que sua configuração permita que usuários privilegiados obtenham as roles necessárias para executar as tarefas esperadas. Da mesma forma, use mongoldap para garantir que sua configuração não permita que usuários sem privilégios obtenham funções para acessar o servidor MongoDB ou executar ações não autorizadas.

Ao configurar as opções relacionadas à autenticação LDAP, use mongoldap para garantir que a operação de autenticação funcione conforme o esperado.

Execute mongoldap na linha de comando do sistema, não no mongosh.

Este documento fornece uma visão geral completa de todas as opções de linha de comando para mongoldap.

A ferramenta mongoldap faz parte do pacote Ferramentas do Banco deMongoDB database Extra e pode ser instalada com o MongoDB Server ou como uma instalação independente.

Para instalar o mongoldap como parte de uma instalação do MongoDB Enterprise MongoDB Server:

  • Siga as instruções para a sua plataforma: Instalar MongoDB Enterprise MongoDB Server

  • Após concluir a instalação, o mongoldap e as outras ferramentas incluídas estarão disponíveis no mesmo local que o Servidor MongoDB.

    Observação

    Para o assistente de instalação do Windows .msi , a opção de instalação do Complete inclui mongoldap.

Para instalar o mongoldap como uma instalação standalone:

  • Siga o link de download do MongoDB Enterprise: Centro de download doMongoDB Enterprise

  • Selecione seu Platform (sistema operacional) no menu suspenso e, em seguida, selecione o Package apropriado para sua plataforma, de acordo com o gráfico a seguir:

    os
    Pacote
    Linux
    tgz Pacote
    Windows
    zip Pacote
    macOS
    tgz Pacote
  • Após o download, descompacte o arquivo e copie o mongoldap para um local no seu disco rígido.

    Dica

    Os usuários de Linux e macOS podem desejar copiar mongoldap para um local do sistema de arquivos definido na variável de ambiente $PATH , como /usr/bin. Isso permite referenciar mongoldap diretamente na linha de comando pelo nome, sem precisar especificar seu caminho completo ou primeiro navegar para seu diretório pai. Consulte o guia de instalação da sua plataforma para obter mais informações.

Observação

Uma descrição completa do LDAP ou Active Directory está além do escopo desta documentação.

Considere o seguinte arquivo de configuração de amostra, projetado para suportar a autenticação e autorização LDAP via Active Directory:

security:
authorization: "enabled"
ldap:
servers: "activedirectory.example.net"
bind:
queryUser: "mongodbadmin@dba.example.com"
queryPassword: "secret123"
userToDNMapping:
'[
{
match : "(.+)",
ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})"
}
]'
authz:
queryTemplate: "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"
setParameter:
authenticationMechanisms: "PLAIN"

Você pode utilizar o mongoldap para validar o arquivo de configuração, que retorna um relatório do procedimento. Você deve especificar um nome de usuário e senha para mongoldap.

mongoldap --config=<path-to-config> --user="bob@dba.example.com" --password="secret123"

Se as credenciais fornecidas forem válidas e as opções LDAP nos arquivos de configuração forem válidas, a saída poderá ser a seguinte:

Checking that an LDAP server has been specified...
[OK] LDAP server found
Connecting to LDAP server...
[OK] Connected to LDAP server
Parsing MongoDB to LDAP DN mappings..
[OK] MongoDB to LDAP DN mappings appear to be valid
Attempting to authenticate against the LDAP server...
[OK] Successful authentication performed
Checking if LDAP authorization has been enabled by configuration...
[OK] LDAP authorization enabled
Parsing LDAP query template..
[OK] LDAP query configuration template appears valid
Executing query against LDAP server...
[OK] Successfully acquired the following roles:
...

A partir do MongoDB 5.1, o mongoldap suporta prefixar o servidor LDAP com srv: e srv_raw:.

Se sua string de conexão especificar "srv:<DNS_NAME>", mongoldap verificará se "_ldap._tcp.gc._msdcs.<DNS_NAME>" existe para que o SRV seja compatível com o Active Directory. Se não encontrado, mongoldap verifica se "_ldap._tcp.<DNS_NAME>" existe para SRV. Se não for possível encontrar um registro SRV, mongoldap avisa para usar "srv_raw:<DNS_NAME>" no lugar.

Se sua string de conexão especificar "srv_raw:<DNS_NAME>", mongoldap executará uma pesquisa de registro SRV para "<DNS NAME>".

--config=<filename>, -f=<filename>

Especifica um arquivo de configuração para opções de configuração do tempo de execução. As opções são equivalentes às opções de configuração da linha de comando. Consulte Opções de arquivo de configuração autogerenciadas para obter mais informações.

O mongoldap usa qualquer opção de configuração relacionada à Autenticação de Proxy LDAP Autogerenciada ou Autorização LDAP em Sistemas Autogerenciados para testar a autenticação ou autorização LDAP.

Requer a especificação --user. Pode aceitar --password para testar a autenticação LDAP.

Certifique-se de que o arquivo de configuração use codificação ASCII. A instância mongoldap não suporta arquivos de configuração com codificação não ASCII, incluindo UTF-8.

--user=<string>

Nome de usuário para mongoldap usar ao tentar autenticação ou autorização LDAP.

--password=<string>

Senha do --user para mongoldap para utilizar ao tentar a autenticação LDAP. Não necessário para autorização LDAP.

--ldapServers=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>

O servidor LDAP no qual o mongoldap autentica os usuários ou determina quais ações um usuário está autorizado a executar em um determinado banco de dados. Se o servidor LDAP especificado tiver quaisquer instâncias replicadas, você poderá especificar o host e a porta de cada servidor replicado em uma lista delimitada por vírgula.

Se sua infraestrutura LDAP dividir o diretório LDAP em vários servidores LDAP, especifique um servidor LDAP ou qualquer uma de suas instâncias replicadas no --ldapServers. O MongoDB suporta as seguintes referências LDAP, conforme definido em RFC 4511 4.1.10. Não utilize o --ldapServers para listar todos os servidores LDAP em sua infraestrutura.

Se não estiver configurado, mongoldap não poderá usar autenticação ou autorização LDAP.

--ldapQueryUser=<string>

Disponível apenas no MongoDB Enterprise.

A identidade com a qual o mongoldap se liga, ao conectar ou executar query em um servidor LDAP.

Obrigatório apenas se alguma das seguintes afirmações for verdadeira:

Você deve usar --ldapQueryUser com --ldapQueryPassword.

Se não estiver configurado, o mongoldap não tentará vincular-se ao servidor LDAP.

Observação

As implantações do Windows MongoDB podem utilizar o --ldapBindWithOSDefaults ao invés do --ldapQueryUser e --ldapQueryPassword. Você não pode especificar --ldapQueryUser e --ldapBindWithOSDefaults ao mesmo tempo.

--ldapQueryPassword=<string | array>

Disponível apenas no MongoDB Enterprise.

A senha costumava vincular a um servidor LDAP ao usar o --ldapQueryUser. Você deve usar --ldapQueryPassword com --ldapQueryUser.

Se não estiver configurado, o mongoldap não tentará vincular ao servidor LDAP.

Você pode definir essa configuração em um mongoldap em execução usando setParameter.

O comando ldapQueryPasswordsetParameter aceita uma string ou uma array de strings. Se ldapQueryPassword for definido como uma array, o MongoDB tentará cada senha na ordem até que uma delas seja bem-sucedida. Use um array de senha para rolar sobre a senha da conta LDAP sem tempo de inatividade.

Observação

As implantações do Windows MongoDB podem utilizar o --ldapBindWithOSDefaults ao invés do --ldapQueryUser e --ldapQueryPassword. Você não pode especificar --ldapQueryPassword e --ldapBindWithOSDefaults ao mesmo tempo.

--ldapBindWithOSDefaults=<bool>

Padrão: false

Disponível no MongoDB Enterprise apenas para a plataforma Windows.

Permite ao mongoldap autenticar ou vincular, utilizando suas credenciais de login do Windows ao conectar ao servidor LDAP.

Necessário apenas se:

Use --ldapBindWithOSDefaults para substituir --ldapQueryUser e --ldapQueryPassword.

--ldapBindMethod=<string>

Padrão: simples

Disponível apenas no MongoDB Enterprise.

O método mongoldap utiliza para autenticar em um servidor LDAP. Utilize com --ldapQueryUser e --ldapQueryPassword para conectar ao servidor LDAP.

--ldapBindMethod suporta os seguintes valores:

Valor
Descrição
simple
mongoldap usa autenticação simples.
sasl
mongoldap usa protocolo SASL para autenticação.

Se você especificar sasl, você poderá configurar os mecanismos SASL disponíveis utilizando --ldapBindSaslMechanisms. mongoldap padroniza para usar DIGEST-MD5 mecanismo.

--ldapBindSaslMechanisms=<string>

Padrão: DIGEST-MD5

Disponível apenas no MongoDB Enterprise.

Uma lista separada por vírgulas de mecanismos SASL mongoldap pode utilizar ao autenticar para o servidor LDAP. O mongoldap e o servidor LDAP devem concordar com pelo menos um mecanismo. O mongoldap carrega dinamicamente quaisquer bibliotecas de mecanismos SASL instaladas na máquina host no tempo de execução.

Instale e configure as bibliotecas apropriadas para o(s) mecanismo(s) SASL selecionado(s) no host do mongoldap e no host do servidor LDAP remoto. Seu sistema operacional pode incluir determinadas bibliotecas SASL por padrão. Consulte a documentação associada a cada mecanismo SASL para obter orientações sobre instalação e configuração.

Se estiver usando o mecanismo SASL GSSAPI para uso com a Autenticação Kerberos em Sistemas Autogerenciados, verifique o seguinte para a máquina host mongoldap :

Linux
Windows
Se estiver conectando a um servidor Active Directory, a configuração do Windows Kerberos gerará automaticamente um Ticket-Granting-Ticket quando o usuário faz login no sistema. Defina --ldapBindWithOSDefaults como true para permitir que mongoldap use as credenciais geradas ao se conectar ao servidor do Active Directory e executar consultas.

Defina --ldapBindMethod como sasl para usar esta opção.

Observação

Para obter uma lista completa dos mecanismos SASL, consulte a lista da IANA . Consulte a documentação do seu serviço LDAP ou Active Directory para identificar os mecanismos SASL compatíveis com o serviço.

MongoDB não é uma fonte de bibliotecas de mecanismo SASL nem a documentação do MongoDB é uma fonte definitiva para instalação ou configuração de qualquer mecanismo SASL. Para documentação e suporte, consulte o fornecedor ou proprietário da biblioteca do mecanismo SASL.

Para obter mais informações sobre SASL, consulte os seguintes recursos:

--ldapTransportSecurity=<string>

Padrão: tls

Disponível apenas no MongoDB Enterprise.

Por padrão, o mongoldap cria uma conexão segura TLS/SSL para o servidor LDAP.

Para implantações do Linux, você deve configurar as Opções de TLS apropriadas no arquivo /etc/openldap/ldap.conf. O gerenciador de pacotes do seu sistema operacional cria esse arquivo como parte da instalação do MongoDB Enterprise, por meio da dependência libldap. Consulte a documentação do TLS Options na documentação ldap.conf OpenLDAP para instruções mais completas.

Para o sistema do Windows, você deve adicionar os certificados CA do servidor LDAP à ferramenta de gerenciamento de certificados do Windows. O nome exato e a funcionalidade da ferramenta podem variar dependendo da versão do sistema operacional. Consulte a documentação da sua versão do Windows para obter mais informações sobre o gerenciamento de certificados.

Configure --ldapTransportSecurity como none para desabilitar o TLS/SSL entre mongoldap e o servidor LDAP.

Aviso

Configurar o --ldapTransportSecurity para none transmite informações de texto simples e possivelmente credenciais entre o mongoldap e o servidor LDAP.

--ldapTimeoutMS=<int>

Padrão: 10000

Disponível apenas no MongoDB Enterprise.

A quantidade de tempo em milissegundos mongoldap deve esperar que um servidor LDAP responda a uma solicitação.

Aumentar o valor de --ldapTimeoutMS pode evitar a falha de conexão entre o servidor MongoDB e o servidor LDAP, se a origem da falha for um tempo limite de conexão. Diminuir o valor de --ldapTimeoutMS reduz o tempo que o MongoDB espera por uma resposta do servidor LDAP.

--ldapUserToDNMapping=<string>

Disponível apenas no MongoDB Enterprise.

Mapeia o nome de usuário fornecido a mongoldap para autenticação para um Nome Distinto (DN) LDAP. Você pode precisar utilizar o --ldapUserToDNMapping para transformar um nome de usuário em um DN LDAP nos seguintes cenários:

  • Executando autenticação LDAP com ligação LDAP simples, onde os usuários se autenticam no MongoDB com nomes de usuário que não são DNs LDAP completos.

  • Utilizando um LDAP authorization query template que exige um DN.

  • Transformar os nomes de usuário dos clientes que se autenticam no Mongo DB usando diferentes mecanismos de autenticação (por exemplo, o nome de usuário de um cliente). x.509, Kerberos) para um DN LDAP completo para autorização.

--ldapUserToDNMapping espera uma JSON-string com aspas que represente uma array ordenada de documentos. Cada documento contém uma expressão regular match e um modelo substitution ou ldapQuery usado para transformar o nome de usuário recebido.

Cada documento na array tem o seguinte formato:

{
match: "<regex>"
substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>"
}
Campo
Descrição
Exemplo
match
Uma expressão regular (regex) formatada pelo ECMAScript para corresponder a um nome de usuário fornecido. Cada seção de parênteses representa um grupo de captura regex utilizado pelo substitution ou ldapQuery.
"(.+)ENGINEERING" "(.+)DBA"
substitution

Um modelo de formatação de nome diferenciado (DN) LDAP que converte o nome de autenticação correspondente pelo regex match em um DN LDAP. Cada valor numérico entre colchetes é substituído pelo grupo de captura regex extraído do nome de usuário de autenticação por meio da regex match.

O resultado da substituição deve ser um RFC4514 string escapade.

"cn={0},ou=engineering, dc=example,dc=com"
ldapQuery
Um modelo de formatação de consulta LDAP que insere o nome de autenticação correspondente ao regex match em um URI de consulta LDAP codificado respeitando RFC4515 e RFC4516. Cada valor numérico entre colchetes é substituído pelo grupo de captura de regex correspondente extraído do nome de usuário de autenticação por meio da match expressão . O mongoldap executa a query no servidor LDAP para recuperar o DN LDAP do usuário autenticado. mongoldap exige exatamente um resultado retornado para que a transformação seja bem-sucedida, ou mongoldap ignora essa transformação.
"ou=engineering,dc=example, dc=com??one?(user={0})"

Observação

Uma explicação da RFC4514, RFC4515, RFC4516, ou queries LDAP estão fora do escopo da documentação do MongoDB. Revise o RFC diretamente ou use o recurso LDAP da sua preferência.

Para cada documento na array, você deve usar substitution ou ldapQuery. Você não pode especificar ambos no mesmo documento.

Ao executar a autenticação ou autorização, mongoldap passa por cada documento na array na ordem fornecida, verificando o nome de usuário da autenticação no filtro match . Se uma correspondência for localizada, o mongoldap aplicará a transformação e utilizará a saída para autenticar o usuário. mongoldap não verifica os documentos restantes na array.

Se o documento fornecido não corresponder ao nome de autenticação fornecido, mongoldap continuará na lista de documentos para encontrar correspondências adicionais. Se nenhuma correspondência for encontrada em nenhum documento ou se a transformação descrita no documento falhar, mongoldap retornará um erro.

O mongoldap também retorna um erro se uma das transformações não puder ser avaliada devido a falhas de rede ou autenticação no servidor LDAP. mongoldap rejeita a solicitação de conexão e não verifica os documentos restantes na array.

A partir do MongoDB 5.0, --ldapUserToDNMapping aceita strings vazias "" ou array vazia [ ] no lugar de um documento de mapeamento. Se fornecer uma string vazia ou uma matriz vazia para --ldapUserToDNMapping, o MongoDB mapeará o nome de usuário autenticado como o DN LDAP. Anteriormente, fornecer um documento de mapeamento vazio causaria falha no mapeamento.

Exemplo

O seguinte mostra dois documentos de transformação. O primeiro documento corresponde a qualquer cadeia de caracteres que termine em @ENGINEERING, colocando qualquer coisa que preceda o sufixo em um grupo de captura de regex. O segundo documento corresponde a qualquer cadeia de caracteres que termine em @DBA, colocando qualquer coisa que preceda o sufixo em um grupo de captura de regex.

Importante

Você deve passar a array para --ldapUserToDNMapping como uma string.

"[
{
match: "(.+)@ENGINEERING.EXAMPLE.COM",
substitution: "cn={0},ou=engineering,dc=example,dc=com"
},
{
match: "(.+)@DBA.EXAMPLE.COM",
ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})"
}
]"

Um usuário com o nome de usuário alice@ENGINEERING.EXAMPLE.COM corresponde ao primeiro documento. O grupo de captura regex {0} corresponde à cadeia de caracteres alice. A saída resultante é o DN "cn=alice,ou=engineering,dc=example,dc=com".

Um usuário com nome de usuário bob@DBA.EXAMPLE.COM corresponde ao segundo documento. O grupo de captura de regex {0} corresponde à string bob. A saída resultante é a consulta LDAP "ou=dba,dc=example,dc=com??one?(user=bob)". mongoldap executa esta query no servidor LDAP, retornando o resultado "cn=bob,ou=dba,dc=example,dc=com".

Se o --ldapUserToDNMapping estiver desmarcado, o mongoldap não aplicará nenhuma transformação no nome de usuário ao tentar autenticar ou autorizar um usuário no servidor LDAP.

--ldapAuthzQueryTemplate=<string>

Disponível apenas no MongoDB Enterprise.

Um URL de consulta LDAP relativo formatado em conformidade com a RFC4515 e RFC4516 que o executa para obter os grupos LDAP aos quais o usuário autenticado mongoldap pertence. A query é relativa ao host ou hosts especificados no --ldapServers.

Na URL, você pode usar os seguintes tokens de substituição:

Token de substituição
Descrição
{USER}
Substitui o nome de usuário autenticado, ou o nome de usuário do transformed se um username mapping for especificado.
{PROVIDED_USER}
Substitui o nome de usuário fornecido, ou seja, antes da autenticação ou LDAP transformation.

Ao construir a URL de query, certifique-se de que a ordem dos parâmetros LDAP respeite RFC4516:

[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ]

Se sua query incluir um atributo, mongoldap pressupõe que a query recupera um dos DNs dos quais essa entidade é membro.

Se a sua query não incluir um atributo, mongoldap assume que a query recupera todas as entidades das quais o usuário é membro.

Para cada DN LDAP retornado pela consulta, o mongoldap atribui ao usuário autorizado um papel correspondente no banco de dados do admin . Se uma função no banco de dados admin corresponder exatamente ao DN, mongoldap concede ao usuário as funções e privilégios atribuídos a essa função. Consulte o método db.createRole() para obter mais informações sobre a criação de funções.

Exemplo

Esta query LDAP retorna quaisquer grupos listados no atributo memberOf do objeto de usuário LDAP.

"{USER}?memberOf?base"

Sua configuração LDAP pode não incluir o atributo memberOf como parte do esquema do usuário, pode possuir um atributo diferente para relatar a associação ao grupo ou pode não controlar a associação ao grupo por meio de atributos. Configure sua query com relação à sua configuração LDAP exclusiva.

Se não estiver configurado, mongoldap não poderá autorizar usuários usando LDAP.

Observação

Uma explicação da RFC4515, RFC4516 ou queries LDAP estão fora do escopo da documentação do MongoDB. Revise o RFC diretamente ou use o recurso LDAP da sua preferência.

Voltar

mongokerberos