Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Procedimento para permitir que usuários "não raiz" parem/iniciem/reiniciem o processo "mongod"

Ella Shurhavetsky, Nuno Costa3 min read • Published Jan 27, 2022 • Updated May 16, 2022
MongoDBBash
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty

Introdução

A segurança dos sistemas executa um papel fundamental nos aplicativos modernos de hoje. É muito importante restringir o acesso de usuários não autorizados aos recursos raiz. Com esta publicação no blog, pretendemos documentar como evitar o comprometimento dos recursos do sistema raiz, mas permitir que usuários autorizados e não raiz executem operações administrativas em processosmongod, como iniciar ou interromper o daemon.
A metodologia é facilmente extensível a outras operações administrativas, como impedir que usuários não autorizados modifiquem os registros de auditoriamongod .
Use este procedimento para sistemas baseados em Linux para permitir que usuários com permissões restritas parem/iniciem/reiniciem processos domongod. Esses usuários são configurados em um grupo Linux não raiz. Além disso, o grupo Linux desses usuários é diferente do grupo de usuários Linux no qual o processomongod é executado.

Considerações

AVISO: O procedimento requer acesso root para a configuração. Configurações incorretas podem fazer com que o sistema não responda, portanto, sempre teste em um ambiente de desenvolvimento antes de implementar em produção. Certifique-se de ter um backup atual dos seus dados.
É recomendável realizar este procedimento ao configurar um novo sistema. Se não for possível, execute o procedimento durante a janela de manutenção.
As configurações afetarão apenas um sistema local, portanto, no caso de um conjunto de réplicas ou de um cluster fragmentado, execute o procedimento de forma contínua e nunca altere todos os nós de uma vez.

Tipos de Linux testados

  • CentOS 6|7
  • RHEL 6|7
  • Ubuntu 18.04
  • Amazon Linux 2
Isenção de responsabilidade: para outras distribuições Linux, o procedimento deve funcionar de maneira semelhante. No entanto, apenas as versões acima foram testadas enquanto este artigo era escrito.

Procedimento

  • Adicione o usuário com permissões limitadas (substitua testuser pelo seu usuário):
1$ adduser testuser
2$ groupadd testgroup
  • Instale MongoDB Community | Enterprise seguindo nossos procedimentos recomendados.
  • Edite as /etc/mongod.conf permissões do arquivo de configuração MongoDB :
1$ sudo chown mongod:mongod /etc/mongod.conf
2$ sudo chmod 600 /etc/mongod.conf
3$ ls -l /etc/mongod.conf
4-rw-------. 1 mongod mongod 330 Feb 27 18:43 /etc/mongod.conf
Com esta configuração, apenas o usuário mongod (e root) terá permissões para acessar e editar o arquivomongod.conf . Nenhum outro usuário poderá ler/escrever e ter acesso ao seu conteúdo.

Sistemas em execução com systemd

Este procedimento funciona para CentOS 7 e RHEL 7.
  • Adicione as seguintes linhas de configuração ao arquivo sudoers com visudo:
1%mongod ALL =(ALL) NOPASSWD: /bin/systemctl start mongod.service, /bin/systemctl stop mongod.service, /bin/systemctl restart mongod.service
2%testuser ALL =(ALL) NOPASSWD: /bin/systemctl start mongod.service, /bin/systemctl stop mongod.service, /bin/systemctl restart mongod.service
Observação: a conta de usuário raiz pode se tornar não funcional se um erro de sintaxe for introduzido no arquivo sudoers.

Sistemas em execução com o System V Init

Este procedimento funciona para CentOS 6, RHEL 6, Amazon Linux 2 e Ubuntu 18.04.
  • O script init.d-mongod do MongoDB está disponível em nosso repositório aqui, caso o download manual seja necessário (certifique-se de salvá-lo no diretório /etc/init.d/ com permissões definidas como 755).
  • Adicione as seguintes linhas de configuração ao arquivo sudoers com visudo:
Para CentOS 6, RHEL 6 e Amazon Linux 2:
1%mongod ALL =(ALL) NOPASSWD: /sbin/service mongod start, /sbin/service mongod stop, /sbin/service mongod restart
2%testuser ALL =(ALL) NOPASSWD: /sbin/service mongod start, /sbin/service mongod stop, /sbin/service mongod restart
For Ubuntu 18.04:
1%mongod ALL =(ALL) NOPASSWD: /usr/sbin/service mongod start, /usr/sbin/service mongod stop, /usr/sbin/service mongod restart
2%testuser ALL =(ALL) NOPASSWD: /usr/sbin/service mongod start, /usr/sbin/service mongod stop, /usr/sbin/service mongod restart
Nota: A raiz pode se tornar não funcional se um erro de sintaxe for introduzido no arquivo sudoers.

Procedimento de teste

Sistemas executados com systemd (serviço systemctl )

Portanto, com essas configurações, o testuser não tem permissões para ler /etc/mongod.conf, mas pode iniciar e parar o serviço mongod:
1[testuser@localhost ~]$ sudo /bin/systemctl start mongod.service
2[testuser@localhost ~]$ sudo /bin/systemctl stop mongod.service
3[testuser@localhost ~]$ vi /etc/mongod.conf
4"/etc/mongod.conf" [Permission Denied]
5[testuser@localhost ~]$ sudo vi /etc/mongod.conf
6"/etc/mongod.conf" [Permission Denied]
Nota: A autorização é fornecida ao usar o comando /bin/systemctl . Com este procedimento, osudo systemctl start mongod solicitará a senha sudo para o testuser.

Sistemas em execução com o System V Init

Use o serviço sudo mongod [start|stop|restart]:
1[testuser@localhost ~]$ sudo service mongod start
2Starting mongod: [ OK ]
3[testuser@localhost ~]$ sudo service mongod stop
4Stopping mongod: [ OK ]
5[testuser@localhost ~]$ vi /etc/mongod.conf
6"/etc/mongod.conf" [Permission Denied]
7[testuser@localhost ~]$ sudo vi /etc/mongod.conf
8[sudo] password for testuser:
9Sorry, user testuser is not allowed to execute '/bin/vi /etc/mongod.conf' as root on localhost.
Observação: além disso, teste a reinicialização de outros serviços com o testuser com (e sem) as permissões necessárias.

Embrulhar

É um dos requisitos críticos de segurança, não conceder privilégios de root completos a usuários não autorizados. Com esse requisito em mente, é importante que os administradores do sistema saibam que é possível conceder acesso a ações como reiniciar/parar/iniciar um processomongod(ou qualquer outro processo) sem conceder privilégios de root, usando recursos de sistemas Linux .
Se tiver dúvidas, acesse o site da nossa comunidade de desenvolvedores, no qual os engenheiros e a comunidade do MongoDB ajudarão você a desenvolver sua próxima grande ideia com o MongoDB.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Exemplo de código

Exemplo de aplicativo para cuidadores de cães


Jul 12, 2024 | 3 min read
Início rápido

Aggregation Framework com Node.js 3.3.2 Tutorial


Oct 01, 2024 | 9 min read
Artigo

Separando dados que são acessados juntos


Oct 01, 2024 | 7 min read
exemplo de código

Filme: exemplo de aplicativo de microsserviços Go


Sep 11, 2024 | 0 min read
Sumário