Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / / /

Use o certificado x.509 para autenticação de associação com o MongoDB autogerenciado

Nesta página

  • Certificado de Membro x.509
  • Configurar conjunto de réplicas/cluster fragmentado
  • Informações adicionais

O MongoDB é compatível com a autenticação de certificado x.509 para uso com uma conexão TLS/SSL segura. Os membros do cluster fragmentado e os membros do conjunto de réplicas podem usar certificados x.509 para verificar sua associação ao cluster ou ao conjunto de réplicas em vez de usar arquivos de chaves. A autenticação da associação é um processo interno.

Observação

O MongoDB desabilita o suporte para criptografia TLS 1.0 em sistemas em que o TLS 1.1+ está disponível.

Habilitar a autenticação interna também habilita o Controle de Acesso Baseado em Função em Implantações Autogerenciadas. Os clientes devem se autenticar como um usuário para conectar e executar operações no sistema.

Importante

Uma descrição completa dos certificados TLS/SSL, PKI (Public Key Infrastructure), em particular os certificados x.509, e da autoridade de certificação está além do escopo deste documento. Este tutorial pressupõe conhecimento prévio de TLS/SSL, bem como acesso a certificados x.509 válidos.

Observação

Você deve ter certificados x.509 válidos.

Se você especificar --tlsAllowInvalidCertificates ou net.tls.allowInvalidCertificates: true, um certificado inválido será suficiente apenas para estabelecer uma conexão TLS, mas será insuficiente para a autenticação.

Use certificados de membro para verificar a associação a um cluster fragmentado ou a um conjunto de réplicas. Os caminhos do arquivo de certificado do nó são configurados com as opções net.tls.clusterFile e net.tls.certificateKeyFile. Os nós têm os seguintes requisitos de configuração:

  • A configuração do membro do cluster deve especificar um valor não vazio para pelo menos um dos atributos utilizados para autenticação. Por padrão, o MongoDB aceita:

    • a Organização (O)

    • a Unidade Organizacional (OU)

    • o componente de domínio (DC)

    Você pode especificar atributos alternativos para utilizar para autenticação configurando net.tls.clusterAuthX509.extensionValue.

  • A configuração do membro do cluster deve incluir o mesmo net.tls.clusterAuthX509.attributes e utilizar valores correspondentes. A ordem dos atributos não importa. O exemplo a seguir define O e OU, mas não DC:

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

Observação

Se você desabilitar o parâmetro enforceUserClusterSeparation , os seguintes comportamentos se aplicarão:

  • A verificação O/OU/DC estará desativada se clusterAuthMode estiver keyFile no seu arquivo de configuração. Isto permite que clientes que possuem certificados de membro se autentiquem como usuários armazenados no banco de dados $external .

  • O servidor não iniciará se clusterAuthMode não estiver keyFile em seu arquivo de configuração.

Se você definir o parâmetro enforceUserClusterSeparation como false, o servidor não fará distinção entre certificados de cliente, que os aplicativos usam para autenticar, e certificados intra-cluster, que têm acesso privilegiado. Isso não terá efeito se o seu clusterAuthMode for keyFile. No entanto, se o seu clusterAuthMode for x509, os certificados de usuário que usam o esquema permitido serão confundidos com certificados de cluster e concedidos acesso privilegiado.

Seus certificados existentes receberão privilégios internos se você fizer o seguinte:

  1. Crie um usuário, com um nome permitido por este parâmetro.

  2. Configure o parâmetro enforceUserClusterSeparation para false.

  3. Defina clusterAuthMode como x509.

Você não deve atualizar de keyFile para x509 sem validar que removeu usuários com privilégios elevados que o sinalizador enforceUserClusterSeparation lhe permitido criar.

Para configurar o parâmetro enforceUserClusterSeparation para false, execute o seguinte comando durante a inicialização:

mongod --setParameter enforceUserClusterSeparation=false

