Python: Gestion des secrets (variables d'environnement)

Cette documentation fait partie du guide Usages avancés. Consultez le guide complet ici : Aller plus loin avec vos déploiements Python.

👋 Bienvenue sur la documentation de Stackhero !

Stackhero propose une solution Python cloud prête à l'emploi qui offre de nombreux avantages, notamment :

  • Déployez votre application en quelques secondes avec un simple git push.
  • Utilisez votre propre nom de domaine et profitez de la configuration automatique des certificats HTTPS pour une sécurité renforcée.
  • Bénéficiez de sauvegardes automatiques, de mises à jour en un clic, ainsi que d'une tarification simple, transparente et prévisible.
  • Profitez d'une performance optimale et d'une sécurité renforcée grâce à une VM privée et dédiée.

Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution d'hébergement Python cloud de Stackhero !

À un moment donné, vous aurez besoin de stocker des secrets comme des tokens ou des mots de passe pour des bases de données ou des services tiers. Il est essentiel de les stocker de façon sécurisée. Évitez de les inclure directement dans votre dépôt ou votre code, cela représente un risque de sécurité important.

L'utilisation de variables d'environnement présente deux avantages majeurs :

  1. Vos secrets ne sont jamais stockés dans votre dépôt Git, ce qui limite les risques d'accès non autorisé.
  2. Vous pouvez utiliser des identifiants différents selon l'environnement, par exemple une base de données de production en production et une base de développement en local.

En développement, créez un fichier .env à la racine de votre projet. Ce fichier doit être exclu de Git pour ne jamais être commité.

Pour lire automatiquement le fichier .env, vous pouvez utiliser le module python-dotenv :

pip install python-dotenv
pip freeze > requirements.txt

Ensuite, créez un fichier .env à la racine du projet et ajoutez vos variables :

ENV="development"
DATABASE_PASSWORD="secretPassword"
THIRD_API_PRIVATE_KEY="secretKey"
# ...

Enfin, assurez-vous que le fichier .env est bien exclu de Git en l'ajoutant à votre .gitignore :

echo ".env" >> .gitignore

Le fichier .env n'est pas suffisamment sécurisé pour les environnements de staging et de production. Stackhero vous permet de stocker vos variables d'environnement de manière sécurisée directement dans la configuration de votre service Python.

Vous pouvez définir ces variables depuis le tableau de bord Stackhero en sélectionnant votre service Python puis en cliquant sur le bouton "Configurer".

Variables d'environnement Python sur StackheroVariables d'environnement Python sur Stackhero

L'accès aux variables d'environnement en Python est très simple. Utilisez simplement os.environ.get() comme ci-dessous :

import os

print(os.environ.get('ENV'))

Par exemple, pour se connecter à un serveur Redis via une variable d'environnement :

import os
import redis

r = redis.from_url(os.environ.get("REDIS_URL"))

En développement, définissez la variable REDIS_URL dans votre fichier .env :

REDIS_URL="redis://localhost:6379"

Pour la production et le staging, définissez REDIS_URL sur le tableau de bord Stackhero dans la configuration du service Python :

REDIS_URL="rediss://default:<yourPassword>@<XXXXXX>.stackhero-network.com:6380"