Solucionar problemas de autenticação Kerberos autogerenciada
Nesta página
mongokerberos
Ferramenta de Validação
O programa mongokerberos
fornece um método conveniente para verificar a configuração Kerberos da 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 .
Estratégias de depuração de configuração Kerberos
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
paramongod
oumongos
:mongod --version Na saída deste comando, procure a string
modules: subscription
oumodules: 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
oumongos
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 principal do nome principal do serviço (SPN) do SPN é
mongodb
. Se o componente primário do SPN não formongodb
, 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ânciamongos
ou . Se o nome de host do sistema da instânciamongod
oumongos
não estiver no arquivo keytab, a autenticação falhará com uma mensagem de erroGSSAPI error acquiring credentials.
.Se o nome do host da sua instância
mongod
oumongos
conforme retornado porhostname -f
não for totalmente qualificado, use--setParameter saslHostName
para definir o nome de domínio totalmente qualificado da instância ao iniciar omongod
oumongos
.Certifique-se de que cada host que executa uma instância
mongod
oumongos
tenha registros DNSA
ePTR
para fornecer pesquisa de DNS direta e reversa. O registroA
deve ser mapeado para o FQDN domongod
oumongos
.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 SPNs, execute osetspn -Q <spn>
no Active Directory. Se configurado corretamente, este comando retorna um Nome Distinto para a conta anexada ao SPN. Se você executarklist -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çarktutil
a usar o sal correto: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 Hexdump a chave.
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.
Registro de rastreamento Kerberos no Linux
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
Mensagens de erro comuns
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
oumongos
e reflete a configuração incorreta do nome de host do sistema ou um arquivo keytab ausente ou configurado incorretamente.
Veja também: