Autenticação segura do cliente com LDAP
Nesta página
- Considerações
- Pré-requisitos gerais
- Configurar autenticação de cliente LDAP para um conjunto de réplicas
- Copie o recursodefinir de exemplo .
- Cole a seção de exemplo copiada no recurso de conjunto de réplicas existente.
- Configure as configurações LDAP para seu recurso de conjunto de réplica .
- Configure as configurações LDAP para o MongoDB Agent.
- Salve o arquivo de configuração do conjunto de réplicas .
- Aplique suas alterações à implantação do conjunto de réplicas .
- Monitore o status da sua implementação.
- Configurar Autenticação de Cliente LDAP para um Cluster Fragmentado
- Copie o recurso agrupamento compartilhado da amostra.
- Cole a seção de exemplo copiada no recurso do cluster fragmentado existente.
- Configure as configurações LDAP para seu recurso de agrupamento compartilhado .
- Configure as configurações LDAP para o MongoDB Agent.
- Salve seu arquivo de configuração do cluster fragmentado .
- Aplique suas alterações à sua implantação de cluster fragmentado .
- Monitore o status da sua implementação.
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.
Considerações
Para configurar o LDAP em CustomResourceDefinitions, use os parâmetros na
spec.security.authentication.ldap
e outras configurações LDAP de segurança específicas para o MongoDB Agent, a partir da especificação de recursos do MongoDB do Kubernetes Operator. Os procedimentos nesta seção descrevem as configurações necessárias e fornecem exemplos de configuração LDAP.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.
Pré-requisitos gerais
Antes de configurar a autenticação LDAP para seus MongoDB deployments, conclua as seguintes tarefas:
Certifique-se de distribuir o recurso de reconhecimento de data center MongoDB Enterprise. Os bancos de dados MongoDB Community não oferecem suporte à autenticação LDAP.
Implemente o conjunto de réplicas ou implemente o cluster fragmentado cuja autenticação de cliente você deseja proteger com LDAP.
Configurar autenticação de cliente LDAP para um conjunto de réplicas
Copie o recurso definir de exemplo.
Altere as configurações desse arquivo YAML para corresponder à configuração desejada do definir .
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "4.2.2-ent" 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 ...
Cole a seção de exemplo copiada no recurso de conjunto de réplicas existente.
Abra seu editor de texto preferido e cole o objeto especificação no final do seu arquivo de recurso na spec
seção .
Configure as configurações LDAP para seu recurso de conjunto de réplica.
Para habilitar o LDAP em seu sistema, defina as seguintes configurações em seu objeto Kubernetes:
Chave | Tipo e necessidade | Descrição | Exemplo |
---|---|---|---|
spec.security | boolean, required | Configure para true para habilitar a autenticação LDAP. | true |
spec.security | string, required | Especifique o nome diferenciado LDAP ao qual o MongoDB se liga ao conectar ao servidor LDAP. | cn=admin,dc=example,dc=org |
spec.security | string, required | Especifique o nome do segredo que contém a senha do LDAP Bind Distinguished Name com a qual o MongoDB se liga ao conectar a um servidor LDAP. | <secret-name> |
spec.security | 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> |
spec.security | string, optional | Adicione o nome do campo que armazena o CA que valida o certificado TLS do servidor LDAP. | <configmap-key> |
spec.security | 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> |
spec.security | 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 |
spec.security | string, required | Especifique o mapeamento que mapeia o nome de usuário fornecido para 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"> |
spec.security | 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.
Configure as configurações LDAP para o MongoDB Agent.
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
Salve o arquivo de configuração do conjunto de réplicas.
Aplique suas alterações à implantação do conjunto de réplicas.
Invoque o seguinte comando do Kubernetes para atualizar seu conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Monitore o status da sua implementação.
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.
Configurar Autenticação de Cliente LDAP para um Cluster Fragmentado
Copie o recurso cluster fragmentado da amostra.
Altere as configurações desse arquivo YAML para corresponder à configuração de cluster fragmentado desejado.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "4.2.2-ent" 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 ...
Cole a seção de exemplo copiada no recurso do cluster fragmentado existente.
Abra seu editor de texto preferido e cole o objeto especificação no final do seu arquivo de recurso na spec
seção .
Configure as configurações LDAP para seu cluster fragmentado .
Para habilitar o LDAP em seu sistema, defina as seguintes configurações em seu objeto Kubernetes:
Chave | Tipo e necessidade | Descrição | Exemplo |
---|---|---|---|
spec.security | boolean, required | Configure para true para habilitar a autenticação LDAP. | true |
spec.security | string, required | Especifique o nome diferenciado LDAP ao qual o MongoDB se liga ao conectar ao servidor LDAP. | cn=admin,dc=example,dc=org |
spec.security | string, required | Especifique o nome do segredo que contém a senha do LDAP Bind Distinguished Name com a qual o MongoDB se liga ao conectar a um servidor LDAP. | <secret-name> |
spec.security | 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> |
spec.security | string, optional | Adicione o nome do campo que armazena o CA que valida o certificado TLS do servidor LDAP. | <configmap-key> |
spec.security | 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> |
spec.security | 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 |
spec.security | string, required | Especifique o mapeamento que mapeia o nome de usuário fornecido para 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"> |
spec.security | 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.
Configure as configurações LDAP para o MongoDB Agent.
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
Salve seu arquivo de configuração do cluster fragmentado .
Aplique suas alterações à sua implantação de cluster fragmentado .
Invoque o seguinte comando do Kubernetes para atualizar seu cluster fragmentado:
kubectl apply -f <sharded-cluster-conf>.yaml
Monitore o status da sua implementação.
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.