Hackers estão se tornando mais sofisticados e sabem como explorar vulnerabilidades. Se você tem dados sensíveis em seu banco de dados MongoDB, é crucial levar a segurança a sério. Mas como fazer isso? Não se preocupe! Este tutorial tem tudo o que você precisa!
Neste tutorial, você aprenderá a proteger seus bancos de dados MongoDB e afastar hackers configurando medidas de segurança.
Continue lendo e comece a tomar controle da segurança do seu MongoDB!
Pré-requisitos
- Este tutorial será uma demonstração prática. Para acompanhar, certifique-se de ter o seguinte:
- MongoDB instalado em sua máquina Linux.
- A non-root user with
sudo
privileges.
Criando um Usuário Administrativo Dedicado
O MongoDB não possui nenhum sistema de autenticação integrado. Por padrão, qualquer pessoa com acesso ao banco de dados possui privilégios administrativos completos — muito perigoso! Como proteger seu banco de dados? Você irá criar um usuário com privilégios administrativos e restringir os bancos de dados para esse usuário administrativo.
Esse setup permite que você forneça um único ponto de acesso ao usuário com privilégios administrativos, ao mesmo tempo em que restringe o que cada usuário pode fazer dentro do banco de dados. Por exemplo, os desenvolvedores devem ter apenas acesso de leitura às bases de dados, enquanto os administradores podem criar e editar dados.
1. Abra seu terminal e execute o comando mongo
abaixo sem nenhum argumento. Este comando permite que você se conecte ao shell do MongoDB como o usuário admin padrão.
Este usuário admin é poderoso, pois possui acesso total de leitura/escrita a todas as bases de dados no servidor, e é melhor evitar o uso desse usuário para o trabalho diário.
Você receberá um aviso que diz O controle de acesso não está ativado…, como mostrado abaixo.
Este aviso indica que qualquer pessoa que possa acessar o servidor MongoDB pode realizar as ações desejadas com as bases de dados. Essas ações incluem, mas não estão limitadas a, excluir, descartar, atualizar bases de dados.
Esse aviso aparece porque você ainda não ativou o controle de acesso. Não se preocupe com isso, por enquanto. Você aprenderá como ativar o controle de acesso na próxima seção.

2. Em seguida, execute o comando show dbs
para mostrar todas as bases de dados no servidor, incluindo as bases de dados admin que um usuário normal não deveria ver.

3. Execute o comando use admin
abaixo para mudar para o banco de dados admin, uma vez que seu foco é criar um usuário administrativo dedicado. Este comando altera o contexto do banco de dados atual para usar o banco de dados admin, como mostrado abaixo.
O MongoDB utiliza o banco de dados admin para armazenar regras de controle de acesso e fornecer autenticação integrada, nomes de usuário e senha para os usuários e suas funções. Você não pode excluir ou renomear o banco de dados admin porque ele é essencial para a funcionalidade do banco de dados.

4. Agora, copie e cole o código abaixo no shell do mongo e pressione Enter. Este código cria um usuário chamado AdminATA
, com uma senha de LDWbPf6Fy9Ezs3Mv
, mas você pode usar credenciais diferentes, se preferir.
Este novo usuário tem acesso de leitura/escrita (readWriteAnyDatabase
) a todos os bancos de dados e acesso de administração a todas as coleções. Porém, este usuário não tem privilégios para excluir/deletar bancos de dados e não pode excluir ou alterar privilégios de outros usuários.
Após executar o comando e receber um erro, verifique seu código e tente novamente.
5. Forneça uma senha segura quando solicitado, como mostrado abaixo, e pressione Enter.

Abaixo, você pode ver uma mensagem de Usuário adicionado com sucesso. Esta saída confirma que você criou com sucesso um usuário com privilégios administrativos e os restringiu aos privilégios mínimos necessários.
Neste ponto, você já tem um usuário administrativo chamado AdminATA que pode fazer tudo o que precisa no banco de dados sem dar acesso a todos.

6. Por fim, execute o comando exit para sair do shell do mongo.

