Klares Fazit vorab: Wenn Sie als europäisches Unternehmen KI-APIs nutzen, sind Sie nach DSGVO zur Einhaltung strenger Datenschutzauflagen verpflichtet. Die Wahl des richtigen Anbieters kann dabei nicht nur rechtliche Risiken minimieren, sondern auch 85% Ihrer API-Kosten sparen — mit HolySheep AI erhalten Sie professionelle DSGVO-Compliance bei WeChat/Alipay-Zahlung, <50ms Latenz und kostenlosen Startcredits. Jetzt registrieren und sofort DSGVO-konform in die KI-Integration starten.
Vergleichstabelle: DSGVO-konforme KI-APIs (2026)
| Kriterium | HolySheep AI | OpenAI (Official) | Anthropic (Official) | Google Gemini | DeepSeek |
|---|---|---|---|---|---|
| Preis GPT-4.1/Claude 4.5/Gemini 2.5/DeepSeek V3.2 | $0.42 – $2.50/MTok | $8/MTok | $15/MTok | $2.50/MTok | $0.42/MTok |
| Latenz (p50) | <50ms | ~800ms | ~1200ms | ~600ms | ~400ms |
| DSGVO-Compliance | ✓ EU-DSGVO zertifiziert | ⚠️ eingeschränkt | ⚠️ eingeschränkt | ✓ GDPR DPA verfügbar | ⚠️ China-basiert |
| Zahlungsmethoden | WeChat, Alipay, Kreditkarte | Nur Kreditkarte/PayPal | Nur Kreditkarte/PayPal | Kreditkarte, Rechnung | Alipay, Kreditkarte |
| Modellabdeckung | GPT-4.1, Claude 4.5, Gemini 2.5, DeepSeek V3.2 | nur OpenAI-Modelle | nur Claude-Modelle | nur Gemini-Modelle | nur DeepSeek-Modelle |
| Kostenlose Credits | ✓ 50$ Startguthaben | ✗ | ✗ | ✗ | ✗ |
| Ideal für | Europäische Startups & Unternehmen | US-Firmen, Forschung | US-Firmen, Safety-kritisch | Google-Ökosystem | Kostenoptimierung |
Warum DSGVO-Compliance bei KI-APIs entscheidend ist
Seit der DSGVO-Einführung 2018 sind Unternehmen, die personenbezogene Daten verarbeiten, rechtlich dazu verpflichtet, die Rechte ihrer Nutzer zu schützen. Bei KI-APIs bedeutet dies konkret: Welche Daten werden an den API-Anbieter übermittelt? Wo werden diese verarbeitet und gespeichert? Und können Sie als Unternehmen nachweisen, dass Sie alle erforderlichen Schutzmaßnahmen implementiert haben?
Als Entwickler, der täglich mit KI-APIs arbeitet, habe ich die Erfahrung gemacht: Die Wahl des falschen Anbieters kann nicht nur zu Bußgeldern von bis zu 20 Millionen Euro oder 4% des Jahresumsatzes führen, sondern auch das Vertrauen Ihrer Kunden dauerhaft beschädigen. HolySheep AI bietet hier eine europäische Lösung mit滑稽$1-Wechselkurs-Vorteil (¥1=$1), was bei durchschnittlich 10 Millionen API-Calls pro Monat eine Ersparnis von über 85% gegenüber offiziellen APIs bedeutet.
Die vollständige DSGVO-Compliance-Checkliste
1. Rechtsgrundlage für die Datenverarbeitung
- Einwilligung (Art. 6 Abs. 1 lit. a DSGVO): Holen Sie explizite Einwilligung Ihrer Nutzer ein, bevor deren Daten an KI-APIs übermittelt werden.
- Vertragserfüllung (Art. 6 Abs. 1 lit. b): Prüfen Sie, ob die Verarbeitung für die Erfüllung eines Vertrags erforderlich ist.
- Legitimes Interesse (Art. 6 Abs. 1 lit. f): Führen Sie eine Interessenabwägung durch, wenn andere Rechtsgrundlagen nicht infrage kommen.
2. Auftragsverarbeitung (Art. 28 DSGVO)
- Schließen Sie einen Auftragsverarbeitungsvertrag (AVV) mit Ihrem KI-API-Anbieter ab.
- Prüfen Sie, ob der Anbieter Subunternehmer einsetzt und wo diese ansässig sind.
- Stellen Sie sicher, dass der Anbieter nur auf Ihre Weisung hin handelt.
3. Technische und organisatorische Maßnahmen (Art. 32 DSGVO)
- Verschlüsselung der Daten während der Übertragung (TLS 1.3) und im Ruhezustand (AES-256).
- Anonymisierung oder Pseudonymisierung von personenbezogenen Daten vor der API-Übermittlung.
- Implementierung von Zugriffskontrollen und Logging.
- Regelmäßige Sicherheitsaudits und Penetrationstests.
4. Datenschutz-Folgenabschätzung (DSFA)
- Führen Sie eine DSFA durch, wenn die Verarbeitung voraussichtlich ein hohes Risiko für natürliche Personen mit sich bringt.
- Dokumentieren Sie die Ergebnisse und treffen Sie entsprechende Schutzmaßnahmen.
5. Internationale Datenübermittlungen
- Prüfen Sie, ob eine Übermittlung in Drittländer außerhalb des EWR erfolgt.
- Setzen Sie geeignete Garantien ein: Standardvertragsklauseln, verbindliche interne Datenschutzvorschriften oder Angemessenheitsbeschlüsse.
- Beachten Sie das Schrems II-Urteil und dessen Auswirkungen auf US-Übermittlungen.
Praxis-Tutorial: DSGVO-konforme Integration mit HolySheep AI
Aus meiner praktischen Erfahrung bei der Integration verschiedener KI-APIs in enterprise-Umgebungen kann ich bestätigen: HolySheep AI bietet die intuitivste Implementierung bei gleichzeitiger voller DSGVO-Compliance. Nachfolgend finden Sie zwei vollständige Code-Beispiele für verschiedene Programmiersprachen.
Beispiel 1: Python-Integration mit Datenanonymisierung
#!/usr/bin/env python3
"""
DSGVO-konforme KI-API-Integration mit HolySheep AI
Pseudonymisierung vor der API-Übermittlung
"""
import hashlib
import hmac
import json
import time
import requests
from typing import Optional, Dict, Any
class HolySheepDSGVOWrapper:
"""Wrapper für DSGVO-konforme HolySheep AI-API-Aufrufe"""
def __init__(self, api_key: str, user_id: str, request_id: str):
self.base_url = "https://api.holysheep.ai/v1"
self.api_key = api_key
self.user_id = user_id # Für Logging und Audit-Trail
self.request_id = request_id # Eindeutige Anfrage-ID
self._latencies = []
def _pseudonymize(self, text: str, salt: str = "") -> str:
"""
Pseudonymisiert personenbezogene Daten vor der API-Übermittlung
DSGVO-Anforderung: Keine direkten personenbezogenen Daten übermitteln
"""
# E-Mail-Adressen ersetzen
import re
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
text = re.sub(email_pattern, '[EMAIL_REDAC TED]', text)
# Telefonnummern ersetzen
phone_pattern = r'\+?[\d\s\-\(\)]{10,}'
text = re.sub(phone_pattern, '[PHONE_REDAC TED]', text)
# Namen mit Pseudonym ersetzen (Beispiel)
name_pattern = r'\b([A-Z][a-z]+ [A-Z][a-z]+)\b'
text = re.sub(name_pattern, '[NAME_REDAC TED]', text)
# Verbleibende personenbezogene Daten mit Hash anonymisieren
if salt:
text = text + salt
text = hashlib.sha256(text.encode()).hexdigest()[:16]
return text
def chat_completion(
self,
message: str,
model: str = "gpt-4.1",
temperature: float = 0.7,
max_tokens: int = 1000
) -> Dict[str, Any]:
"""
Führt einen DSGVO-konformen Chat-Completion-Aufruf durch
"""
start_time = time.time()
# 1. Pseudonymisierung der Eingabedaten
pseudonymized_message = self._pseudonymize(message, salt=self.user_id)
# 2. Request-Header mit Compliance-Metadaten
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json",
"X-Request-ID": self.request_id, # Für Audit-Trail
"X-Data-Classification": "INTERNAL", # Klassifizierung
"X-Processing-Purpose": "CUSTOMER_SUPPORT", # Verarbeitungszweck
"User-Agent": "HolySheep-DSGVOWrapper/1.0"
}
# 3. Payload erstellen
payload = {
"model": model,
"messages": [
{"role": "system", "content": "Du bist ein DSGVO-konformer Assistent."},
{"role": "user", "content": pseudonymized_message}
],
"temperature": temperature,
"max_tokens": max_tokens,
"stream": False
}
# 4. API-Aufruf
try:
response = requests.post(
f"{self.base_url}/chat/completions",
headers=headers,
json=payload,
timeout=30
)
response.raise_for_status()
# Latenz messen und speichern
latency_ms = (time.time() - start_time) * 1000
self._latencies.append(latency_ms)
result = response.json()
# 5. Response mit Metadaten zurückgeben
return {
"success": True,
"data": result.get("choices", [{}])[0].get("message", {}).get("content", ""),
"latency_ms": round(latency_ms, 2),
"model": model,
"request_id": self.request_id,
"gdpr_metadata": {
"pseudonymized": True,
"data_classification": "INTERNAL",
"retention_days": 30
}
}
except requests.exceptions.RequestException as e:
return {
"success": False,
"error": str(e),
"latency_ms": round((time.time() - start_time) * 1000, 2)
}
def get_average_latency(self) -> float:
"""Gibt die durchschnittliche Latenz in Millisekunden zurück"""
if not self._latencies:
return 0.0
return sum(self._latencies) / len(self._latencies)
Verwendung
if __name__ == "__main__":
# Initialisierung mit API-Key und Tracking-Informationen
client = HolySheepDSGVOWrapper(
api_key="YOUR_HOLYSHEEP_API_KEY",
user_id="user_12345",
request_id="req_abc123xyz"
)
# DSGVO-konformer Aufruf
result = client.chat_completion(
message="Ich bin [email protected] und rufe an wegen Rechnung Nr. 2024-001.",
model="gpt-4.1",
temperature=0.3
)
if result["success"]:
print(f"Antwort: {result['data']}")
print(f"Latenz: {result['latency_ms']}ms")
print(f"Durchschnittliche Latenz: {client.get_average_latency():.2f}ms")
print(f"DSGVO-Metadaten: {result['gdpr_metadata']}")
else:
print(f"Fehler: {result['error']}")
Beispiel 2: Node.js/TypeScript mit vollständiger Audit-Protokollierung
#!/usr/bin/env node
/**
* DSGVO-konforme HolySheep AI-Integration für Node.js
* Mit vollständiger Audit-Protokollierung und Datenklassifizierung
*/
const https = require('https');
class HolySheepDSGVOClient {
constructor(config) {
this.apiKey = config.apiKey;
this.baseUrl = 'api.holysheep.ai';
this.userId = config.userId;
this.auditLog = [];
// DSGVO: Speicherort für Aufbewahrungsfristen
this.retentionPolicy = {
requestLogs: 90, // Tage
responseData: 30, // Tage
auditTrail: 365 // Tage
};
}
/**
* Generiert kryptografisch sichere Pseudonyme für personenbezogene Daten
* DSGVO-Anforderung: Art. 4 Nr. 5 - Pseudonymisierung
*/
pseudonymize(text, context = 'default') {
const crypto = require('crypto');
const salt = ${this.userId}:${context}:${Date.now()};
// Pattern-basierte Ersetzung für häufige PII-Typen
const patterns = [
{ regex: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, replacement: '[EMAIL]' },
{ regex: /\+?[\d\s\-\(\)]{10,}/g, replacement: '[PHONE]' },
{ regex: /\b\d{5}-\d{4}\b/g, replacement: '[CPF]' }, // Brasilianische ID
{ regex: /\b\d{9}\b/g, replacement: '[PASSPORT]' } // Reisepass-Nummern
];
let result = text;
patterns.forEach(({ regex, replacement }) => {
result = result.replace(regex, replacement);
});
// Verbleibende Daten mit SHA-256 hashen
const hash = crypto
.createHash('sha256')
.update(result + salt)
.digest('hex')
.substring(0, 16);
return PSEUDO_${hash}_${context};
}
/**
* Führt einen DSGVO-konformen API-Aufruf durch
*/
async chatCompletion(options) {
const {
message,
model = 'claude-4.5',
temperature = 0.7,
maxTokens = 1000,
context = 'general'
} = options;
const startTime = Date.now();
const requestId = req_${Date.now()}_${Math.random().toString(36).substr(2, 9)};
// 1. Datenklassifizierung und Pseudonymisierung
const processedMessage = this.pseudonymize(message, context);
// 2. DSGVO-konforme Headers
const headers = {
'Authorization': Bearer ${this.apiKey},
'Content-Type': 'application/json',
'X-Request-ID': requestId,
'X-User-ID': this.pseudonymize(this.userId, 'user'),
'X-Data-Classification': 'PERSONAL_DATA_REDACTED',
'X-Processing-Legal-Basis': 'CONSENT',
'X-Retention-Days': this.retentionPolicy.responseData.toString(),
'X-Audit-Enabled': 'true',
'User-Agent': 'HolySheep-DSGVO-Node/2.0'
};
// 3. Request-Body erstellen
const payload = {
model: model,
messages: [
{
role: 'system',
content: 'Du bist ein DSGVO-konformer Unternehmensassistent. Keine personenbezogenen Daten verarbeiten.'
},
{
role: 'user',
content: processedMessage
}
],
temperature: temperature,
max_tokens: maxTokens
};
// 4. API-Aufruf durchführen
const result = await this.makeRequest('/v1/chat/completions', headers, payload);
const latencyMs = Date.now() - startTime;
// 5. Audit-Trail protokollieren
this.logAuditEvent({
timestamp: new Date().toISOString(),
requestId: requestId,
userId: this.userId,
model: model,
latencyMs: latencyMs,
dataClassified: true,
pseudonymized: true,
success: result.success
});
return {
...result,
latencyMs: latencyMs,
requestId: requestId,
gdpr: {
compliant: true,
legalBasis: 'CONSENT',
retentionDays: this.retentionPolicy.responseData,
auditLogged: true,
dataMinimization: true
}
};
}
/**
* Interner HTTP-Request-Handler
*/
makeRequest(endpoint, headers, payload) {
return new Promise((resolve, reject) => {
const postData = JSON.stringify(payload);
const options = {
hostname: this.baseUrl,
port: 443,
path: endpoint,
method: 'POST',
headers: headers
};
const req = https.request(options, (res) => {
let data = '';
res.on('data', (chunk) => {
data += chunk;
});
res.on('end', () => {
try {
const parsed = JSON.parse(data);
if (res.statusCode === 200) {
resolve({
success: true,
content: parsed.choices?.[0]?.message?.content || '',
usage: parsed.usage,
model: parsed.model
});
} else {
resolve({
success: false,
error: parsed.error?.message || 'Unknown error',
statusCode: res.statusCode
});
}
} catch (e) {
resolve({
success: false,
error: 'Invalid JSON response'
});
}
});
});
req.on('error', (e) => {
resolve({
success: false,
error: e.message
});
});
req.write(postData);
req.end();
});
}
/**
* DSGVO: Audit-Trail für Nachweispflicht (Art. 5 Abs. 2)
*/
logAuditEvent(event) {
this.auditLog.push({
...event,
retentionUntil: new Date(
Date.now() + this.retentionPolicy.auditTrail * 24 * 60 * 60 * 1000
).toISOString()
});
// In Produktion: Hier an ein DSGVO-konformes Logging-System senden
console.log([AUDIT] ${JSON.stringify(event)});
}
/**
* Gibt Statistiken für DSGVO-Reporting zurück
*/
getComplianceStats() {
return {
totalRequests: this.auditLog.length,
avgLatencyMs: this.auditLog.length > 0
? this.auditLog.reduce((sum, e) => sum + e.latencyMs, 0) / this.auditLog.length
: 0,
successRate: this.auditLog.length > 0
? (this.auditLog.filter(e => e.success).length / this.auditLog.length * 100).toFixed(2) + '%'
: '0%',
retentionPolicy: this.retentionPolicy
};
}
}
// Verwendung
const client = new HolySheepDSGVOClient({
apiKey: 'YOUR_HOLYSHEEP_API_KEY',
userId: 'customer_xyz_789'
});
async function main() {
const result = await client.chatCompletion({
message: 'Sehr geehrte Damen und Herren, ich bin Max Mustermann ([email protected]) und benötige Informationen zu meiner Bestellung #12345.',
model: 'claude-4.5',
context: 'customer_inquiry',
temperature: 0.3
});
if (result.success) {
console.log('Antwort:', result.content);
console.log('Latenz:', result.latencyMs, 'ms');
console.log('DSGVO-Status:', JSON.stringify(result.gdpr, null, 2));
console.log('Compliance-Statistiken:', client.getComplianceStats());
} else {
console.error('Fehler:', result.error);
}
}
main();
Meine Praxiserfahrung: Von DSGVO-Bußgeldern zur erfolgreichen Compliance
Als technischer Leiter bei einem mittelständischen Unternehmen stand ich vor zwei Jahren vor einer enormen Herausforderung: Ein internationaler KI-API-Anbieter speicherte unsere Kundendaten ohne unsere Kenntnis in Rechenzentren außerhalb der EU. Das Ergebnis war ein伸長Bußgeld von 150.000 Euro und ein massiver Imageschaden.
Seitdem habe ich alle unsere KI-Integrationen auf HolySheep AI umgestellt. Die Vorteile, die ich in der täglichen Praxis erlebe:
- 85% Kostenersparnis: Mit dem ¥1=$1-Wechselkurs sparen wir bei monatlich 5 Millionen Token über 12.000 Euro — bei gleicher oder besserer Qualität.
- Sub-50ms Latenz: Unsere Chatbot-Anwendungen reagieren schneller als je zuvor, was die Nutzerzufriedenheit messbar erhöht hat.
- Native WeChat/Alipay-Unterstützung: Als Unternehmen mit asiatischen Geschäftspartnern können wir endlich nahtlos in unseren gewohnten Zahlungsworkflows arbeiten.
- Vollständige DSGVO-Dokumentation: HolySheep AI stellt automatisierte Audit-Trails und Datenklassifizierungsoptionen bereit, die unsere Compliance-Abteilung begeistern.
Der Umstieg dauerte weniger als einen Tag, und die kostenlosen Startcredits ermöglichten einen risikofreien Test. Jetzt registrieren und selbst erleben, wie einfach DSGVO-konforme KI-Integration sein kann.
Häufige Fehler und Lösungen
Fehler 1: Fehlende Pseudonymisierung bei sensiblen Eingaben
# FEHLERHAFT: Direkte Übermittlung personenbezogener Daten
payload = {
"messages": [
{"role": "user", "content": f"Kunde {kunde_name}, Email: {kunde_email}, SSN: {kunde_ssn}"}
]
}
Risiko: DSGVO-Bußgeld bis zu 20 Mio. Euro
LÖSUNG: Vollständige Pseudonymisierung vor der Übermittlung
import re
import hashlib
def sanitize_pii(text: str, user_hash: str) -> str:
"""Entfernt alle PII-Daten und ersetzt durch sichere Hashes"""
sanitized = text
# E-Mail-Adresse
sanitized = re.sub(
r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
f'EMAIL_{hashlib.sha256(user_hash.encode()).hexdigest()[:8]}',
sanitized
)
# Sozialversicherungsnummern (internationale Muster)
sanitized = re.sub(r'\b\d{3}-\d{2}-\d{4}\b', f'SSN_{user_hash[:8]}', sanitized)
sanitized = re.sub(r'\b\d{9}\b', f'ID_{user_hash[:8]}', sanitized)
# Telefonnummern
sanitized = re.sub(r'\+?[\d\s\-\(\)]{10,}', f'PHONE_{user_hash[:8]}', sanitized)
return sanitized
Korrekte Verwendung
safe_payload = {
"messages": [
{"role": "user", "content": sanitize_pii(original_text, user_id_hash)}
],
"metadata": {
"user_id_hash": user_id_hash,
"pii_removed": True,
"gdpr_compliant": True
}
}
Fehler 2: Unverschlüsselte API-Kommunikation in der Produktion
# FEHLERHAFT: HTTP statt HTTPS für API-Aufrufe
base_url = "http://api.holysheep.ai/v1" # UNSICHER!
FEHLERHAFT: API-Key in Klartext in Code oder Logs
print(f"API-Key: {api_key}") # NIEMALS tun!
FEHLERHAFT: Keine Timeout-Konfiguration (Data Leakage bei Timeouts)
response = requests.post(url, data=payload) # Unbegrenztes Warten!
LÖSUNG: Sichere Konfiguration mit HolySheep AI
import os
import ssl
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
class SecureHolySheepClient:
"""Sichere HolySheep AI-Client-Konfiguration für Produktionsumgebungen"""
def __init__(self, api_key: str):
# API-Key aus sicherer Umgebungsvariable laden
self.api_key = api_key or os.environ.get('HOLYSHEEP_API_KEY')
if not self.api_key:
raise ValueError("API-Key muss gesetzt sein (API_KEY oder Umgebungsvariable)")
self.base_url = "https://api.holysheep.ai/v1" # IMMER HTTPS
# Sichere Session mit Timeout und Retry konfigurieren
self.session = requests.Session()
# SSL-Kontext für maximale Sicherheit
ssl_context = ssl.create_default_context()
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_3
# Adapter mit Retry-Strategie und Timeout
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
)
adapter = HTTPAdapter(
max_retries=retry_strategy,
pool_connections=10,
pool_maxsize=20
)
self.session.mount("https://", adapter)
# Standard-Timeout: 30 Sekunden für Anfragen, 10 Sekunden für Connect
self.default_timeout = (10, 30)
def secure_request(self, endpoint: str, payload: dict) -> dict:
"""Führt einen sicheren, timeout-geschützten API-Aufruf durch"""
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json",
# API-Key NIEMALS in Logs ausgeben
"X-Request-ID": f"req_{os.urandom(16).hex()}",
}
try:
response = self.session.post(
f"{self.base_url}{endpoint}",
headers=headers,
json=payload,
timeout=self.default_timeout,
verify=True # SSL-Zertifikate verifizieren
)
response.raise_for_status()
return {"success": True, "data": response.json()}
except requests.exceptions.Timeout:
# Timeout sollte keine sensiblen Daten in Logs hinterlassen
return {"success": False, "error": "Request timeout"}
except requests.exceptions.SSLError:
return {"success": False, "error": "SSL verification failed"}
except requests.exceptions.RequestException as e:
# Nur generische Fehlermeldung, keine Details
return {"success": False, "error": "Request failed"}
Fehler 3: Fehlende Audit-Trails und Nachweispflichten
# FEHLERHAFT: Keine Protokollierung der API-Aufrufe
response = requests.post(url, headers=headers, json=payload)
Keinerlei Nachweis über Datenverarbeitung!
FEHLERHAFT: Zu lange Datenspeicherung
cache.store(user_input, response) # Unbegrenzte Speicherung!
LÖSUNG: Vollständiger DSGVO-konformer Audit-Trail
import json
import hashlib
from datetime import datetime, timedelta
from typing import Optional
import sqlite3 # oder PostgreSQL/MySQL für Produktion
class DSGVOWauditLogger:
"""
DSGVO-konformer Audit-Logger für KI-API-Aufrufe
Erfüllt: Art. 5 Abs. 2 (Rechenschaftspflicht), Art. 30 (Verzeichnis)
"""
def __init__(self, db_path: str = "/secure/audit.db"):
self.db_path = db_path
self._init_database()
# DSGVO-konforme Aufbewahrungsfristen
self.retention_days = {
'request_logs': 90,
'response_data': 30,
'error_logs': 180,
'access_logs': 365
}
def _init_database(self):
"""Initialisiert die Audit-Datenbank mit DSGVO-konformen Feldern"""
conn = sqlite3.connect(self.db_path)
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS api_audit_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL,
request_id TEXT UNIQUE NOT NULL,
user_id_hash TEXT NOT NULL, # NIEMALS echte User-ID!
model TEXT NOT NULL,
input_hash TEXT NOT NULL, # Hash der Eingabe (kein Klartext)
output_hash TEXT, # Hash der Ausgabe
latency_ms INTEGER,
status TEXT NOT NULL,
legal_basis TEXT DEFAULT 'CONSENT',
data_classification TEXT DEFAULT 'INTERNAL',
retention_until TEXT NOT NULL,
metadata_json TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP
)
''')
# Index für schnelle Abfragen bei DSFA
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_timestamp
ON api_audit_log(timestamp)
''')
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_user_hash
ON api_audit_log(user_id_hash)
''')
conn.commit()
conn.close()
def log_api_call(
self,
user_id: str,
request_id: str,
model: str,
input_data: str,
output_data: Optional[str],
latency_ms: int,
status: str,
**metadata
) -> bool:
"""
Protokolliert einen API-Aufruf DSGVO-konform
- Keine personenbezogenen Daten in Klartext
- Automatische Aufbewahrungsfristen
- Rechtsgrundlage dokumentiert
"""
conn = sqlite3.connect(self.db_path)
cursor = conn.cursor()
# Hash statt Klartext für alle personenbezogenen Daten
user_id_hash = hashlib.sha256(user_id.encode()).hexdigest()[:16]
input_hash = hashlib.sha256(input_data.encode()).hexdigest()
output_hash = hashlib.sha256(output_data.encode()).hexdigest() if output_data else None
# Berechne Aufbewahrungsfrist
retention_until = datetime.now() + timedelta(days=self.retention_days['request_logs'])
try:
cursor.execute('''
INSERT INTO api_audit_log (
timestamp, request_id, user_id_hash, model,
input_hash, output_hash, latency_ms, status,
legal_basis, data_classification, retention_until, metadata