Zum Inhalt springen
>_<
AI EngineeringWiki

API-Keys sicher speichern

Security · 5 min

Security und API Key Management
Security und API Key Management
📋 Auf einen Blick

API-Keys gehören in einen Vault oder Environment Variables — niemals in Code oder Git. Regelmäßig rotieren (alle 3-6 Monate), minimale Rechte pro Key, bei Leak sofort revoken.

Secret Management — API Keys sicher verwalten
Secret Management: Vault, Environment Variables und Key Rotation

API-Keys sind das Gold deiner Infrastruktur. Ein geleakter Key kann zu unbefugtem Zugriff, Kosten oder Datenverlust führen. Hier ist, wie wir es machen.

⚠️ Niemals committen

API-Keys, Tokens und Passwörter haben in Git nichts verloren. Ein einziger Commit mit einem Key im Code reicht — selbst nach dem Löschen bleibt er in der Git-History.

Diagramm wird geladen...

Was ist ein Vault?

Ein Vault ist ein sicherer Speicher für Credentials. Bei uns nutzen wir ein Python-Skript, das Keys aus einer verschlüsselten Datei liest:

# vault.py
import os
import json
import base64
from cryptography.fernet import Fernet

VAULT_FILE = "vault.json.enc"
KEY_FILE = ".vault.key"

def get_key():
    """Lade oder erstelle Vault-Key"""
    if os.path.exists(KEY_FILE):
        with open(KEY_FILE, 'rb') as f:
            return f.read()
    key = Fernet.generate_key()
    with open(KEY_FILE, 'wb') as f:
        f.write(key)
    return key

def decrypt(filepath):
    """Entschlüssle Vault-Datei"""
    key = get_key()
    f = Fernet(key)
    with open(filepath, 'rb') as data:
        encrypted = data.read()
    return json.loads(f.decrypt(encrypted))

def get(service, key):
    """Hole einen Key aus dem Vault"""
    decrypted = decrypt(VAULT_FILE)
    return decrypted[service][key]

# Verwendung
api_key = vault.get("stripe", "secret_key")
print(f"Stripe Key: {api_key[:8]}...")  # sk_live_xxxx → sk_live_x...

Umgebungsvariablen

Die sicherste Methode: Keys als Environment Variables:

# .env Datei (NIEMALS committen!)
STRIPE_SECRET_KEY=sk_live_xxxxx
GRAFANA_API_KEY=eyJxxxxx
OLLAMA_API_KEY=

# .env.example (Diesen committen)
STRIPE_SECRET_KEY=
GRAFANA_API_KEY=

In Python mit python-dotenv:

# config.py
from dotenv import load_dotenv
import os

load_dotenv()

STRIPE_KEY = os.getenv("STRIPE_SECRET_KEY")
GRAFANA_KEY = os.getenv("GRAFANA_API_KEY")

# Error wenn Key fehlt
if not STRIPE_KEY:
    raise ValueError("STRIPE_SECRET_KEY nicht gesetzt")

Wichtig: .env in .gitignore eintragen!

# .gitignore
.env
.env.local
vault.json.enc
.vault.key
*.pem
*.key

Unser System

ServiceStorage
Stripe.env
GrafanaVault
n8nn8n Credentials
Team-ChatVault
OllamaKeine (lokal)

Praktische Regeln

  1. NIEMALS Keys in Git committen
  2. Keys regelmäßig rotieren (alle 3-6 Monate)
  3. Minimale Rechte — nur was nötig ist
  4. Bei Leak: Sofort revoken und neuen Key erstellen
  5. Monitoring: Ungewohnte Nutzung erkennen

Key Rotation Script

# rotate_keys.py - Keys automatisch rotieren
import os
import subprocess
from datetime import datetime, timedelta

def rotate_stripe_key():
    """Neuen Stripe Key erstellen und alten revoke"""
    # 1. API Call zu Stripe
    result = subprocess.run([
        "stripe", "api_key", "create", 
        "--description", f"Rotated {datetime.now()}"
    ], capture_output=True, text=True)
    
    new_key = result.stdout.strip()
    
    # 2. .env updaten
    with open(".env", "r") as f:
        content = f.read()
    
    content = content.replace(
        "STRIPE_SECRET_KEY=sk_live_xxx",
        f"STRIPE_SECRET_KEY={new_key}"
    )
    
    with open(".env", "w") as f:
        f.write(content)
    
    # 3. Alten Key revoke
    subprocess.run(["stripe", "api_keys", "delete", "old_key_id"])
    
    print(f"✓ Key rotiert: {new_key[:12]}...")

# Cron: 0 0 1 */6 * → alle 6 Monate

Checkliste

  • [ ] .env in .gitignore?
  • [ ] Keys in Vault oder .env?
  • [ ] Keine Keys in Code?
  • [ ] Regelmäßige Rotation?
  • [ ] Minimale Rechte pro Key?

Zusammenfassung

API-Keys sind kritisch. Mit Vault und Environment Variables bleibst du sicher. Einmal leaken ist schwer rückgängig zu machen.

Quellen

War dieser Artikel hilfreich?

Nächster Schritt: vom Wissen in die Umsetzung

Wenn du mehr willst als Theorie: Setups, Workflows und Vorlagen aus dem echten Betrieb für Teams, die lokale und dokumentierte AI-Systeme wollen.

Warum AI Engineering
  • Lokal und self-hosted gedacht
  • Dokumentiert und auditierbar
  • Aus eigener Runtime entwickelt
  • Made in Austria
Kein Ersatz für Rechtsberatung.