Python: Umgang mit Geheimnissen (Umgebungsvariablen)

Diese Dokumentation ist Teil des Erweiterte Anwendungen-Leitfadens. Den vollständigen Leitfaden finden Sie hier: Weiterführende Schritte mit Ihren Python-Bereitstellungen.

👋 Willkommen bei der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Python-Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:

  • Deployen Sie Ihre Anwendung in Sekundenschnelle mit einem einfachen git push.
  • Verwenden Sie Ihren eigenen Domainnamen und profitieren Sie von der automatischen Konfiguration von HTTPS-Zertifikaten für erhöhte Sicherheit.
  • Genießen Sie beruhigende automatische Backups, Ein-Klick-Updates und eine einfache, transparente und vorhersehbare Preisgestaltung.
  • Erhalten Sie optimale Leistung und robuste Sicherheit dank einer privaten und dedizierten VM.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Python-Cloud-Hosting-Lösung von Stackhero auszuprobieren!

Irgendwann müssen Sie Geheimnisse wie Tokens und Passwörter für Datenbanken oder Drittanbieterdienste speichern. Es ist wichtig, diese sicher zu speichern. Vermeiden Sie es, sie direkt in Ihrem Repository oder Code einzubetten, da dies ein erhebliches Sicherheitsrisiko darstellt.

Die Verwendung von Umgebungsvariablen bietet zwei wesentliche Vorteile:

  1. Ihre Geheimnisse werden niemals in Ihrem Git-Repository gespeichert, was das Risiko eines unbefugten Zugriffs verringert.
  2. Sie können unterschiedliche Anmeldeinformationen für verschiedene Umgebungen verwenden, z. B. eine Produktionsdatenbank in der Produktion und eine Entwicklungsdatenbank während der Entwicklung.

In einer Entwicklungsumgebung erstellen Sie eine .env Datei im Stammverzeichnis Ihres Projekts. Diese Datei sollte von Git ausgeschlossen werden, um sicherzustellen, dass sie niemals festgeschrieben wird.

Um die .env Datei automatisch zu lesen, können Sie das python-dotenv Modul verwenden:

pip install python-dotenv
pip freeze > requirements.txt

Erstellen Sie dann eine .env Datei im Stammverzeichnis Ihres Projekts und fügen Sie Ihre Variablen hinzu:

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

Stellen Sie schließlich sicher, dass die .env Datei von Git ausgeschlossen wird, indem Sie sie zu Ihrer .gitignore hinzufügen:

echo ".env" >> .gitignore

Die .env Datei ist nicht sicher genug für Staging- und Produktionsumgebungen. Stattdessen ermöglicht Stackhero Ihnen, Ihre Umgebungsvariablen direkt in der Konfiguration Ihres Python-Dienstes sicher zu speichern.

Sie können diese Variablen im Stackhero-Dashboard festlegen, indem Sie Ihren Python-Dienst auswählen und dann auf die Schaltfläche "Konfigurieren" klicken.

Python-Umgebungsvariablen auf StackheroPython-Umgebungsvariablen auf Stackhero

Der Zugriff auf Umgebungsvariablen in Python ist einfach. Verwenden Sie einfach os.environ.get() wie unten gezeigt:

import os

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

Zum Beispiel kann die Verbindung zu einem Redis-Server unter Verwendung einer Umgebungsvariablen so erfolgen:

import os
import redis

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

In einer Entwicklungsumgebung setzen Sie REDIS_URL in Ihrer .env Datei wie folgt:

REDIS_URL="redis://localhost:6379"

Für Produktion und Staging definieren Sie REDIS_URL auf dem Stackhero-Dashboard unter der Python-Dienstkonfiguration:

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