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 dans la documentation Stackhero !

Stackhero offre une solution Python cloud clé en main conçue pour simplifier vos déploiements :

  • Déployez votre application en production en quelques secondes grâce à un simple git push.
  • Utilisez votre propre nom de domaine, avec une configuration automatique du certificat HTTPS pour des connexions sécurisées gérées pour vous.
  • Profitez de sauvegardes automatiques, de mises à jour en un clic et d'une tarification prévisible, afin que vous puissiez vous concentrer sur votre code plutôt que sur la gestion de l'infrastructure.
  • Bénéficiez d'une performance et d'une sécurité accrues sur une infrastructure privée et dédiée. Votre environnement est isolé et protégé.

Gagnez du temps et simplifiez votre workflow : votre code peut être en ligne avec l'hébergement Python cloud de Stackhero en seulement 5 minutes.

À 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"