Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar Kerberos e autorização do Active Directory

MongoDB Enterprise supports querying an LDAP server for the LDAP groups to which an authenticated user belongs. MongoDB maps the LDAP distinguished names (DN) of each returned group to roles on the admin database. MongoDB authorizes the user based on the mapped roles and their associated privileges. See LDAP Authorization for more information.

O MongoDB Enterprise permite a autenticação usando um serviço Kerberos. O Kerberos é um protocolo de autenticação padrão do setor para grandes sistemas de cliente/servidor.

Este tutorial descreve como configurar o MongoDB para executar a autenticação por meio de um servidor Kerberos e a autorização por meio de um servidor Active Directory (AD) pelas bibliotecas da plataforma.

Importante

Familiarize-se completamente com os seguintes assuntos antes de prosseguir:

Uma descrição completa do AD está além do escopo deste tutorial. Este tutorial pressupõe conhecimento prévio do AD.

O MongoDB oferece suporte ao uso de mecanismos SASL para vinculação entre o MongoDB Server e o AD. Uma descrição completa do SASL, mecanismos do SASL ou os requisitos específicos de configuração do AD para um determinado mecanismo do SASL estão além do escopo deste tutorial. Este tutorial pressupõe conhecimento prévio do SASL e do assunto relacionado.

A instalação e a configuração de uma implantação do Kerberos estão além do escopo deste documento. Este tutorial pressupõe que você tenha configurado uma entidade de serviço Kerberos para cada instância mongod e mongos em sua implantação do MongoDB e que tenha um arquivo keytab válido para cada instância mongod e mongos.

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.

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.

Este tutorial explica como configurar o MongoDB para autenticação Kerberos e autorização do AD.

Para executar esse procedimento em seu próprio MongoDB Server, você deve modificar os procedimentos fornecidos em relação à sua infraestrutura específica, especialmente as configurações do Kerberos, a construção de query do AD ou o gerenciamento de usuários.

Por padrão, o MongoDB cria uma conexão TLS/SSL ao se vincular ao servidor AD. Isso requer a configuração do host do servidor MongoDB para ter acesso aos certificados de Autoridade de Certificação (CA) do servidor AD.

Este tutorial fornece instruções para as configurações de host necessárias.

Este tutorial pressupõe que você tenha acesso aos certificados CA do servidor AD e possa criar uma cópia dos certificados no servidor MongoDB.

Este tutorial usa os seguintes objeto de exemplo do AD como base para as query, configurações e saída fornecidas. Cada objeto mostra apenas um subconjunto dos possíveis atributos.

dn:CN=bob,CN=Users,DC=marketing,DC=example,DC=com
userPrincipalName: bob@marketing.example.com
memberOf: CN=marketing,CN=Users,DC=example,DC=com
dn:CN=alice,CN=Users,DC=engineering,DC=example,DC=com
userPrincipalName: alice@engineering.example.com
memberOf: CN=web,CN=Users,DC=example,DC=com
memberOf: CN=PrimaryApplication,CN=Users,DC=example,DC=com
dn:CN=sam,CN=Users,DC=dba,DC=example,DC=com
userPrincipalName: sam@dba.example.com
memberOf: CN=dba,CN=Users,DC=example,DC=com
memberOf: CN=PrimaryApplication,CN=Users,DC=example,DC=com
dn:CN=joe,CN=Users,DC=analytics,DC=example,DC=com
userPrincipalName: joe@analytics.example.com
memberof: CN=marketing,CN=Users,DC=example,DC=com
dn:CN=marketing,CN=Users,DC=example,DC=com
member:CN=bob,CN=Users,DC=marketing,DC=example,DC=com
member:CN=joe,CN=Users,DC=analytics,DC=example,DC=com
dn:CN=engineering,CN=Users,DC=example,DC=com
member:CN=web,CN=Users,DC=example,DC=com
member:CN=dba,CN=users,DC=example,DC=com
dn:CN=web,CN=Users,DC=example,DC=com
member:CN=alice,CN=Users,DC=engineering,DC=example,DC=com
dn:CN=dba,CN=Users,DC=example,DC=com
member:CN=sam,CN=Users,DC=dba,DC=example,DC=com
dn:CN=PrimaryApplication,CN=Users,DC=example,DC=com
member:CN=sam,CN=Users,DC=dba,DC=example,DC=com
member:CN=alice,CN=Users,DC=engineering,DC=example,DC=com

