Almanya'daki şirketlerde GDPR uyumlu LLM kullanımı — Claude veya GPT'yi üretime almadan önce bilmeniz gerekenler. PII maskeleme, denetim günlükleri, Anthropic / Google'da Zero Data Retention ve veri işleme sözleşmesi sorusunu içeren pratik kurulum.
Zorunlu üç yapı taşı
- Yukarı akış çağrısından önce PII maskeleme — açık metin kişisel verilerini filtrelemeden ABD'li sağlayıcılara gönderemezsiniz
- Veri işleme sözleşmesi (AVV / GDPR Madde 28) — model sağlayıcısıyla (Anthropic, Google, OpenAI) doğrudan; Kunavo AVV sunmaz
- Denetim izi — her çağrı izlenebilir olmalı ve amaçla sınırlı şekilde belgelenmelidir
1) PII maskeleme — pratik bölüm
Bir istem kendi arka ucunuzdan ayrılmadan önce maskeleme adımından geçer. E-posta adresleri, telefon numaraları, kişi adları, IBAN'lar ve sosyal güvenlik numaraları belirteçlerle değiştirilir:
# Vor jedem LLM-Aufruf PII maskieren — niemals Klartext-Personendaten
# an die Upstream-API senden.
import re
from openai import OpenAI
PII_PATTERNS = [
(re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
(re.compile(r"\b\d{4,}\b"), "<NUMBER>"),
(re.compile(r"\b(?:\+49|0)\s*\d{2,4}\s*\d{4,8}\b"), "<PHONE_DE>"),
]
def redact(text: str) -> tuple[str, dict[str, str]]:
redacted = text
mapping: dict[str, str] = {}
for i, (pat, tag) in enumerate(PII_PATTERNS):
for match in pat.finditer(text):
key = f"{tag}_{i}_{match.start()}"
mapping[key] = match.group(0)
redacted = redacted.replace(match.group(0), f"[{key}]")
return redacted, mapping
def restore(text: str, mapping: dict[str, str]) -> str:
for key, original in mapping.items():
text = text.replace(f"[{key}]", original)
return textEşleme tablosu yalnızca yerel olarak tutulur. LLM yanıtının eklenmiş kişisel verileri geri vermesi gerekiyorsa (ör. “Merhaba Bayan Schmidt”), değiştirme işlemini ancak yanıttan sonra yaparız. Böylece yukarı akış sağlayıcısı her zaman yalnızca anonimleştirilmiş metni görür.
2) AVV — kimin hangi sözleşmeye ihtiyacı var
- Siz ↔ Kunavo: Kunavo GDPR Madde 28 uyarınca AVV sunmaz. İstekler ABD'de işlenir ve upstream sağlayıcılara iletilir; sağlayıcıların içerikle ne yaptığı kendi gizlilik ve veri saklama koşullarıyla düzenlenir (bkz. /legal/privacy)
- Siz ↔ model sağlayıcısı: İş yükünüz bir AVV gerektiriyorsa bunu Anthropic, OpenAI veya Google ile doğrudan, kendi ticari veya kurumsal koşulları kapsamında imzalayın ve modele oradan doğrudan erişin. Kunavo üzerinden bir alt işleyen zincirini devralmazsınız
- Schrems II riski: Anthropic ve OpenAI ABD'de yerleşiktir. AVV olmadan Kunavo ile ABD'ye aktarım için standart sözleşme maddeleri (SCC) de bulunmaz. Risk değerlendirmeniz yalnızca AB'de bulunan bir sağlayıcı gerektiriyorsa Kunavo bunun için uygun değildir: kataloğumuzdaki hiçbir sağlayıcı AB'de yerleşik değildir ve her istek US-East'teki gateway'imizden geçer
3) Denetim günlüğü — her çağrıyı kaydedin
İstek başına: Request-ID, User-ID, model, hash'lenmiş istem, token tüketimi, gecikme süresi; kendi günlüklerinizde korelasyon anahtarı olarak Request-ID:
# Jeder LLM-Aufruf wird in einem unveränderlichen Audit-Log festgehalten
import json, time, uuid
from datetime import datetime
def call_with_audit(user_id: str, prompt: str, model: str) -> dict:
request_id = str(uuid.uuid4())
redacted_prompt, mapping = redact(prompt)
# Audit-Log VOR dem Call schreiben
audit_log.write({
"request_id": request_id,
"user_id": user_id,
"timestamp": datetime.utcnow().isoformat(),
"model": model,
"prompt_redacted": redacted_prompt,
"prompt_hash": hashlib.sha256(prompt.encode()).hexdigest(),
"pii_tags_count": len(mapping),
})
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": redacted_prompt}],
extra_headers={
"X-Request-ID": request_id, # nur für deine eigenen Logs; Kunavo wertet ihn nicht aus
},
)
response_text = resp.choices[0].message.content
# Bei Bedarf PII zurück mergen (nur in der lokalen DB)
final_text = restore(response_text, mapping)
audit_log.write({
"request_id": request_id,
"response_redacted": response_text,
"tokens": resp.usage.model_dump(),
"duration_ms": int((time.time() - start) * 1000),
})
return {"text": final_text, "request_id": request_id}X-Request-ID sizin kendi anahtarınızdır: Kunavo header'ı değerlendirmez ve saklamaz; kullanım panosu da bir çağrıyı hangi upstream sağlayıcının karşıladığını göstermez. Orada her çağrı için Kunavo'nun kendi çağrı kimliğini, zamanını, modelini, token'larını, maliyetini ve gecikme süresini görürsünüz; kendi denetim günlüğünüzle eşleştirmeyi zaman ve model üzerinden yaparsınız.
Sıfır Veri Saklama (ZDR) — yalnızca doğrudan model sağlayıcısında
Varsayılan olarak Anthropic ve Google, kötüye kullanım izleme amacıyla istem günlüklerini sırasıyla 30 gün (Anthropic) ve 60 gün (Google) saklar. GDPR açısından hassas iş yükleri için ZDR'yi sağlayıcının kendisinden, kendi sözleşmeniz kapsamında talep edebilirsiniz. Kunavo ZDR yönlendirmesi veya ZDR katmanı sunmaz: Kunavo üzerinden yapılan istekler ABD'de işlenir ve kendi saklama kuralları geçerli olan upstream sağlayıcılara iletilir.
- Anthropic ZDR: Anthropic ile doğrudan sözleşmesi bulunan Enterprise müşterileri için. Kunavo üzerinden kullanılamaz
- Google Vertex AI: Kendi Google Cloud sözleşmenizde benzer koşullar ve ayrıca bir AB bölgesi seçme olanağı (europe-west4 / Hollanda). Kunavo AB bölgesi üzerinden yönlendirme yapmaz
- OpenAI: Zero Data Retention yalnızca OpenAI ile doğrudan sözleşme kapsamında Enterprise katmanı için geçerlidir. Kunavo üzerinden sunulamaz
Veri yerleşimi
- Kunavo yönlendirmesi: ağ geçidinde, tek bir bölgede (US-East, Ashburn). Yalnızca öndeki Anycast Edge TLS'yi size yakın bir yerde sonlandırır
- Hesap verilerinin kalıcılığı: US-East'te günlük şifreli birim anlık görüntülerine sahip tek bir birincil veritabanı. Yalnızca AB yönlendirmesi sunmuyoruz
- KDV: Ödeme ekranında KDV gösterilmez ve fatura oluşturulmaz; muhasebe kaydı için contact@kunavo.com adresine yazın
Çoğu uyumluluk ekibinin gözden kaçırdığı noktalar
- İstem, ad içeriyorsa kişisel veridir — kullanıcı “Müller” yazmamış, yalnızca “benim adım Petra” demiş olsa bile. Maskeleme, ilk adları ve özel adları sezgisel olarak yakalamalıdır
- Verilerinizle eğitim, Anthropic ve Google'da varsayılan olarak kapalıdır (ChatGPT tüketici sürümünün aksine). Kunavo kendi başına içeriklerinizle eğitim yapmaz; upstream sağlayıcının bunlarla ne yaptığı kendi koşullarıyla belirlenir. Kunavo bu konuda sözleşmeye dayalı bir güvence vermez
- Çıktı içeriğini hash'lemek — DPA'nız bunu öngörüyorsa, tam metni değil yalnızca hash'i saklarız
- Silme hakkı — GDPR Madde 17 kapsamındaki bir talepte istemi günlüklerinizden silebilmelisiniz. Bu yalnızca denetim günlükleriniz silinebilir durumdaysa çalışır (yani append-only blockchain yapılarında değilse)
Künye & çerez bildirimi
Eksiksiz bir uyumluluk süreci için § 5 DDG kapsamındaki /legal/impressum sayfamıza ve /legal/privacy adresindeki gizlilik bildirimine bakın. Çerez banner'ını kendi web sitenizde (ör. Usercentrics, Cookiebot veya Klaro ile) yönetirsiniz — Kunavo yalnızca işlevsel çerezler kullanır.
Hazır mısınız? Ücretsiz kayıt olun, $10'dan başlayarak bakiye yükleyin; kullandıkça ödeyin, bakiyeniz asla sona ermez. İş yükünüz AVV, ZDR veya AB veri yerleşimi gerektiriyorsa sözleşmeyi doğrudan model sağlayıcısıyla yapın.