Qual usuário deve executar o processo de gunicorn?

3

Ao executar um aplicativo Django em um servidor Debian, você deve criar algum tipo de usuário do aplicativo (por exemplo, "myappuser") e executar o processo gunicorn como esse usuário ou pode / deve gunicorn ser executado como root? Executá-lo como root cria um risco de segurança? Eu instalei o gunicorn usando o APT em vez de instalá-lo em um ambiente virtual. Executá-lo como um usuário do aplicativo parece tornar a configuração mais difícil, já que você tem que dar permissão ao usuário para gravar nos arquivos de log, no arquivo PID, etc. Parece mais fácil executá-lo como root.

exec gunicorn $DJANGO_WSGI_MODULE:application \
  --name myapp \
  --user=$USER \     # <- who should this be?
  --group=$GROUP \
    
por Jim 26.01.2016 / 01:03

1 resposta

1

Como regra geral, é sempre uma boa ideia executar os funcionários e esse tipo de coisa sob um usuário separado, que recebe especificamente apenas as permissões necessárias para executar. Executar as coisas como root geralmente é mais fácil, pois você raramente precisa se preocupar com problemas de permissões, mas é sempre menos seguro, pois qualquer coisa que possa explorar seu aplicativo terá acesso imediato ao sistema, em vez de precisar encontrar uma maneira de aumentar ainda mais. Mesmo que não haja uma exploração deliberada, se o aplicativo ficar catastroficamente errado de alguma forma, ele poderá, por exemplo, acabar destruindo partes importantes do seu sistema de arquivos. Morda a bala e lide com a pequena complexidade de se dedicar às permissões agora, em vez de aceitar o risco de segurança da execução como root. Em alguns casos, pode ser apropriado reutilizar algum outro usuário que já exista (por exemplo, www-data para as obras de uma aplicação web), se isso facilitar as coisas.

    
por 26.01.2016 / 01:08