MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Configurando a autenticação do MongoDB-CR como padrão no MongoDB 3.x


Todos os usuários criados no MongoDB 3.x são criados com SCRAM-SHA1, que quebra a compatibilidade com as ferramentas que esperam o MongoDB-CR. Há uma lista de ferramentas e drivers que ainda não foram atualizados para suportar SCRAM-SHA1, como Robomongo e MongoVUE.

Em alguns casos, mesmo que a versão mais recente do driver/ORM esteja disponível, talvez você não esteja pronto para atualizar o driver devido a alguns problemas de compatibilidade.

O MongoDB suporta dois métodos de autenticação:
  1. MongoDB- CR (resposta ao desafio)
    Mecanismo para autenticar usuários com senhas. Mecanismo de autenticação padrão até 2.6.x. Consulte a documentação para obter mais detalhes.
  2. SCRAM-SHA1
    Este é um padrão IETF para mecanismos de resposta de desafio para autenticação de usuários com senhas. Este é o sistema mais novo e mais seguro. Não é compatível com o MongoDB-CR. Consulte a documentação para obter mais detalhes.

MongoDB CR é o sistema de autenticação legado. O MongoDB 3.X mudou o sistema de autenticação de usuário padrão para SCRAM-SHA1. Assim, quaisquer novos usuários criados no sistema são usuários SCRAM-SHA1. Como o SCRAM-SHA1 não é compatível com versões anteriores, ele interrompe a autenticação com todos os usuários usando o mecanismo MONGODB-CR.

No entanto, você pode querer usar o novo mecanismo de armazenamento WiredTiger que está disponível no MongoDB 3.x. Aqui estão as etapas para configurar o MONGODB-CR como o mecanismo de autenticação padrão no MongoDB 3.x, supondo que você esteja executando um conjunto de réplicas:
  1. Crie um cluster MongoDB 3.x.
  2. Parar todos os nós do conjunto de réplicas, exceto o principal.
  3. Desative a autenticação no primário e reinicie o nó. Fiz isso comentando as seguintes entradas no arquivo conf do MongoDB e reiniciando o servidor:
    #security:
    #  authorization: enabled
    #  keyFile: /var/lib/mongo/rskey
    #replication:
    #  replSetName: RS-rsname-0
    
  4. Conecte-se ao primário e altere a versão do esquema:
    use admin;
    var schema = db.system.version.findOne({"_id" : "authSchema"});
    schema.currentVersion = 3;
    db.system.version.save(schema)
    
  5. Desfaça as alterações no arquivo mongodb.conf na etapa 3 acima e reinicie o MongoDB.
  6. Reinicie o MongoDB nos outros nós do conjunto de réplicas e verifique se o conjunto de réplicas está íntegro. Feito isso, todos os usuários criados no sistema serão usuários do MongoDB-CR. Você pode validar isso executando o seguinte comando:
    db.system.users.find().pretty();
    

Observe, no entanto, que isso deve ser apenas uma solução temporária. A correção de longo prazo mais segura é atualizar seu servidor MongoDB para usar o modelo SCRAM-SHA1. Quando estiver pronto para atualizar, execute o script a seguir para atualizar a versão do esquema de seus usuários para SCRAM-SHA1:
db.getSiblingDB("admin").runCommand({authSchemaUpgrade});