Python: Omgaan met geheimen (omgeving variabelen)

Deze documentatie maakt deel uit van de Geavanceerde toepassingen-gids. Bekijk de volledige gids hier: Verder gaan met uw Python-deployments.

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Python cloud oplossing die tal van voordelen biedt, waaronder:

  • Implementeer uw applicatie in seconden met een eenvoudige git push.
  • Gebruik uw eigen domeinnaam en profiteer van de automatische configuratie van HTTPS-certificaten voor verbeterde beveiliging.
  • Geniet van gemoedsrust met automatische back-ups, updates met één klik, en eenvoudige, transparante en voorspelbare prijzen.
  • Krijg optimale prestaties en robuuste beveiliging dankzij een privé en dedicated VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Python cloud hosting oplossing van Stackhero te proberen!

Op een gegeven moment moet u geheimen zoals tokens en wachtwoorden voor databases of externe diensten opslaan. Het is belangrijk om deze veilig op te slaan. Vermijd het direct in uw repository of code inbedden, omdat dit een aanzienlijk beveiligingsrisico vormt.

Het gebruik van omgevingsvariabelen biedt twee belangrijke voordelen:

  1. Uw geheimen worden nooit in uw Git-repository opgeslagen, waardoor het risico op ongeautoriseerde toegang wordt verminderd.
  2. U kunt verschillende referenties gebruiken voor verschillende omgevingen, zoals het gebruik van een productiedatabase in productie en een ontwikkelingsdatabase tijdens ontwikkeling.

In een ontwikkelingsomgeving maakt u een .env bestand aan in de root van uw project. Dit bestand moet worden uitgesloten van Git om ervoor te zorgen dat het nooit wordt gecommit.

Om het .env bestand automatisch te lezen, kunt u de python-dotenv module gebruiken:

pip install python-dotenv
pip freeze > requirements.txt

Maak vervolgens een .env bestand in de root van uw project en voeg uw variabelen toe:

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

Zorg er ten slotte voor dat het .env bestand is uitgesloten van Git door het toe te voegen aan uw .gitignore:

echo ".env" >> .gitignore

Het .env bestand is niet veilig genoeg voor staging- en productieomgevingen. In plaats daarvan kunt u met Stackhero uw omgevingsvariabelen veilig opslaan in de configuratie van uw Python-service.

U kunt deze variabelen instellen op het Stackhero-dashboard door uw Python-service te selecteren en vervolgens op de knop "Configure" te klikken.

Python omgevingsvariabelen op StackheroPython omgevingsvariabelen op Stackhero

Toegang tot omgevingsvariabelen in Python is eenvoudig. Gebruik gewoon os.environ.get() zoals hieronder getoond:

import os

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

Bijvoorbeeld, verbinding maken met een Redis-server met behulp van een omgevingsvariabele kan als volgt worden gedaan:

import os
import redis

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

In een ontwikkelingsomgeving stelt u REDIS_URL in uw .env bestand in als volgt:

REDIS_URL="redis://localhost:6379"

Voor productie en staging definieert u REDIS_URL op het Stackhero-dashboard onder de configuratie van de Python-service:

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