mongoldap
Nesta página
MongoDB Enterprise
Synopsis
O MongoDB Enterprise fornece mongoldap
para testar asopçõ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
.
Instalação
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.
Instalar com o Servidor MongoDB
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 incluimongoldap
.
Instalar como autônomo
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:
osPacoteLinuxtgz
PacoteWindowszip
PacotemacOStgz
PacoteApó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 referenciarmongoldap
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.
Uso
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: ...
Comportamento
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>"
.
Opções
--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
paramongoldap
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:
Utilizando autorização LDAP.
Utilizando uma query LDAP para
username transformation
.O servidor LDAP não permite ligações anônimas
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.
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 ldapQueryPassword
setParameter
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:
Utilizando autorização LDAP.
Utilizando uma query LDAP para
username transformation
.O servidor LDAP não permite ligações anônimas
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:ValorDescriçãosimple
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 usarDIGEST-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. Omongoldap
e o servidor LDAP devem concordar com pelo menos um mecanismo. Omongoldap
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 hostmongoldap
:Linux
A variável de ambiente
KRB5_CLIENT_KTNAME
é resolvida para o nome do cliente Linux Keytab Files para a máquina host. Para obter mais informações sobre variáveis de ambiente Kerberos, consulte a documentação do Kerberos.O keytab do cliente inclui um usuário principal para o
mongoldap
usar ao se conectar ao servidor LDAP e executar consultas LDAP.
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
comotrue
para permitir quemongoldap
use as credenciais geradas ao se conectar ao servidor do Active Directory e executar consultas.
Defina
--ldapBindMethod
comosasl
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:
Para Linux, consulte a documentação do Cyrus SASL.
Para Windows, consulte a documentação do Windows SASL.
--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êncialibldap
. Consulte a documentação doTLS 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
comonone
para desabilitar o TLS/SSL entremongoldap
e o servidor LDAP.Aviso
Configurar o
--ldapTransportSecurity
paranone
transmite informações de texto simples e possivelmente credenciais entre omongoldap
e o servidor LDAP.
--ldapTimeoutMS=<long>
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 regularmatch
e um modelosubstitution
ouldapQuery
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>" } CampoDescriçãoExemplomatch
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 pelosubstitution
ouldapQuery
."(.+)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 regexmatch
.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 regexmatch
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 damatch
expressão . Omongoldap
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, oumongoldap
ignora essa transformação."ou=engineering,dc=example, dc=com??one?(user={0})"
Observação
Para cada documento na array, você deve usar
substitution
ouldapQuery
. 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 filtromatch
. Se uma correspondência for localizada, omongoldap
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 caracteresalice
. 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 à stringbob
. 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, omongoldap
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çãoDescrição{USER}
Substitui o nome de usuário autenticado, ou o nome de usuário dotransformed
se umusername mapping
for especificado.{PROVIDED_USER}
Substitui o nome de usuário fornecido, ou seja, antes da autenticação ouLDAP 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 doadmin
. Se uma função no banco de dadosadmin
corresponder exatamente ao DN,mongoldap
concede ao usuário as funções e privilégios atribuídos a essa função. Consulte o métododb.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.