Autenticação Kerberos em sistemas autogerenciados
Nesta página
Visão geral
O MongoDB Enterprise fornece suporte para autenticação Kerberos de clientes MongoDB para instâncias mongod
e mongos
. O Kerberos é um protocolo de autenticação padrão do setor para grandes sistemas de cliente/ servidor . O Kerberos permite que o MongoDB e os aplicativos aproveitem os processos e a infraestrutura de autenticação existentes. O MongoDB Enterprise é compatível apenas com a implementação do de Kerberos.
Componentes do Kerberos e MongoDB
Principals
Em um sistema baseado no Kerberos, cada participante da comunicação autenticada é conhecido como "principal", e cada principal deve ter um nome exclusivo.
Os principais pertencem a unidades administrativas chamadas realms. Para cada realm, o Centro de Distribuição de Chaves (KDC) Kerberos mantém um banco de dados do realm principal e das "chaves secretas" associadas aos principais.
Para uma autenticação cliente-servidor, o cliente solicita ao KDC um "ticket" para acessar um ativo específico. O KDC usa o segredo do cliente e o segredo do servidor para criar o ticket, o que permite que o cliente e o servidor se autentiquem mutuamente, mantendo os segredos ocultos.
Para a configuração do MongoDB para o suporte ao Kerberos, dois tipos de nomes principais são de interesse: principal do usuário e principal do serviço.
Principal do usuário
Para autenticar usando o Kerberos, adicione as entidades de usuário do Kerberos ao MongoDB no banco de dados $external
. Os nomes de entidades de usuário têm o formato:
<username>@<KERBEROS REALM>
Para cada usuário que você deseja autenticar utilizando Kerberos, você deve criar um usuário correspondente no MongoDB no banco de dados $external
.
Para usar Client Sessions e Causal Consistency Guarantees com usuários de autenticação $external
(usuários Kerberos, LDAP ou x.509), os nomes de usuário não podem ter mais de 10k bytes.
Para exemplos de como adicionar um usuário ao MongoDB , bem como autenticar como este usuário, veja Como configurar o MongoDB com a autenticação Kerberos no Linux e Como configurar o MongoDB com a autenticação Kerberos no Windows.
Dica
Veja também:
Gerenciar usuários e funções em sistemas autogerenciados para obter informações gerais sobre a criação e o gerenciamento de usuários no MongoDB.
Principal de serviços
Cada instância do MongoDB mongod
e mongos
(ou mongod.exe
ou mongos.exe
no Windows) deve ter um principal de serviço associado. Os nomes dos principais de serviço têm o formato:
<service>/<fully qualified domain name>@<KERBEROS REALM>
Para MongoDB, o <service>
é padronizado para mongodb
. Por exemplo, se o m1.example.com
for um servidor MongoDB e o example.com
mantiver o domínio Kerberos EXAMPLE.COM
, então o m1
deverá ter o nome principal de serviço mongodb/m1.example.com@EXAMPLE.COM
.
Para especificar um valor diferente para <service>
, utilize serviceName
durante a inicialização de mongod
ou mongos
(ou mongod.exe
ou mongos.exe
). mongosh
ou outros clientes também podem especificar um nome principal do serviço diferente utilizando serviceName
.
Os nomes de entidades de serviço devem ser acessíveis pela rede usando a parte do nome de domínio totalmente qualificado (FQDN) do seu nome de entidade de serviço.
Por padrão, o Kerberos tenta identificar os hosts utilizando o arquivo /etc/krb5.conf
antes de utilizar o DNS para determinar os hosts.
No Windows, se estiver executando o MongoDB como um serviço, consulte Atribuir nome principal de serviço ao serviço MongoDB no Windows.
Linux Keytab Files
Os sistemas Linux podem armazenar chaves de autenticação Kerberos para uma entidade de serviço em arquivos keytab. Cada instância Kerberized mongod
e mongos
em execução no Linux deve ter acesso a um arquivo keytab que contenha as chaves de sua entidade de serviço.
Para manter os arquivos keytab seguros, use permissões de arquivo que restringem o acesso somente ao usuário que executa o processo mongod
ou mongos
.
Tickets
No Linux, clientes do MongoDB podem usar o programa kinit
do Kerberos para inicializar um cache de credenciais para autenticar a entidade de usuário nos servidores.
Diretório ativo do Windows
Diferentemente dos sistemas Linux, as instâncias mongod
e as instâncias mongos
em execução no Windows não exigem acesso aos arquivos keytab. Em vez disso, as instâncias mongod
e mongos
leem as credenciais de servidor de um repositório de credenciais específico para o sistema operacional.
No entanto, no Diretório Ativo do Windows, você pode exportar um arquivo keytab para uso em sistemas Linux. Veja Ktpass para mais informações.
Autenticar com Kerberos
Para configurar o MongoDB para suporte e autenticação Kerberos, consulte Configurar o MongoDB com autenticação Kerberos no Linux e Configurar o MongoDB com autenticação Kerberos no Windows.
Considerações operacionais
DNS
Cada host que executa uma instância do mongod
ou mongos
deve ter ambos os registros DNS do A
e PTR
para fornecer pesquisa direta e reversa.
Sem os registros DNS do A
e PTR
, o host não pode determinar os componentes do domínio Kerberos ou do Centro de Distribuição de Chaves (KDC).
Sincronização de horário do sistema
Para a autenticação bem-sucedida, a hora do sistema para cada instância do mongod
e mongos
deve estar dentro de 5 minutos da hora do sistema dos outros hosts na infraestrutura Kerberos.
Ambientes do MongoDB com autenticação Kerberos
Suporte ao driver
Os seguintes drivers MongoDB suportam autenticação Kerberos:
Usar com o Mecanismo de autenticação do MongoDB adicional
Embora o MongoDB ofereça suporte ao uso da autenticação Kerberos com outros mecanismos de autenticação, adicione os outros mecanismos somente quando necessário. Consulte a seção Incorporate Additional Authentication Mechanisms
em Configurar o MongoDB com autenticação Kerberos no Linux e Configurar o MongoDB com autenticação Kerberos no Windows para saber mais detalhes.
Teste e verificação
O programa mongokerberos
fornece um método prático 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. Consulte a documentação do mongokerberos
para saber mais informações.
mongokerberos
está disponível apenas no MongoDB Enterprise.