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

Solucionar problemas de autenticação Kerberos autogerenciada

Nesta página

  • mongokerberos Ferramenta de Validação
  • Estratégias de depuração de configuração Kerberos
  • Registro de rastreamento Kerberos no Linux
  • Mensagens de erro comuns

O programa mongokerberos fornece um método conveniente para verificar a configuração do Kerberos de sua plataforma para uso com o MongoDB e para testar se a autenticação Kerberos de um cliente MongoDB funciona conforme o esperado.

A ferramenta mongokerberos pode ajudar a diagnosticar problemas comuns de configuração e é o local recomendado para começar ao solucionar problemas de configuração do Kerberos. Consulte a documentação do mongokerberos para mais informações.

mongokerberos está disponível apenas no MongoDB Enterprise.

Se você tiver dificuldade em iniciar ou autenticar mongod ou mongos com Kerberos, considere o seguinte:

  • Certifique-se de que você está executando o MongoDB Enterprise, não o MongoDB Community Edition. A autenticação Kerberos é uma funcionalidade do MongoDB Enterprise e não funcionará com binários da MongoDB Community Edition.

    Para verificar se você está usando o MongoDB Enterprise, passe a opção de linha de comando --version para mongod ou mongos:

    mongod --version

    Na saída deste comando, procure a string modules: subscription ou modules: enterprise para confirmar que você está usando os binários MongoDB Enterprise.

  • Certifique-se de que o nome de host do sistema canônico da instância do mongod ou mongos seja um nome de domínio totalmente qualificado e resolvível.

    No Linux, você pode verificar a resolução do nome de host do sistema com o comando hostname -f no prompt do sistema.

  • No Linux, certifique-se de que o componente primário do nome principal do serviço (SPN) do SPN é mongodb. Se o componente primário do SPN não for mongodb, você deverá especificar o componente primário usando --setParameter saslServiceName.

  • No Linux, certifique-se de que o componente de instância do nome principal do serviço (SPN) no arquivo keytab corresponde ao nome de host do sistema canônico da mongod instância mongos ou . Se o nome de host do sistema da instância mongod ou mongos não estiver no arquivo keytab, a autenticação falhará com uma mensagem de erro GSSAPI error acquiring credentials. .

    Se o nome do host da sua instância mongod ou mongos conforme retornado por hostname -f não for totalmente qualificado, use --setParameter saslHostName para definir o nome de domínio totalmente qualificado da instância ao iniciar o mongod ou mongos.

  • Certifique-se de que cada host que executa uma instância mongod ou mongos tenha registros DNS A e PTR para fornecer pesquisa de DNS direta e reversa. O registro A deve ser mapeado para o FQDN do mongod ou mongos.

  • Certifique-se de que os relógios nos servidores que hospedam suas instâncias do MongoDB e na infraestrutura do Kerberos estejam dentro do desvio de tempo máximo: 5 minutos por padrão. Diferenças de tempo maiores que a enviesamento de tempo máximo impedem a autenticação bem-sucedida.

  • Certifique-se de que os keytabs do Linux KRB5 contenham nomes principais que terminem em @<KERBEROS REALM>. Para validar os SPNs, execute o setspn -Q <spn> no Active Directory. Se configurado corretamente, este comando retorna um Nome Distinto para a conta anexada ao SPN. Se você executar klist -k <keytab> no Linux, <spn>@<KERBEROS REALM> aparecerá no keytab.

  • Se você usar o Active Directory como um KDC, certifique-se de que a conta de serviço do MongoDB seja uma conta de usuário, não uma conta de máquina.

  • Se você usar a criptografia AES com o Active Directory, habilite o AES na conta de serviço do MongoDB com a propriedade msDS-SupportedEncryptionTypes ou a configuração de política "Segurança de rede: configurar tipos de criptografia permitidos para Kerberos".

  • O Kerberos salva seus algoritmos de geração de chaves para garantir que dois usuários com a mesma senha resultem em chaves distintas. ktutil no Linux e Active Directory (AD) não usam o mesmo processo para gerar sais. Essa discrepância pode resultar em falhas de autenticação ao trabalhar em ambientes Linux e Windows. Para atenuar esse problema, você pode:

    • Gere o arquivo keytab no servidor AD e mova o arquivo resultante para o servidor Linux.

      ktpass /out <outfile.keytab> /princ <spn>@<KERBEROS REALM> /mapuser <current userPrincipalName> /crypto ALL /ptype KRB5_NT_PRINCIPAL +rndpass

      Observação

      Isso mudará userPrincipalName para o valor em /princ.

    • Use ktutil no Linux e force-o a usar o sal correto. Para forçar ktutil a usar o sal correto:

      1. Gere uma entrada keytab que utilize userPrincipalName como o nome principal.

        ktutil: add_entry -password -p <userPrincipalName>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Password for <userPrincipalName>@<KERBEROS REALM>:
        ktutil: list -k
        slot KVNO Principal
      2. Hexdump a chave.

      3. Crie uma nova entrada keytab, usando <spn>@<KERBEROS REALM> como o nome principal e use a chave hexadecimal.

        1 <KVNO> <userPrincipalName>@<KERBEROS REALM>(0x<HEXDUMP>)
        ktutil: add_entry -key -p <spn>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO>
        Key for <spn>@<KERBEROS REALM> (hex): <HEXDUMP>
        ktutil: write_kt mongodb_ad.keytab
    • Use RC4-HMAC, que não utiliza sais, embora isso não seja recomendado.

O MIT Kerberos fornece a variável de ambiente KRB5_TRACE para a saída do log de rastreamento. Se você estiver tendo problemas constantes com o MIT Kerberos no Linux, poderá definir KRB5_TRACE ao iniciar suas instâncias mongod, mongos ou mongosh para gerar um log detalhado.

Por exemplo, o comando a seguir inicia um mongod autônomo cujo arquivo keytab está no caminho /etc/krb5.keytab padrão e define KRB5_TRACE para gravar em /logs/mongodb-kerberos.log:

env KRB5_KTNAME=/etc/krb5.keytab \
KRB5_TRACE=/logs/mongodb-kerberos.log \
mongod --dbpath /data/db --logpath /data/db/mongodb.log \
--auth --setParameter authenticationMechanisms=GSSAPI \
--bind_ip localhost,<hostname(s)|ip address(es)> --fork

Em algumas situações, o MongoDB retornará mensagens de erro da interface GSSAPI se houver um problema com o serviço Kerberos. Algumas mensagens de erro comuns são:

GSSAPI error in client while negotiating security context.

Esse erro ocorre no cliente e reflete credenciais insuficientes ou uma tentativa maliciosa de autenticação.

Se você receber esse erro, verifique se está usando as credenciais corretas e o nome de domínio totalmente qualificado correto ao se conectar ao host.

GSSAPI error acquiring credentials.
Esse erro ocorre durante o início do mongod ou mongos e reflete a configuração incorreta do nome de host do sistema ou um arquivo keytab ausente ou configurado incorretamente.

Dica

Veja também:

Voltar

Configurar no Windows