Adicionando Segurança Habilitando Autenticação
Agora que você tem um usuário administrativo, você adicionará outra camada de segurança habilitando a autenticação. Fazendo isso, você concede acesso ao banco de dados apenas a usuários com as credenciais corretas.
Autenticação refere-se ao processo de validar uma conexão, geralmente fornecendo um nome de usuário e senha ou usando um token de autenticação. A autenticação garante que você é quem diz ser e não um impostor tentando acessar recursos.
1. Habilite a autenticação editando o arquivo de configuração do MongoDB com o seguinte e salve as alterações:
- Abra o arquivo /etc/mongod.conf no seu editor de texto favorito. O arquivo /etc/mongod.conf contém configuração do seu cluster MongoDB.
- Procure e remova o comentário da diretiva #security removendo o símbolo # na frente da diretiva, como mostrado abaixo. Essa diretiva informa ao MongoDB para procurar a configuração de segurança no arquivo de configuração.
- Adicione uma nova linha abaixo da diretiva security que diz autorização: habilitada. Note que a linha autorização: habilitada é indentada (tem dois espaços no início), como mostrado abaixo.

2. Em seguida, execute o seguinte comando systemctl
para reiniciar o servidor MongoDB para que as alterações tenham efeito.
3. Por fim, execute o comando abaixo para visualizar o status do seu serviço MongoDB.
Abaixo, você pode ver uma linha que diz Ativo: ativo (executando) em texto verde, o que indica que seu servidor MongoDB está em execução e pronto para aceitar conexões.

Testando se a Autenticação Funciona
Você acabou de habilitar a autenticação, mas como saber se ela está funcionando? Você vai fazer login no usuário administrativo para testar e garantir que a autenticação esteja funcionando, visualizando bancos de dados.
1. Execute os seguintes comandos para acessar o shell mongo
como fez na seção “Criando um Usuário Administrativo Dedicado” (passo um).
Como você pode ver abaixo, você não recebe mais o aviso O controle de acesso não está habilitado… sobre a ativação da autenticação. Em vez disso, você receberá uma mensagem que informa a versão do seu servidor MongoDB e do shell MongoDB.

2. Em seguida, execute novamente o comando show dbs
para verificar se você ainda pode acessar o banco de dados.
O comando deve mostrar todos os bancos de dados, incluindo o banco de dados admin. Mas, como você pode ver abaixo, nada é exibido. Por quê? Visualizar a lista de bancos de dados é um privilégio reservado apenas para usuários administrativos.
Você não autenticou seu shell mongo para usar a função Admin, então você não está autorizado a visualizar a lista de bancos de dados.

Com a autenticação habilitada, a conexão falhará se alguém tentar acessar o banco de dados usando uma cadeia de conexão que não contenha as credenciais corretas.
Autenticar strings de conexão é uma parte fundamental da segurança do MongoDB, e você deve implementar autenticação em todas as camadas da aplicação. Todas as conexões com o MongoDB devem usar uma string de autenticação consistindo de credenciais. Essas credenciais incluem o nome de usuário e senha corretos.
3. Execute o comando exit
para sair do shell do MongoDB.
4. Agora, execute o comando abaixo para fazer login no shell do MongoDB com o nome de usuário (-u
) e senha (-p
) do usuário administrativo recém-criado. Substitua AdminATA
pelo nome de usuário que você criou na seção “Criando um Usuário Administrativo Dedicado” (passo quatro).
O parâmetro --authenticationDatabase
diz ao shell do MongoDB para autenticar contra o banco de dados admin
.
5. Forneça sua senha para o usuário administrativo quando solicitado.


6. Por fim, execute novamente o comando show dbs
para tentar ver se você pode visualizar todos os bancos de dados.
Desta vez, como você pode ver abaixo, a lista de bancos de dados aparece, já que você é um usuário administrativo.

Conclusão
Neste tutorial, você aprendeu como se conectar para criar um usuário administrativo e habilitar a autenticação. Você aprendeu a assumir o controle da segurança do seu MongoDB e colocar restrições sobre quem pode acessar bancos de dados no seu servidor.
Neste ponto, você decide quem pode acessar o quê. Então, qual é o próximo passo para você? Talvez aprender como usar um contêiner MongoDB de forma segura?