Configure o MongoDB autogerenciado com autenticação Kerberos no Windows
Visão geral
O MongoDB Enterprise oferece suporte à autenticação usando um serviço Kerberos. 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 oferece suporte apenas à implementação do MIT de Kerberos.
Pré-requisitos
A instalação e a configuração de um sistema do Kerberos estão além do escopo deste documento. Este tutorial pressupõe a configuração de uma entidade de serviço Kerberos para cada instância mongod.exe
e mongos.exe
.
Para conjuntos de réplicas e clusters fragmentados, verifique se sua configuração usa nomes de domínio totalmente qualificados (FQDN) em vez de endereços IP ou nomes de host não qualificados. Você deve usar o FQDN para GSSAPI para resolver corretamente os domínios Kerberos e permitir que você se conecte.
Procedimentos
Comece mongod.exe
sem Kerberos.
Para a adição inicial de usuários Kerberos, inicie o mongod.exe
sem suporte Kerberos.
Se um usuário Kerberos já estiver no MongoDB e tiver os privilégios exigidos para criar um usuário, você poderá iniciar o mongod.exe
com suporte Kerberos.
Inclua configurações adicionais conforme apropriado para seu sistema.
Observação
mongod
e mongos
se vinculam ao localhost por padrão. Se os membros do sistema forem executados em hosts diferentes, ou se você desejar que os clientes remotos se conectem ao sistema, especifique --bind_ip
ou net.bindIp
.
Conecte-se mongod
a.
Conecte mongosh
à instância mongod.exe
. Se mongod.exe
tiver --auth
ativado, verifique se você se conecta com os privilégios necessários para criar um usuário.
Adicione Kerberos Principal(s) ao MongoDB.
Adicione um Kerberos principal, <username>@<KERBEROS REALM>
, ao MongoDB no banco de dados $external
. Especifique o Kerberos realm em ALL UpperCase. O banco de dados $external
permite que mongod.exe
consulte uma fonte externa (por exemplo, o Kerberos) para fazer a autenticação. Para especificar os privilégios do usuário, atribua funções ao usuário.
Para usar sessões de cliente e garantias de consistência causal 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.
O seguinte exemplo adiciona o principal reportingapp@EXAMPLE.NET
Kerberos com acesso somente leitura ao banco de dados records
:
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Adicione entidades adicionais conforme necessário. Para cada usuário que você deseja autenticar usando Kerberos, você deve criar um usuário correspondente no MongoDB. Para obter mais informações sobre como criar e gerenciar usuários, consulte Comandos de gerenciamento de usuários.
Comece mongod.exe
o com suporte ao Kerberos.
Você deve iniciar mongod.exe
como a conta principal de serviço.
Para iniciar o mongod.exe
com compatibilidade com o Kerberos, defina o parâmetro mongod.exe
authenticationMechanisms
como GSSAPI
:
mongod.exe --setParameter authenticationMechanisms=GSSAPI <additional mongod.exe options>
Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip
.
Por exemplo, o seguinte inicia uma instância do mongod.exe
independente com suporte Kerberos:
mongod.exe --auth --setParameter authenticationMechanisms=GSSAPI --bind_ip localhost,<hostname(s)|ip address(es)>
Conecte mongosh.exe
o shell ao mongod.exe
e faça a autenticação.
Conecte o mongosh
cliente de shell como a entidade do Kerberos application@EXAMPLE.NET
.
Você pode conectar e autenticar a partir da linha de comando.
Usando cmd.exe
:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username reportingapp@EXAMPLE.NET
Usando Windows PowerShell
:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username reportingapp@EXAMPLE.NET
Se você estiver conectando a um sistema cujo nome de host corresponda ao nome Kerberos, especifique o nome de domínio totalmente qualificado (FQDN) para a opção --host
, em vez de um endereço IP ou nome de host não qualificado.
Se você estiver se conectando a um sistema cujo nome de host não corresponda ao nome Kerberos, primeiro conecte o shellmongosh
amongod.exe
e, em seguida, a partir do shellmongosh
, use o métododb.auth()
para se autenticar no $external
banco de dados de dados .
use $external db.auth( { mechanism: "GSSAPI", user: "reportingapp@EXAMPLE.NET" } )
Considerações adicionais
Configurar mongos.exe
para Kerberos
Para iniciar o mongos.exe
com compatibilidade com o Kerberos, defina o parâmetro mongos.exe
authenticationMechanisms
como GSSAPI
. Você deve iniciar mongos.exe
como a conta principal do serviço:
mongos.exe --setParameter authenticationMechanisms=GSSAPI <additional mongos options>
Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implantação ou se os membros da implantação forem executados em hosts diferentes, especifique o --bind_ip
.
Por exemplo, o seguinte inicia uma instância do mongos
com suporte Kerberos:
mongos.exe --setParameter authenticationMechanisms=GSSAPI --configdb shard0.example.net, shard1.example.net,shard2.example.net --keyFile C:\<path>\mongos.keyfile --bind_ip localhost,<hostname(s)|ip address(es)>
Modifique ou inclua quaisquer opções adicionais do mongos.exe
conforme exigido para sua configuração. Por exemplo, em vez de usar --keyFile
para autenticação interna de membros fragmentados do cluster, você pode usar a autenticação de membros x.509.
Atribuir nome principal de serviço ao serviço MongoDB do Windows
Utilize setspn.exe
para atribuir o nome principal de serviço (SPN) à conta que executa o mongod.exe
e o serviço do mongos.exe
:
setspn.exe -S <service>/<fully qualified domain name> <service account name>
Exemplo
Se mongod.exe
for executado como um serviço chamado mongodb
no testserver.mongodb.com
com o nome da conta de serviço mongodtest
, atribua o SPN da seguinte maneira:
setspn.exe -S mongodb/testserver.mongodb.com mongodtest
Incorporar mecanismos de autenticação adicionais
A autenticação Kerberos (GSSAPI (Kerberos)) pode funcionar ao lado de:
Mecanismo de autenticação SCRAM do MongoDB:
Mecanismo de autenticação do MongoDB para LDAP:
PLAIN (LDAP SASL)
Mecanismo de autenticação do MongoDB para x.509:
Especifique os mecanismos da seguinte maneira:
--setParameter authenticationMechanisms=GSSAPI,SCRAM-SHA-256
Adicione apenas os outros mecanismos se estiver em uso. Esta configuração de parâmetro não afeta a autenticação interna do MongoDB dos membros do cluster.
Teste e verificação
Após completar as etapas de configuração, você pode validar sua configuração com a ferramenta mongokerberos
.
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 esperado. Consulte a documentação do mongokerberos
para saber mais informações.
mongokerberos
está disponível apenas no MongoDB Enterprise.