Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Operador de Kubernetes empresarial
/ /

Autenticação segura do cliente com LDAP

O MongoDB Enterprise oferece suporte a:

  • Proxy de solicitações de autenticação para um serviço LDAP (Lightweight Directory Access Protocol).

  • Vinculação simples e SASL a servidores LDAP. O MongoDB Enterprise pode se vincular a um servidor LDAP via saslauthd ou por meio das bibliotecas do sistema operacional.

Para saber mais, consulte as seções Autenticação deLDAP LDAP na documentação do MongoDB Server .

Você pode usar o Kubernetes Operator para configurar o LDAP para autenticar seus aplicativos clientes que se conectam aos seus MongoDB deployments. Este guia descreve como configurar a autenticação LDAP de aplicativos clientes para suas implementações do MongoDB.

Observação

Você não pode proteger uma instância standalone do MongoDB em um cluster Kubernetes.

  • To configure LDAP in CustomResourceDefinitions, use the parameters under the spec.security.authentication.ldap and other security LDAP settings specific to the MongoDB Agent, from the Kubernetes Operator MongoDB resource specification. The procedures in this section describe the required settings and provide examples of LDAP configuration.

  • Para melhorar a segurança, considere implantar um conjunto de réplicas criptografadas por TLS ou um cluster fragmentado criptografado por TLS. A criptografia com TLS é opcional. Por padrão, o tráfego LDAP é enviado como texto simples. Isso significa que o nome de usuário e a senha estão expostos a riscos de rede. Muitos serviços de diretório modernos, como o Microsoft Active Directory, exigem conexões criptografadas. Considere usar LDAP sobre TLS/SSL para criptografar solicitações de autenticação em seus sistemas do Kubernetes Operator MongoDB.

Antes de configurar a autenticação LDAP para seus MongoDB deployments, conclua as seguintes tarefas:

1

Altere as configurações desse arquivo YAML para corresponder à configuração desejada do definir .

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "8.0.0"
9 opsManager:
10 configMapRef:
11 # Must match metadata.name in ConfigMap file
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 type: ReplicaSet
15 persistent: true
16 security:
17 tls:
18 ca: <custom-ca>
19 certsSecretPrefix: <prefix>
20...
2

Abra o editor de texto de sua preferência e cole a especificação do objeto no final do arquivo de recurso na spec seção.

3

Para habilitar o LDAP em seu sistema, defina as seguintes configurações em seu objeto Kubernetes:

Chave
Tipo e necessidade
Descrição
Exemplo
boolean,
required

Configure para true para habilitar a autenticação LDAP.

true

string,
required

Especifique o nome diferenciado LDAP ao qual o MongoDB se liga ao conectar ao servidor LDAP.

cn=admin,dc=example,dc=org

string,
required

Especifique o nome do segredo que contém a senha do LDAP Bind Distinguished Name com o qual o MongoDB se liga ao conectar a um servidor LDAP .

<secret-name>

string,
optional

Adicione o nome do ConfigMap que armazena a CA personalizada que você usou para assinar os certificados TLS da sua implantação.

<configmap-name>

string,
optional

Adicione o nome do campo que armazena o CA que valida o certificado TLS do servidor LDAP.

<configmap-key>

array of strings,
required

Specify the list of hostname:port combinations of one or more LDAP servers. Para cada servidor, use uma linha separada.

<example.com:636>

string,
optional

Configure para tls para utilizar LDAPS (LDAP sobre TLS). Leave blank if your LDAP server doesn't accept TLS. Você deve habilitar o TLS ao implantar o recurso do reconhecimento de data center para usar essa configuração.

tls

string,
required

Especifique o mapeamento que mapeia o nome de usuário fornecido para mongod ou mongos para autenticação em um Nome Distinto (DN) LDAP.

Para saber mais, consulte security.ldap.userToDNMapping e modelos de queryLDAP na documentação do MongoDB Server .

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">

string,
required

Configure para LDAP para habilitar a autenticação por LDAP.

LDAP

A configuração resultante pode ser semelhante ao exemplo a seguir:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

Para obter uma lista completa das configurações LDAP, consulte as configurações de segurança na especificação de recursos do MongoDB do Kubernetes Operator. Consulte também a configuração spec.security.authentication.agents.automationUserName para o MongoDB Agent user em seu Kubernetes Operator habilitado para LDAP.