This tutorial uses a username and password for performing queries on the AD server. The credentials provided must have sufficient privileges on the AD server for supporting queries related to security.ldap.userToDNMapping or security.ldap.authz.queryTemplate.

A autorização LDAP do MongoDB requer que cada mongod no conjunto de réplicas esteja ativado pelo menos no MongoDB 3.4.0 ou mais tarde.

A autorização LDAP do MongoDB exige que todos os mongod e mongos do cluster fragmentado sejam pelo menos do MongoDB 3.4.0 ou posterior.

1

To connect to the AD (AD) server via TLS/SSL, the mongod or mongos require access to the AD server's Certificate Authority (CA) certificate.

On Linux, specify the AD server's CA certificates via the TLS_CACERT or TLS_CACERTDIR option in the ldap.conf file.

O gerenciador de pacotes da sua plataforma cria o arquivo ldap.conf ao instalar a dependência libldap do MongoDB Enterprise. Para obter a documentação completa do arquivo de configuração ou das opções indicadas, consulte ldap.conf.

No Microsoft Windows, carregue os certificados de Autoridade de Certificação (CA) do servidor AD com a ferramenta de gerenciamento de credenciais da plataforma. A ferramenta exata de gerenciamento de credenciais depende da versão do Windows . Para usar a ferramenta, consulte a documentação referente à sua versão do Windows.

Se mongod ou mongos não puderem acessar os arquivos AD CA, não poderão criar conexões TLS/SSL com o servidor Active Directory.

Opcional: defina security.ldap.transportSecurity como none para desabilitar TLS/SSL.

Aviso

Definir transportSecurity como none transmite informações de texto simples, inclusive credenciais de usuário, entre o MongoDB e o servidor AD.

2

Para servidores MongoDB em execução no sistema operacional Windows, você deve usar setspn.exe para atribuir o nome principal de serviço (SPN) à conta que executa o serviço MongoDB.

setspn.exe -S <service>/<fully qualified domain name> <service account name>

Exemplo

Por exemplo, se mongod for executado como um serviço chamado mongodb no mongodbserver.example.com com o nome da conta de serviço mongodb_dev@example.com, o comando para atribuir o SPN será assim:

setspn.exe -S mongodb/mongodbserver.example.com mongodb_dev@example.com

Observação

O servidor doWindows 2003 não suporta setspn.exe -S. Para obter a documentação completa sobre setspn.exe, consulte setspn.exe.

3

Para servidores MongoDB em execução na plataforma Linux, você deve garantir que o servidor tenha uma cópia do arquivo keytab específico para a instância do MongoDB em execução nesse servidor.

Você deve conceder ao usuário Linux que está executando o serviço MongoDB permissões de leitura no arquivo keytab. Anote o caminho completo do local do arquivo keytab.

4

Connect to the MongoDB server using mongosh using the --host and --port options.

mongosh --host <hostname> --port <port>

If your MongoDB server currently enforces authentication, you must authenticate to the admin database as a user with role management privileges, such as those provided by userAdmin or userAdminAnyDatabase. Include the appropriate --authenticationMechanism for the MongoDB server's configured authentication mechanism.

mongosh --host <hostname> --port <port> --username <user> --password <pass> --authenticationDatabase="admin" --authenticationMechanism="<mechanism>"

Observação

For Windows MongoDB deployments, you should replace mongosh with mongo.exe

5

To manage MongoDB users using AD, you need to create at least one role on the admin database that can create and manage roles, such as those provided by userAdmin or userAdminAnyDatabase.

O nome da função deve corresponder exatamente ao Nome Distinto de um grupo do AD. O grupo deve ter pelo menos um usuário do AD como membro.

Considerando os grupos disponíveis do Active Directory, a seguinte operação:

  • Creates a role named for the AD group CN=dba,CN=Users,DC=example,DC=com, and

  • Atribui a ele a função userAdminAnyDatabase no banco de dados admin.

