Key Management - Praktische Umsetzung & Werkzeuge

1. Kern-Anforderungen & Prinzipien

🔒 Grundprinzipien

1.1 File-Struktur

repository/ ├── config.ini # Generische Konfiguration ├── .env # Instanz-spezifische Umgebungsvariablen ├── .env.development # Development-spezifische Keys ├── .env.production # Production-spezifische Keys └── src/ └── utils/ └── config.py # getConfig() Funktion

1.2 Key-Format

Verschlüsselte Keys haben folgendes Format:

2. Master Key Management

2.1 Master Key Storage - Eigene V-Domäne

Master Keys werden bei uns gespeichert:

2.2 Master Key Nutzung für Decryption

Workflow für Key-Decryption:

  1. Key-Format erkennen: DEV_ENC: oder PROD_ENC: Prefix parsen
  2. Master Key laden: Entsprechenden Master Key aus Storage laden
  3. Environment-Check: Sicherstellen, dass Key in richtiger Umgebung entschlüsselt wird
  4. Decryption: Key mit Master Key entschlüsseln
  5. Metadata parsen: Limits und Tracking-Informationen extrahieren

2.3 Environment-Separation

🔐 Strikte Trennung:

3. Encryption Tool - Lokale Nutzung

3.1 Tool-Funktionalität

Das Encryption Tool bietet:

3.2 Tool-Workflow

Schritt 1: Repository & Instanz auswählen

Tool zeigt verfügbare Repositories und deren Instanzen an

Schritt 2: Key-Name definieren

Neuen Key-Namen eingeben (z.B. API_KEY_CUSTOMER_001)

Schritt 3: Plain-Text Key einfügen

Key per Copy/Paste einfügen

Schritt 4: Automatische Verschlüsselung

Tool verschlüsselt Key und speichert ihn im richtigen File

3.3 Tool-Integration

Integration in den Entwickler-Workflow:

4. getConfig() Funktion - Praktische Umsetzung

4.1 Funktionalität

Die getConfig() Funktion:

4.2 Implementierungs-Logik

getConfig() Workflow:

  1. File Loading: config.ini und .env Files laden
  2. Environment Detection: Dev/Prod automatisch erkennen
  3. Master Key Loading: Entsprechenden Master Key laden
  4. Key Scanning: Alle verschlüsselten Keys identifizieren
  5. Decryption: Keys mit Master Key entschlüsseln
  6. Metadata Parsing: Limits und Tracking-Informationen extrahieren
  7. Variable Setup: Entschlüsselte Keys als Variablen verfügbar machen

4.3 Usage im Code

# In der Anwendung from utils.config import getConfig config = getConfig() # Zugriff auf entschlüsselte Keys api_key = config.get('API_KEY_CUSTOMER_001') db_password = config.get('DB_PASSWORD') # Mit Customer-Context customer_api_key = config.get('API_KEY', customer_id='CUSTOMER_001')

5. Repository & Instanz Management

5.1 Multi-Repository Struktur

Verwaltung vieler Repositories:

5.2 Instanz-spezifische Konfiguration

repository/ ├── .env.development # Development Keys ├── .env.staging # Staging Keys ├── .env.production # Production Keys └── .env.local # Lokale Override Keys

5.3 Deployment-Integration

Automatisches Deployment:

  1. Code auf GitHub main: Trigger für automatisches Deployment
  2. Key-Validierung: Alle Keys werden auf Gültigkeit geprüft
  3. Environment-Matching: Richtige .env Files werden für Ziel-Umgebung geladen
  4. Key-Decryption: Keys werden in Ziel-Umgebung entschlüsselt
  5. App-Start: Anwendung startet mit entschlüsselten Keys

6. Sicherheits-Features

6.1 Key-Validierung

🔒 Automatische Sicherheits-Checks:

6.2 Git Integration

Git Hooks und CI/CD:

7. Praktische Implementierung

7.1 Tool-Setup

Entwickler-Setup:

  1. Master Key generieren: Lokalen Development Master Key erstellen
  2. Tool installieren: Encryption Tool lokal installieren
  3. Repository registrieren: Lokale Repositories im Tool registrieren
  4. Test-Key erstellen: Ersten verschlüsselten Key erstellen

7.2 Täglicher Workflow

Entwickler-Alltag:

  1. Neuen Key benötigen: API Key für neuen Customer
  2. Tool starten: Encryption Tool öffnen
  3. Kontext wählen: Repository, Instanz, Key-Name auswählen
  4. Key einfügen: Plain-Text Key per Copy/Paste einfügen
  5. Automatische Verschlüsselung: Tool verschlüsselt und speichert
  6. Code verwenden: getConfig() kann Key sofort nutzen

7.3 Key-Rotation

✨ Einfache Key-Rotation:

8. Monitoring & Alerts

8.1 Key-Monitoring

Überwachung der Keys:

8.2 Alert-System

Automatische Benachrichtigungen:

9. Zusammenfassung der Werkzeuge

9.1 Encryption Tool

9.2 getConfig() Funktion

9.3 Master Key Storage