Hackers estão se tornando mais sofisticados e sabem como explorar vulnerabilidades. Se você tiver dados sensíveis em seu banco de dados MongoDB, é crucial levar a segurança a sério. Mas como? 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ê criará um usuário com privilégios administrativos e restringirá os bancos de dados a esse usuário administrativo.
Esta configuração permite que você forneça um único ponto de acesso de usuário com privilégios administrativos, enquanto restringe o que cada usuário pode fazer dentro do banco de dados. Por exemplo, os desenvolvedores devem ter acesso somente leitura aos bancos 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 seu shell MongoDB como o usuário administrador padrão.
Este usuário administrador é poderoso, pois tem acesso total de leitura/escrita a todos os bancos de dados no servidor, e é melhor evitar usar este 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 executar as ações que desejam nos bancos de dados. Essas ações incluem, mas não estão limitadas a, excluir, descartar, atualizar bancos 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 todos os bancos de dados no servidor, incluindo os bancos 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 de administração, já que seu foco está em criar um usuário administrativo dedicado. Este comando altera o contexto do seu banco de dados atual para usar o banco de dados de administração, como mostrado abaixo.
O MongoDB utiliza o banco de dados de administração para armazenar regras de controle de acesso e fornecer autenticação incorporada, nomes de usuário e senha para usuários e suas funções. Você não pode excluir ou renomear o banco de dados de administração 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 a senha LDWbPf6Fy9Ezs3Mv
, mas você pode usar credenciais diferentes, se preferir.
Esse novo usuário tem acesso de leitura/gravação (readWriteAnyDatabase
) a todos os bancos de dados e acesso de administração a todas as coleções. No entanto, este usuário não tem privilégios para excluir ou renomear bancos de dados e não pode excluir ou alterar privilégios de outros usuários.
Após executar o comando e se você 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 você 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 autenticação. Fazendo isso, concede acesso ao banco de dados apenas aos 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 a configuração do seu cluster MongoDB.
- Procure e descomente a diretiva #security removendo o símbolo # na frente da diretiva, como mostrado abaixo. Essa diretiva indica ao MongoDB para procurar as configurações de segurança no arquivo de configuração.
- Adicione uma nova linha abaixo da diretiva security que diz authorization: enabled. Observe que a linha authorization: enabled é 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 funciona? Você vai fazer login no usuário administrativo para testar e garantir que sua autenticação funcione visualizando bancos de dados.
1. Execute os seguintes comandos para acessar o shell mongo
como você 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 habilitaçã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 ainda consegue acessar o banco de dados.
O comando deve mostrar todos os bancos de dados, até mesmo o banco de dados admin. Mas como você pode ver abaixo, nada aparece. 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 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 string de conexão que não contenha as credenciais corretas.
A autenticação de 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 em credenciais. Essas credenciais incluem o nome de usuário correto e a senha.
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 que você acabou de criar. 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
indica 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 é exibida, já que você é um usuário administrador.

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 impor restrições sobre quem pode acessar os bancos de dados em seu servidor.
Neste ponto, você decide quem pode acessar o quê. E então, o que vem a seguir para você? Talvez aprender como usar um contêiner MongoDB de forma segura?