1 votes

Quel compte utilisateur doit être utilisé pour WSGIDaemonProcess ?

J'ai quelques sites Django déployés avec Apache2 et mod_wsgi. Lors de la configuration de la directive WSGIDaemonProcess, la plupart des tutoriels (y compris la documentation officielle) suggèrent d'exécuter le processus WSGI en tant qu'utilisateur dans le répertoire personnel duquel réside le code. Par exemple :

WSGIScriptAlias / /home/joe/sites/example.com/mod_wsgi-handler.wsgi
WSGIDaemonProcess example.com user=joe group=joe processes=2 threads=25

Cependant, je me demande s'il est vraiment judicieux d'exécuter le processus du démon wsgi en tant que même utilisateur (avec ses privilèges) qui développe le code. Devrais-je configurer un compte de service dont le seul privilège est l'accès en lecture seule au code afin d'avoir une meilleure sécurité ? Ou mes préoccupations sont-elles exagérées ?

2voto

Il s'agit d'une bonne pratique générale pour exécuter vos services avec des comptes non privilégiés. dans la mesure du possible. Pour les processus qui ont besoin de ressources réservées à la racine (ports < 1024, accès à certains fichiers), le processus doit les acquérir et ensuite immédiatement immédiatement abandonner les privilèges.

Quelques autres conseils.. D'après votre phrase "exécuter le processus ... en tant que l'utilisateur ... qui développe le code", il semble que les développeurs écrivent le code sur les hôtes de production. Utilisez-vous une forme de système de contrôle des changements de source (par exemple, git, svn) ? Les développeurs devraient coder sur des machines de développement uniquement et commit à un référentiel partagé, à partir duquel vous pouvez publier des constructions stables. Déployez le code à partir du dépôt après qu'il ait été testé en intégration, et idéalement, emballez-le pour l'installation (DEB, RPM, EGG, etc.). Cela permettra de réduire les erreurs qui se glissent dans la production, de rendre les versions reproductibles, d'éviter la perte de code si un hôte tombe en panne, et ainsi de suite.

0voto

Vous devriez faire chown www-user:www-data -R dirname de votre code (ou apache:apache). Les données les plus importantes sur votre ordinateur sont vos, utilisateur données, donc déplacer les services loin de votre utilisateur est meilleur.

0voto

Jason Points 8799

La raison pour laquelle il est dit que l'utilisateur doit être celui du répertoire d'origine est que sur de nombreux systèmes, le répertoire d'origine a les permissions 'drwx------', ce qui signifie que seul l'utilisateur peut lire les données qui s'y trouvent. Vous n'avez donc pas le choix si vous voulez placer des données dans le répertoire personnel d'un utilisateur.

Il est également suggéré qu'il est préférable de ne pas le placer dans votre répertoire personnel et de le placer là où se trouvent les autres éléments du serveur web, mais pas sous le DocumentRoot d'un serveur virtuel ou du serveur principal. En procédant ainsi, les restrictions de répertoire ne s'appliqueront pas et l'utilisateur d'Apache pourra le lire.

Globalement, la meilleure idée, surtout si la boîte est aussi votre propre machine de développement, est de faire un déploiement séparé du code dans cette zone séparée, en rendant les fichiers de code inscriptibles et en exécutant le tout en tant qu'utilisateur non privilégié dédié.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X