Os certificados têm os seguintes requisitos:

  • Uma única CA (Certificate Authority, autoridade de certificação) deve emitir todos os certificados x.509 para os membros de um cluster fragmentado ou de um conjunto de réplicas.

  • Pelo menos uma das entradas de nome alternativo do assunto (SAN) deve corresponder ao nome de host do servidor usado por outros membros do cluster. Ao comparar SANs, o MongoDB pode comparar nomes DNS ou endereços IP.

    Se você não especificar subjectAltName, o MongoDB compara o nome comum (CN). No entanto, esse uso de CN ficou obsoleto de acordo com RFC2818

  • Se o certificado utilizado como certificateKeyFile incluir extendedKeyUsage, o valor deverá incluir clientAuth ("Autenticação de cliente Web TLS") e serverAuth ("Autenticação de servidor Web TLS").

    extendedKeyUsage = clientAuth, serverAuth
  • Se o certificado utilizado como clusterFile incluir extendedKeyUsage, o valor deverá incluir clientAuth.

    extendedKeyUsage = clientAuth

Fora dos procedimentos de atualização contínua, cada componente de um conjunto de réplicas ou cluster fragmentado deve usar a mesma configuração --clusterAuthMode para garantir que possa se conectar com segurança a todos os outros componentes do sistema.

Para sistemas do conjunto de réplicas, isto inclui todos os membros do mongod do conjunto de réplicas.

Para sistemas de cluster fragmentado, isto inclui todas as instâncias do mongod ou mongos.

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.

Observação

Os procedimentos nesta seção usam as configurações/opções do tls. Para procedimentos usando os aliases ssl obsoletos, consulte Usar opções de linha de comando (ssl).

As configurações/opções tls oferecem funcionalidade idêntica à das opções ssl, pois o MongoDB sempre foi compatível com o TLS 1.0 e posterior.

mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --tlsCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)>

Importante

Para usar a autenticação x.509, --tlsCAFile ou net.tls.CAFile deve-se especificar a menos que você esteja usando --tlsCertificateSelector ou --net.tls.certificateSelector.

Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica. Para

security:
clusterAuthMode: x509
net:
tls:
mode: requireTLS
certificateKeyFile: <path to its TLS/SSL certificate and key file>
CAFile: <path to root CA PEM file to verify received certificate>
clusterFile: <path to its certificate key file for membership authentication>
bindIp: localhost,<hostname(s)|ip address(es)>

Importante

Para usar a autenticação x.509, --tlsCAFile ou net.tls.CAFile deve-se especificar a menos que você esteja usando --tlsCertificateSelector ou --net.tls.certificateSelector.

Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.

Para obter mais informações, consulte Configurar mongod e mongos para TLS/SSL.

Observação

Os procedimentos nesta seção usam as configurações/opção de ssl preteridas. Para procedimentos que usam aliases tls , consulte Usar opções de linha de comando (tls).

As configurações/opções tls oferecem funcionalidade idêntica à das opções ssl, pois o MongoDB sempre foi compatível com o TLS 1.0 e posterior.

Para especificar o certificado x.509 para autenticação interna de nós do cluster, acrescente as opções adicionais TLS/SSL --clusterAuthMode e --sslClusterFile, como no exemplo a seguir para um nó de um conjunto de réplicas:

mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)>

Importante

Para usar a autenticação x.509, --tlsCAFile ou net.tls.CAFile deve-se especificar a menos que você esteja usando --tlsCertificateSelector ou --net.tls.certificateSelector.

Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.

security:
clusterAuthMode: x509
net:
ssl:
mode: requireSSL
PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
CAFile: <path to root CA PEM file>
clusterFile: <path to x.509 membership certificate and key PEM file>
bindIp: localhost,<hostname(s)|ip address(es)>

Importante

Para usar a autenticação x.509, --tlsCAFile ou net.tls.CAFile deve-se especificar a menos que você esteja usando --tlsCertificateSelector ou --net.tls.certificateSelector.

Inclua opções adicionais, TLS/SSL ou de outra forma, que sejam necessárias para sua configuração específica.

Para obter mais informações, consulte Configurar mongod e mongos para TLS/SSL.

Para atualizar da autenticação interna do keyfile para x.509 autenticação interna, consulte Atualizar o MongoDB autogerenciado da autenticação de keyfile para x. Autenticação do 509 .

Para executar uma atualização contínua dos certificados para novos certificados com DN diferentes, consulte Atualização contínua de x.509 Certificados que contêm novo DN em clusters autogerenciados.

Voltar

Girar chaves de cluster fragmentado