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 cloud Python prête à l'emploi offrant de nombreux avantages, notamment :

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

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

À un moment donné, vous devrez stocker des secrets tels que des tokens et des mots de passe pour les bases de données ou les services tiers. Il est important de les stocker en toute sécurité. Évitez de les intégrer directement dans votre dépôt ou votre code, car cela crée un risque de sécurité important.

L'utilisation de variables d'environnement offre deux avantages clés :

  1. Vos secrets ne sont jamais stockés dans votre dépôt Git, réduisant le risque d'accès non autorisé.
  2. Vous pouvez utiliser des identifiants différents pour divers environnements, comme utiliser une base de données de production en production et une base de données de développement pendant le développement.

Dans un environnement de développement, créez un fichier .env à la racine de votre projet. Ce fichier doit être exclu de Git pour s'assurer qu'il n'est jamais validé.

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 de votre projet et ajoutez vos variables :

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

Enfin, assurez-vous que le fichier .env est 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. Au lieu de cela, Stackhero vous permet de stocker en toute sécurité vos variables d'environnement directement dans la configuration de votre service Python.

Vous pouvez définir ces variables dans 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

Accéder aux variables d'environnement en Python est simple. Utilisez simplement os.environ.get() comme indiqué ci-dessous :

import os

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

Par exemple, se connecter à un serveur Redis en utilisant une variable d'environnement peut se faire comme ceci :

import os
import redis

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

Dans un environnement de développement, définissez REDIS_URL dans votre fichier .env comme suit :

REDIS_URL="redis://localhost:6379"

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

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