4

Atualize o recurso do MongoDB com configurações de segurança específicas para o agente, a partir da especificação de recursos do MongoDB do Kubernetes Operator. A configuração resultante pode ser semelhante ao exemplo a seguir:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
6

Invoque o seguinte comando do Kubernetes para atualizar seu conjunto de réplicas:

kubectl apply -f <replica-set-conf>.yaml
7

Para verificar o status do seu recurso MongoDB, utilize o seguinte comando:

kubectl get mdb <resource-name> -o yaml -w

Com o sinalizador -w (inspeção) definido, quando a configuração muda, o resultado é atualizado imediatamente até que a fase de status atinja o estado Running . Para saber mais sobre os status de distribuição de recursos, consulte Solucionar problemas do operador Kubernetes.

1

Altere as configurações desse arquivo YAML para corresponder à configuração de cluster fragmentado desejado.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-sharded-cluster>
6spec:
7 shardCount: 2
8 mongodsPerShardCount: 3
9 mongosCount: 2
10 configServerCount: 3
11 version: "8.0.0"
12 opsManager:
13 configMapRef:
14 name: <configMap.metadata.name>
15 # Must match metadata.name in ConfigMap file
16 credentials: <mycredentials>
17 type: ShardedCluster
18 persistent: true
19 security:
20 tls:
21 ca: <custom-ca>
22 certsSecretPrefix: <prefix>
23...
2

Abra o editor de texto de sua preferência e cole a especificação do objeto no final do arquivo de recurso na spec seção.

3

Para habilitar o LDAP em seu sistema, defina as seguintes configurações em seu objeto Kubernetes:

Chave
Tipo e necessidade
Descrição
Exemplo
boolean,
required

Configure para true para habilitar a autenticação LDAP.

true

string,
required

Especifique o nome diferenciado LDAP ao qual o MongoDB se liga ao conectar ao servidor LDAP.

cn=admin,dc=example,dc=org

string,
required

Especifique o nome do segredo que contém a senha do LDAP Bind Distinguished Name com o qual o MongoDB se liga ao conectar a um servidor LDAP .

<secret-name>

string,
optional

Adicione o nome do ConfigMap que armazena a CA personalizada que você usou para assinar os certificados TLS da sua implantação.

<configmap-name>

string,
optional

Adicione o nome do campo que armazena o CA que valida o certificado TLS do servidor LDAP.

<configmap-key>

array of strings,
required

Specify the list of hostname:port combinations of one or more LDAP servers. Para cada servidor, use uma linha separada.

<example.com:636>

string,
optional

Configure para tls para utilizar LDAPS (LDAP sobre TLS). Leave blank if your LDAP server doesn't accept TLS. Você deve habilitar o TLS ao implantar o recurso do reconhecimento de data center para usar essa configuração.

tls

string,
required

Especifique o mapeamento que mapeia o nome de usuário fornecido para mongod ou mongos para autenticação em um Nome Distinto (DN) LDAP.

Para saber mais, consulte security.ldap.userToDNMapping e modelos de queryLDAP na documentação do MongoDB Server .

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">

string,
required

Configure para LDAP para habilitar a autenticação por LDAP.

LDAP

A configuração resultante pode ser semelhante ao exemplo a seguir:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

Para obter uma lista completa das configurações LDAP, consulte as configurações de segurança na especificação de recursos do MongoDB do Kubernetes Operator. Consulte também a configuração spec.security.authentication.agents.automationUserName para o MongoDB Agent user em seu Kubernetes Operator habilitado para LDAP.

4

Atualize o recurso do MongoDB com configurações de segurança específicas para o agente, a partir da especificação de recursos do MongoDB do Kubernetes Operator. A configuração resultante pode ser semelhante ao exemplo a seguir:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
5
6

Invoque o seguinte comando do Kubernetes para atualizar seu cluster fragmentado:

kubectl apply -f <sharded-cluster-conf>.yaml
7

Para verificar o status do seu recurso MongoDB, utilize o seguinte comando:

kubectl get mdb <resource-name> -o yaml -w

Com o sinalizador -w (inspeção) definido, quando a configuração muda, o resultado é atualizado imediatamente até que a fase de status atinja o estado Running . Para saber mais sobre os status de distribuição de recursos, consulte Solucionar problemas do operador Kubernetes.