フランス企業向けにLLM(Claude、Gemini、GPT)をGDPRに準拠して導入するための完全なチェックリスト:データの仮名化、データ処理契約(DPA)、Zero Data Retention、ログのホスティング、そしてMistral/データ主権の問題。
規制上の最低要件
- すべての外部LLM呼び出しの前にPIIを仮名化する
- DPA Article 28 RGPDを、データを処理する各委託先と締結します。Kunavoは提供していないため、処理に必要な場合はモデルプロバイダーと直接契約してください
- 各LLM呼び出しの目的を含む、最新の処理記録を維持する
- データ主体への通知:プライバシーポリシーにAIの利用を記載する
1)仮名化 — すぐに使えるコード
プロンプトがバックエンドから出る前に、直接識別子をトークンに置き換えます。対応表はローカルに保持します。
pseudonymiser.py
# Pseudonymiser les données personnelles avant l'appel LLM
import re
from openai import OpenAI
PATTERNS = [
(re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"), "<EMAIL>"),
(re.compile(r"\b(?:\+33|0)\s*[1-9](?:\s*\d{2}){4}\b"), "<PHONE_FR>"),
# Numéro de sécurité sociale français (15 chiffres)
(re.compile(r"\b[12]\d{2}(?:0[1-9]|1[012])(?:\d{2})(?:\d{3})(?:\d{3})(?:\d{2})\b"), "<NIR>"),
# IBAN FR
(re.compile(r"\bFR\d{2}\s?(?:\d{4}\s?){5}\d{3}\b"), "<IBAN_FR>"),
]
def pseudonymiser(texte: str) -> tuple[str, dict]:
masque = texte
mapping = {}
for i, (pat, tag) in enumerate(PATTERNS):
for m in pat.finditer(texte):
cle = f"{tag}_{i}_{m.start()}"
mapping[cle] = m.group(0)
masque = masque.replace(m.group(0), f"[{cle}]")
return masque, mappingLLMに表示されるのは、実際の識別子ではなく「[EMAIL_0_42]が[IBAN_FR_3_158]を注文しました」です。レスポンスに値を再挿入する必要がある場合(確認メールなど)は、API呼び出しの後に逆置換を行い、API呼び出しの中では決して行いません。
2) DPA — 誰が何に署名するのか
- あなた ↔ Kunavo:KunavoはDPA Article 28 RGPDを提供していません。リクエストは米国で処理され、アップストリームプロバイダーへ転送されます。コンテンツには、それらのプロバイダー自身のプライバシーポリシーとデータ保持ポリシーが適用されます
- あなた ↔ モデルプロバイダー:処理にDPAが必要な場合は、Anthropic、OpenAI、またはGoogleと、それぞれのエンタープライズ規約に基づいて直接締結してください
- 標準契約条項(CCT):米国への移転(Anthropic、OpenAI)については、プロバイダーと締結するDPAに欧州委員会が承認したCCTが含まれていることを確認してください
3) Zero Data Retention(ZDR):プロバイダーと直接契約
デフォルトでは、AnthropicとGoogleは不正利用の監視のため、プロンプトのログをそれぞれ30日間(Anthropic)/60日間(Google)保持します。GDPR上センシティブなワークロードでは:
- Kunavo:ZDRなし。リクエストは米国の当社ゲートウェイを経由し、その後アップストリームプロバイダーへ送られます。データには各プロバイダー自身の保持ポリシーが適用されます
- Anthropic ZDR:Anthropicがエンタープライズ顧客に提供。Anthropicとの直接契約が必要です
- Google Vertex AI EU:Google Cloudと直接契約すれば、europe-west1(ベルギー)またはeurope-west4(オランダ)へのルーティングが可能で、データはEU域外に出ません。KunavoはEUリージョンを提供していません
- OpenAI:EnterpriseティアでZDRを提供。OpenAIとの直接契約が必要です
Mistralと主権に関する問題
多くのフランスのチームは、米国の事業者への依存を減らしたいと考えています。検討すべき3つの観点があります:
- Kunavo経由のMistral:不可。Mistralモデルも他の欧州プロバイダーもカタログに含まれておらず、欧州プロバイダーに限定したルーティングもありません
- Mistralを直接利用:本当にセンシティブなケース(公共部門、医療)では、Mistralがオンプレミス展開を提供しています。Kunavoはこのニーズを代替しません
- 両方を組み合わせる:センシティブなケースにはMistralを直接利用し、高度な推論にはKunavo経由でClaudeを利用します。2つのプロバイダーと2つのキーを使い、各呼び出しをどこに送るかはあなたのコードが選択します
ログのホスティングとデータレジデンシー
- Kunavoのルーティング:ゲートウェイ内の単一リージョン(US-East、Ashburn)で行われます。手前に配置されたAnycast edgeだけが、あなたの近くでTLSを終端します
- アカウントの永続化と請求:US-Eastに単一のプライマリデータベースがあり、ボリュームの暗号化された日次スナップショットを保存します。EU-onlyルーティングもEUリージョンでの保存も、依頼があっても提供しません
- アプリケーションログ:EU(OVH、Scaleway、Hetzner)でホストするのはお客様の責任です。弱点にならないようにしてください
データ主体への通知 — 伝えるべきこと
LLMに個人データを処理させる場合、プライバシーポリシーにその旨を記載する必要があります。最小限のテンプレート:
Kunavo(https://kunavo.com)を通じて、人工知能モデル(Anthropic Claude、Google Gemini、OpenAI GPT)を委託処理のために使用します。目的は次のとおりです:[分類、要約、回答生成など]。個人データは送信前に仮名化されます。Kunavoはこれらのデータをモデルのトレーニングに使用しません。各モデルプロバイダーは、独自のプライバシーポリシーおよびデータ保持ポリシーに従って処理します。RGPD第15条から第21条に基づき、アクセス、訂正、異議申立て、消去の権利を行使できます。
本番環境への導入前に確認すること
- 各委託先とDPAを締結(モデルプロバイダーと直接契約。Kunavoは提供していません)
- 処理活動の記録が最新であること
- 実データのサンプルで仮名化をテスト済みであること(漏えい率 < 0,1 %)
- EUリージョン内のログ
- 第17条の請求(消去権)に対応する手順
- 更新され、アクセス可能なプライバシーポリシー
- 大規模またはセンシティブな処理の場合にDPOへ相談済みであること
始める準備はできましたか?無料登録後、10ドルからチャージできます。