MongoDB Enterprise
Synopsis
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.
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
mongoldape 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:
osPacoteLinux
tgzPacoteWindows
zipPacotemacOS
tgzPacoteApós o download, descompacte o arquivo e copie o
mongoldappara um local no seu disco rígido.Dica
Os usuários de Linux e macOS podem desejar copiar
mongoldappara um local do sistema de arquivos definido na variável de ambiente$PATH, como/usr/bin. Isso permite referenciarmongoldapdiretamente 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
mongoldapusa 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--passwordpara testar a autenticação LDAP.Certifique-se de que o arquivo de configuração use codificação ASCII. A instância
mongoldapnão suporta arquivos de configuração com codificação não ASCII, incluindo UTF-8.
--user=<string>Nome de usuário para
mongoldapusar ao tentar autenticação ou autorização LDAP.
--password=<string>Senha do
--userparamongoldappara 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
mongoldapautentica 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
--ldapServersno. MongoDB suporta as seguintes referências LDAP, conforme definido em RFC 4511 4.1.10. Não utilize o--ldapServerspara listar todos os servidor LDAP em sua infraestrutura.Se não estiver configurado,
mongoldapnão poderá usar autenticação ou autorização LDAP.
--ldapQueryUser=<string>Disponível apenas no MongoDB Enterprise.
A identidade com a qual o
mongoldapse 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
--ldapQueryUsercom--ldapQueryPassword.Se não estiver configurado, o
mongoldapnão tentará vincular-se ao servidor LDAP.Observação
As implantações do Windows MongoDB podem utilizar o
--ldapBindWithOSDefaultsao invés do--ldapQueryUsere--ldapQueryPassword. Você não pode especificar--ldapQueryUsere--ldapBindWithOSDefaultsao 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 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
mongoldapautenticar 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
--ldapBindWithOSDefaultspara substituir--ldapQueryUsere--ldapQueryPassword.
--ldapBindMethod=<string>Padrão: simples
Disponível apenas no MongoDB Enterprise.
O método
mongoldaputiliza para autenticar em um servidor LDAP. Utilize com--ldapQueryUsere--ldapQueryPasswordpara conectar ao servidor LDAP.--ldapBindMethodsuporta os seguintes valores:ValorDescriçãosimplemongoldapusa autenticação simples.saslmongoldapusa protocolo SASL para autenticação.Se você especificar
sasl, você poderá configurar os mecanismos SASL disponíveis utilizando--ldapBindSaslMechanisms.mongoldappadroniza para usarDIGEST-MD5mecanismo.
--ldapBindSaslMechanisms=<string>Padrão: DIGEST-MD5
Disponível apenas no MongoDB Enterprise.
Uma lista separada por vírgulas de mecanismos SASL
mongoldappode utilizar ao autenticar para o servidor LDAP. Omongoldape o servidor LDAP devem concordar com pelo menos um mecanismo. Omongoldapcarrega 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
mongoldape 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
GSSAPIpara uso com a Autenticação Kerberos em Sistemas Autogerenciados, verifique o seguinte para a máquina hostmongoldap:LinuxA 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
mongoldapusar 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 fizer login no sistema. Defina
--ldapBindWithOSDefaultscomotruepara permitir quemongoldapuse as credenciais geradas ao se conectar ao servidor do Active Directory e executar consultas.
Defina
--ldapBindMethodcomosaslpara 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
mongoldapcria 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 Optionsna 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
--ldapTransportSecuritycomononepara desabilitar o TLS/SSL entremongoldape o servidor LDAP.Aviso
Configurar o
--ldapTransportSecurityparanonetransmite informações de texto simples e possivelmente credenciais entre omongoldape o servidor LDAP.
--ldapTimeoutMS=<long>Padrão: 10000
Disponível apenas no MongoDB Enterprise.
A quantidade de tempo em milissegundos
mongoldapdeve esperar que um servidor LDAP responda a uma solicitação.Aumentar o valor de
--ldapTimeoutMSpode 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--ldapTimeoutMSreduz 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
mongoldappara autenticação para um Nome Distinto (DN) LDAP. Você pode precisar utilizar o--ldapUserToDNMappingpara 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 templateque 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 X.509, Kerberos) para um DN LDAP completo para autorização.
--ldapUserToDNMappingespera uma JSON-string com aspas que represente uma array ordenada de documentos. Cada documento contém uma expressão regularmatche um modelosubstitutionouldapQueryusado 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çãoExemplomatchUma 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
substitutionouldapQuery."(.+)ENGINEERING""(.+)DBA"substitutionUm modelo de formatação de nome distinto (DN) LDAP que converte o nome de autenticação correspondente pelo regex
matchem 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"ldapQueryUm modelo de formatação de consulta LDAP que insere o nome de autenticação correspondente ao regex
matchem 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 expressãomatch. Omongoldapexecuta a query no servidor LDAP para recuperar o DN LDAP do usuário autenticado.mongoldapexige exatamente um resultado retornado para que a transformação seja bem-sucedida, oumongoldapignora essa transformação."ou=engineering,dc=example, dc=com??one?(user={0})"Observação
Para cada documento na array, você deve usar
substitutionouldapQuery. Você não pode especificar ambos no mesmo documento.Ao executar a autenticação ou autorização,
mongoldappassa 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, omongoldapaplicará a transformação e utilizará a saída para autenticar o usuário.mongoldapnão verifica os documentos restantes na array.Se o documento fornecido não corresponder ao nome de autenticação fornecido,
mongoldapcontinuará 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,mongoldapretornará um erro.O
mongoldaptambé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.mongoldaprejeita a solicitação de conexão e não verifica os documentos restantes na array.A partir do MongoDB 5.0,
--ldapUserToDNMappingaceita 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.COMcorresponde 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.COMcorresponde 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)".mongoldapexecuta esta query no servidor LDAP, retornando o resultado"cn=bob,ou=dba,dc=example,dc=com".Se o
--ldapUserToDNMappingestiver desmarcado, omongoldapnã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.
Uma URL de query LDAP relativa formatada em conformidade com RFC4515 e RFC4516 que o
mongoldapexecuta para obter os grupos LDAP aos quais o usuário autenticado 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 do
transformedse um forusername mappingespecificado.{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,
mongoldappressupõe que a query recupera um dos DNs dos quais essa entidade é membro.Se a sua query não incluir um atributo,
mongoldapassume que a query recupera todas as entidades das quais o usuário é membro.Para cada DN LDAP retornado pela consulta, o
mongoldapatribui ao usuário autorizado um papel correspondente no banco de dados doadmin. Se uma função no banco de dadosadmincorresponder exatamente ao DN,mongoldapconcede 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
memberOfdo objeto de usuário LDAP."{USER}?memberOf?base" Sua configuração LDAP pode não incluir o atributo
memberOfcomo 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,
mongoldapnão poderá autorizar usuários usando LDAP.