3 votes

Méthode "correcte" pour stocker le mot de passe postgres dans un site web python

J'écris une application web en Python (sur un serveur Apache sur un système Linux) qui doit se connecter à une base de données Postgres. Elle a donc besoin d'un mot de passe valide pour le serveur de la base de données. Il semble plutôt insatisfaisant de coder en dur le mot de passe dans mes fichiers Python.

J'ai envisagé d'utiliser un fichier .pgpass, mais il faudrait qu'il appartienne à l'utilisateur www-data, non ? Par défaut, il n'y a pas de répertoire /home/www-data, qui est l'endroit où j'aurais dû stocker le fichier .pgpass. Puis-je simplement créer un tel répertoire et y stocker le fichier .pgpass ? Et si non, quelle est la manière "correcte" de permettre à mes scripts Python de se connecter à la base de données ?

1voto

Craig Ringer Points 72371

Quelle que soit l'approche utilisée, les autres applications fonctionnant en tant que www-data sera en mesure de lire votre mot de passe et de se connecter en votre nom à la base de données. Utilisation de peer ne vous aidera pas, il continuera à faire confiance à toutes les applications fonctionnant sous le nom de www-data .

Si vous souhaitez que votre application puisse isoler ses données des autres bases de données, vous devrez l'exécuter sous un identifiant d'utilisateur distinct. Les principales approches en la matière sont les suivantes :

  • Utilisez le module apache suexec pour exécuter scripts en tant qu'utilisateur distinct ;
  • Utilisez fast-cgi (fcgi) ou scgi pour exécuter le cgi sous un autre utilisateur ; ou
  • Faites en sorte que l'application exécute son propre serveur HTTP minimal et qu'Apache utilise un proxy inverse pour ce serveur.

Parmi celles-ci, la meilleure option, et de loin, est généralement d'utiliser scgi/fcgi. Elle vous permet d'exécuter facilement votre application en tant qu'utilisateur Unix différent, tout en évitant la complexité et la surcharge du proxy inverse.

1voto

Clodoaldo Neto Points 26723

Installez l'application et ses fichiers de configuration dans son propre répertoire, différent du répertoire des fichiers statiques et uniquement lisible par l'utilisateur de l'application.

Définir un autre utilisateur pour exécuter l'application et utiliser l'interface de l'utilisateur. WSGIDaemonProcess directive.

Tout cela, et bien plus encore, est clairement décrit dans la site mod_wsgi dans le Guide de configuration rapide , Directives de configuration y Directives de configuration

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X