var admin = db.getSiblingDB("admin")
admin.createRole(
{
role: "CN=dba,CN=Users,DC=example,DC=com",
privileges: [],
roles: [ "userAdminAnyDatabase" ]
}
)

Outra opção é conceder a função userAdmin para cada banco de dados no qual o usuário deva ter privilégios administrativos de usuário. Essas funções fornecem os privilégios necessários para a criação e o gerenciamento de funções.

Importante

Considere aplicar o privilégio mínimo ao configurar funções do MongoDB, grupos do AD ou associação a grupos.

6

Um arquivo de configuração do MongoDB é um arquivo YAML de texto simples com a extensão de arquivo .conf.

  • Se você estiver atualizando uma implantação do MongoDB, copie o arquivo de configuração atual e trabalhe a partir dessa cópia.

  • (Somente Linux) Se essa for uma nova implantação e você tiver usado o gerenciador de pacotes da sua plataforma para instalar o MongoDB Enterprise, a instalação conterá o arquivo de configuração padrão /etc/mongod.conf. Use esse arquivo de configuração padrão ou faça uma cópia desse arquivo para trabalhar.

  • Se esse arquivo não existir, crie um arquivo vazio com a extensão .conf e trabalhe a partir desse novo arquivo de configuração.

7

In the MongoDB configuration file, set security.ldap.servers to the host and port of the AD server. If your AD infrastructure includes multiple AD servers for the purpose of replication, specify the host and port of the servers as a comma-delimited list to security.ldap.servers.

Exemplo

To connect to an AD server located at activedirectory.example.net, include the following in the configuration file:

security:
ldap:
servers: "activedirectory.example.net"

MongoDB deve se vincular ao servidor AD para realizar query. Por padrão, o MongoDB usa o mecanismo de autenticação simples para se vincular ao servidor AD .

Alternatively, you can configure the following settings in the configuration file to bind to the AD server using SASL:

Este tutorial utiliza o mecanismo de autenticação LDAP simple padrão.

8

No arquivo de configuração do MongoDB, defina security.authorization como enabled e setParameter authenticationMechanisms como GSSAPI

Para habilitar a autenticação via Kerberos, inclua o seguinte no arquivo de configuração:

security:
authorization: "enabled"
setParameter:
authenticationMechanisms: "GSSAPI"
9

No arquivo de configuração do MongoDB , defina security.ldap.authz.queryTemplate como um modelo de URL de query LDAP formatado 4516 em RFC.

No modelo, você pode usar:

  • {USER} espaço reservado para substituir o nome de usuário autenticado na URL de consulta do LDAP.

  • {PROVIDED_USER} espaço reservado para substituir o nome de usuário fornecido, ou seja, antes da autenticação ou transformação LDAP, na query LDAP.

Crie o modelo de query para recuperar os grupos do usuário.

Observação

Uma descrição completa de queries RFC4515, RFC4516 ou AD está fora do escopo deste tutorial. O queryTemplate fornecido neste tutorial é apenas um exemplo e pode não ser aplicável à sua implantação específica do AD.

Exemplo

The following query template returns any groups that list {USER} as a member, following recursive group memberships. This LDAP query assumes that group objects track user membership by storing full user Distinguished Name (DN) using the member attribute. The query includes the AD specific matching rule OID 1.2.840.113556.1.4.1941 for LDAP_MATCHING_RULE_IN_CHAIN. This matching rule is an AD specific extension to LDAP search filters.

security:
ldap:
authz:
queryTemplate:
"DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"

Utilizando a consulta, o MongoDB substitui o {USER} pelo nome de usuário autenticado para consultar o servidor LDAP.

For example, a user authenticates as CN=sam,CN=Users,DC=dba,DC=example,DC=com. MongoDB creates an LDAP query based on the queryTemplate, substituting the {USER} token with the authenticated username. The Active Directory server performs a recursive group lookup for any group that either directly or transitively lists the user as a member. Based on the Active Directory groups, the AD server returns CN=dba,CN=Users,DC=example,DC=com and CN=engineering,CN=Users,DC=example,DC=com.

MongoDB maps each returned group DN to a role on the admin database. For each mapped group DN, if there is an existing role on the admin database whose name exactly matches the DN, MongoDB grants the user the roles and privileges assigned to that role.

The matching rule LDAP_MATCHING_RULE_IN_CHAIN requires providing the full DN of the authenticating user. Since Kerberos requires authenticating with a user's userPrincipalName, you must transform the incoming usernames into DNs using security.ldap.userToDNMapping. The next step provides guidance on transforming incoming usernames to support the queryTemplate.

10

In the MongoDB configuration file, set userToDNMapping to transform the authenticating user's provided username into an AD DN to support the queryTemplate.

Exemplo

A seguinte configuração userToDNMapping utiliza o filtro de expressão regular do match para captar o nome de usuário fornecido. O MongoDB insere o nome de usuário captado no modelo de query ldapQuery antes de executar a query.

security:
ldap:
userToDNMapping:
'[
{
match : "(.+)",
ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})"
}
]'

Você deve modificar a configuração de amostra fornecida para corresponder à sua implantação. Por exemplo, o DN base ldapQuery deve corresponder ao DN base que contém suas entidades de usuário. Outras modificações podem ser necessárias para dar suporte à implantação do AD.

Exemplo

Um usuário se autentica como alice@ENGINEERING.EXAMPLE.COM. O MongoDB primeiro aplica quaisquer transformações especificadas em userToDNMapping. Com base na configuração fornecida, o MongoDB capta o nome de usuário no estágio match e executa uma consulta LDAP:

DC=example,DC=com??sub?(userPrincipalName=alice@ENGINEERING.EXAMPLE.COM)

Based on the configured Active Directory users, the AD server should return CN=alice,CN=Users,DC=engineering,DC=example,DC=com.

Em seguida, o MongoDB executa a consulta LDAP configurada em queryTemplate, substituindo o token {USER} pelo nome de usuário transformado CN=alice,CN=Users,DC=engineering,DC=example,DC=com.

Importante

Se você utilizar userToDNMapping substitution o parâmetro de para transformar o nome do grupo, o resultado da substituição deverá ser uma string escapada 4514 RFC.

11

MongoDB requires credentials for performing queries on the AD server.

Defina as seguintes configurações no arquivo de configuração:

security:
ldap:
bind:
queryUser: "mongodbadmin@dba.example.com"
queryPassword: "secret123"

On Windows MongoDB servers, you can set security.ldap.bind.useOSDefaults to true to use the credentials of the OS user instead of queryUser and queryPassword.

O queryUser deve ter permissão para executar todas as consultas LDAP em nome do MongoDB.

12

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 a configuração net.bindIp.

13

Inicie o servidor do MongoDB com a opção --config, especificando o caminho para o arquivo de configuração criado durante esse procedimento. Se o servidor do MongoDB estiver em execução no momento, faça as devidas preparações para interromper o servidor.

Linux MongoDB Servers

No Linux, você deve especificar a variável ambiental KRB5_KTNAME, especificando o caminho para o arquivo keytab para o servidor MongoDB.

env KRB5_KTNAME <path-to-keytab> mongod --config <path-to-config-file>

Microsoft Windows MongoDB Servers

No Windows, você deve iniciar o servidor MongoDB como a conta principal de serviço, conforme configurado anteriormente no procedimento:

mongod.exe --config <path-to-config-file>
14

Conecte-se ao servidor do MongoDB, autenticando-se como um usuário cuja associação de grupo direta ou transitiva corresponda a uma função do MongoDB no banco de dados admin com userAdmin, userAdminAnyDatabase ou uma função personalizada com privilégio equivalentes.

Use mongosh to authenticate to the MongoDB server, set the following options:

Exemplo

Previously in this procedure, you configured the dn:CN=dba,CN=Users,DC=example,DC=com role on the admin database with the required permissions. This role corresponds to an AD group. Based on the configured AD users, you can authenticate as the user sam@dba.example.com and receive the required permissions.

mongosh --username sam@DBA.EXAMPLE.COM --password --authenticationMechanisms="GSSAPI" --authenticationDatabase "$external" --host <hostname> --port <port>

If you do not specify the password to the -p command-line option, mongosh prompts for the password.

Windows MongoDB deployments must use mongo.exe instead of mongosh.

Considerando os usuários do Active Directory configurados, o usuário se autentica com sucesso e recebe as devidas permissões.

Observação

If you want to authenticate as an existing non-$external user, set --authenticationMechanism to a SCRAM authentication mechanism (e.g. SCRAM-SHA-1 or SCRAM-SHA-256). This requires that the MongoDB server's setParameter authenticationMechanisms includes SCRAM-SHA-1 and/or SCRAM-SHA-256 as appropriate.

15

For each group on the AD server you wish to use for MongoDB authorization, you must create a matching role on the MongoDB server's admin database.

Exemplo

The following operation creates a role named after the AD group DN CN=PrimaryApplication,CN=Users,DC=example,DC=com, assigning roles and privileges appropriate to that group:

db.getSiblingDB("admin").createRole(
{
role: "CN=PrimaryApplication,CN=Users,DC=example,DC=com",
privileges: [],
roles: [
{ role: "readWrite", db: "PrimaryApplication" }
]
}
)

Given the configured Active Directory groups, MongoDB grants a user authenticating as either sam@DBA.EXAMPLE.COM or alice@ENGINEERING.EXAMPLE.COM the readWrite role on the PrimaryApplication database.

Observação

Para funções gerenciadas no banco de dados admin, você deve ser autenticado como um usuário com userAdmin no admin, userAdminAnyDatabase ou uma função personalizada com privilégio equivalentes.

16

Se estiver atualizando uma instalação existente com usuários configurados no banco de banco de dados do $external , você deverá atender os seguintes requisitos para cada usuário para garantir o acesso após configurar o MongoDB para autenticação Kerberos e autorização do AD :

  • O usuário tem um objeto de usuário correspondente no servidor AD .

  • O usuário tem associação nos grupos apropriados no servidor AD .

  • O MongoDB contém as funções no banco de dados admin nomeadas para os grupos AD do usuário, de forma que o usuário autorizado mantenha seus privilégios.

Exemplo

O seguinte usuário existe no banco de dados $external:

{
user : "joe@ANALYTICS.EXAMPLE.COM",
roles: [
{ role : "read", db : "web_analytics" },
{ role : "read", db : "PrimaryApplication" }
]
}

Assuming the user belongs to the AD group CN=marketing,CN=Users,DC=example,DC=com, the following operation creates a matching role with the appropriate privileges:

db.getSiblingDB("admin").createRole(
{
role: "CN=marketing,CN=Users,DC=example,DC=com",
privileges: [],
roles: [
{ role: "read", db: "web_analytics" }
{ role: "read", db: "PrimaryApplication" }
]
}
)

Com base no queryTemplate configurado, o MongoDB autoriza qualquer usuário que tenha associação direta ou transitiva no grupo CN=marketing,CN=Users,DC=example,DC=com a executar operações read no banco de dados web_analytics e PrimaryApplication.

Importante

Ao configurar uma função para um grupo do AD correspondente, lembre-se de que todos os usuários com associação a esse grupo podem receber as funções e privilégios atribuídos. Considere aplicar o privilégio mínimo ao configurar funções do MongoDB, grupos do AD ou associação a grupos.

Se você quiser continuar permitindo que usuários em bancos de dados que não são $external acessem o MongoDB, insira o mecanismo de autenticação SCRAM (por exemplo, SCRAM-SHA-1 e/ou SCRAM-SHA-256) na opção de configuração setParameter authenticationMechanisms.

setParameter:
authenticationMechanisms: "GSSAPI,SCRAM-SHA-1,SCRAM-SHA-256"

Como alternativa, faça a transição de usuários não$external para o AD seguindo o procedimento acima.

Esse procedimento produz o seguinte arquivo de configuração:

security:
authorization: "enabled"
ldap:
servers: activedirectory.example.net"
bind:
queryUser: "mongodbadmin@dba.example.com"
queryPassword: "secret123"
userToDNMapping:
'[
{
match: "(.+)"
ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})"
}
]'
authz:
queryTemplate: "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"
setParameter:
authenticationMechanisms: "GSSAPI"

Importante

A configuração de amostra fornecida requer modificação para corresponder ao esquema do AD , estrutura de diretório e configuração. Você também pode precisar de opções de arquivo de configuração adicionais para sua implantação.

Para obter mais informações sobre como configurar funções e privilégios, consulte:

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.