Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Autenticar usando SASL e LDAP com ActiveDirectory

Nesta página

  • Considerações
  • Configurar saslauthd
  • Configurar MongoDB

MongoDB Enterprise fornece suporte para autenticação proxy de usuários. Isso permite que os administradores configurem um cluster do MongoDB para autenticar usuários fazendo proxy de solicitações de autenticação para um serviço LDAP (Lightweight Directory Access Protocol) especificado.

Observação

Para binários do MongoDB 4.2 Enterprise vinculados ao libldap (como ao executar no RHEL), o acesso ao libldap é sincronizado, incorrendo em alguns custos de desempenho/latência.

Para binários do MongoDB 4.2 Enterprise vinculados ao libldap_r, não há alteração no comportamento de versões anteriores do MongoDB.

Aviso

O MongoDB Enterprise para Windows não suporta ligação via saslauthd.

  • Os servidores Linux MongoDB suportam ligação a um servidor LDAP através do daemon saslauthd.

  • Utilize conexões seguras criptografadas ou confiáveis entre clientes e o servidor, como também, entre o saslauthd e o servidor LDAP. O servidor LDAP utiliza o mecanismo SASL PLAIN, enviando e recebendo dados em texto sem formatação. Você deve usar apenas um canal confiável, como uma VPN, uma conexão criptografada com TLS/SSL ou uma rede cabeada confiável.

O suporte LDAP para autenticação de usuários requer a configuração adequada do processo do daemon saslauthd, bem como do servidor MongoDB.

1

Em sistemas que configuram o saslauthd com o arquivo /etc/sysconfig/saslauthd, como Red Hat Enterprise Linux, Fedora, CentOS e Amazon Linux AMI, configure o mecanismo MECH para ldap:

MECH=ldap

Em sistemas que configuram o saslauthd com o arquivo /etc/default/saslauthd, como Ubuntu, configure a opção MECHANISMS para ldap:

MECHANISMS="ldap"
2

Em certas distribuições do Linux, o saslauthd começa com o cache de credenciais de autenticação habilitadas. Até que seja reiniciado ou até que o cache expire, saslauthd não entrará em contato com o servidor LDAP para autenticar novamente os usuários em seu cache de autenticação. Isso permite que saslauthd autentique com êxito os usuários em seu cache, mesmo que o servidor LDAP esteja inativo ou se as credenciais dos usuários armazenados em cache forem revogadas.

Para definir o tempo de expiração (em segundos) para o cache de autenticação, consulte a opção -t de saslauthd.

3

Se o saslauthd.conf arquivo não existir, crie-o. O saslauthd.conf arquivo geralmente reside na pasta /etc . Se especificar um caminho de arquivo diferente, consulte a opção -O de saslauthd.

Para utilizar com ActiveDirectory, inicie o saslauthd com as seguintes opções de configuração definidas no arquivo saslauthd.conf:

ldap_servers: <ldap uri>
ldap_use_sasl: yes
ldap_mech: DIGEST-MD5
ldap_auth_method: fastbind

Para <ldap uri>, especifique o uri do servidor ldap. Por exemplo, ldap_servers: ldaps://ad.example.net.

Para mais informações sobre configuração saslauthd do , consulte http://www.openldap.org/doc/admin24/guide.html#Configuringsaslauthd.

4

Utilize o utilitário testsaslauthd para testar a configuração do saslauthd. Por exemplo:

testsaslauthd -u testuser -p testpassword -f /var/run/saslauthd/mux
  • 0: OK "Success" indica autenticação bem-sucedida.

  • 0: NO "authentication failed" indica um nome de usuário, senha ou erro de configuração.

Modifique o caminho do arquivo em relação à localização do diretório saslauthd no sistema operacional do host.

Importante

O diretório pai do arquivo de soquete de domínio Unix do saslauthd especificado para security.sasl.saslauthdSocketPath ou --setParameter saslauthdPath deve conceder permissões de leitura e execução (r-x) para:

  • O usuário iniciando o mongod ou mongos, ou

  • Um grupo ao qual esse usuário pertence.

O mongod ou mongos não pode autenticar com sucesso via saslauthd sem a permissão especificada no diretório saslauthd e seu conteúdo.

1

Adicione o usuário ao banco de dados do $external no MongoDB. Para especificar os privilégios do usuário, atribua funções ao usuário.

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.

Por exemplo, o seguinte adiciona um usuário com acesso somente leitura ao banco de dados do records.

db.getSiblingDB("$external").createUser(
{
user : <username>,
roles: [ { role: "read", db: "records" } ]
}
)

Adicione entidades adicionais conforme necessário. Para obter mais informações sobre como criar e gerenciar usuários, consulte Comandos de gerenciamento de usuários.

2

Para configurar o Servidor MongoDB para usar a instância do saslauthd para autenticação proxy, inclua as seguintes opções ao iniciar o mongod:

Se você utilizar a opção authorization para impor a autenticação, você precisará de privilégios para criar um usuário.

Para caminho de soquete do /<some>/<path>/saslauthd, configure o saslauthdPath para /<some>/<path>/saslauthd/mux, como no seguinte exemplo de linha de comando:

mongod --auth --setParameter saslauthdPath=/<some>/<path>/saslauthd/mux --setParameter authenticationMechanisms=PLAIN

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implementação ou se os membros da implementação forem executados em hosts diferentes, especifique o --bind_ip.

Ou se estiver usando um arquivo de configuração no formato YAML, especifique as seguintes configurações no arquivo:

security:
authorization: enabled
setParameter:
saslauthdPath: /<some>/<path>/saslauthd/mux
authenticationMechanisms: PLAIN

Ou, se estiver usando o formato de arquivo de configuração mais antigo:

auth=true
setParameter=saslauthdPath=/<some>/<path>/saslauthd/mux
setParameter=authenticationMechanisms=PLAIN

Para usar o caminho de soquete de domínio Unix padrão, defina o saslauthdPath para a string vazia "", como no exemplo de linha de comando a seguir:

mongod --auth --setParameter saslauthdPath="" --setParameter authenticationMechanisms=PLAIN

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implementação ou se os membros da implementação forem executados em hosts diferentes, especifique o --bind_ip.

Ou se estiver usando um arquivo de configuração no formato YAML, especifique as seguintes configurações no arquivo:

security:
authorization: enabled
setParameter:
saslauthdPath: ""
authenticationMechanisms: PLAIN

Ou, se estiver usando o formato de arquivo de configuração mais antigo:

auth=true
setParameter=saslauthdPath=""
setParameter=authenticationMechanisms=PLAIN

Inclua opções adicionais, conforme necessário, para sua configuração. Por exemplo, se você deseja que clientes remotos se conectem à sua implementação ou se os membros da implementação forem executados em hosts diferentes, especifique a configuração net.bindIp .

3

Você pode autenticar a partir da linha de comando durante a conexão ou conectar primeiro e então autenticar utilizando o método db.auth().

O servidor encaminha a senha em texto sem formatação. Em geral, use apenas em um canal confiável (VPN, TLS/SSL, rede cabeada confiável). Consulte Considerações.

← Autenticação de proxy LDAP