
規制業界のエンジニア向けに、LLM APIのゼロデータ保持設定を網羅したガイド。プロバイダー別のZDRエンドポイント、脅威モデル、コンプライアンスマッピング、セルフホスティングパターンをカバー。
最終更新日: 2026年4月
LLM APIを利用する際にデータをプライベートに保つための実践ガイド。ゼロリテンションエンドポイント、セルフホスティング、コンプライアンス要件、規制業界のエンジニア向けデータ保護パターンを網羅しています。
「ゼロリテンション」は単一の機能ではありません。これは、技術的制御+契約条件のバンドルであり、顧客コンテンツ(プロンプト、出力、ファイル)がベンダー側で保存されないことを保証します。各アプローチには異なるトレードオフがあります。```mermaid flowchart TD Start(["Need Private AI?"]) --> Q1{"Can you\nself-host?"}
Q1 -->|"Yes, have GPUs"| SH["Self-Host Open Weights\n(Llama 4 · DeepSeek · Mistral · Qwen)"]
Q1 -->|"Yes, CPU only"| OL["Ollama + Quantized Models\n(7B–14B on consumer hardware)"]
Q1 -->|No| Q2{"Need frontier\nmodel quality?"}
Q2 -->|Yes| Q3{"Regulatory\nrequirements?"}
Q2 -->|No| Q4{"Budget\nconstrained?"}
Q3 -->|"HIPAA / FedRAMP"| Cloud["Azure OpenAI · AWS Bedrock\n+ Private Endpoints + BAA"]
Q3 -->|"Multi-provider"| GW["OpenRouter · Cloudflare AI Gateway\nwith ZDR routing"]
Q3 -->|"Single provider OK"| Direct["Direct ZDR Contract\n(OpenAI · Anthropic · Google)"]
Q4 -->|Yes| Budget["Fireworks · Together AI\n(open-weights, low cost, ZDR included)"]
Q4 -->|"Not really"| Fast["Groq · Fireworks · Together\nZDR toggle in dashboard"]
style Start fill:#4a90d9,stroke:#2c5f8a,color:#fff
style SH fill:#2ecc71,stroke:#1a9c54,color:#fff
style OL fill:#2ecc71,stroke:#1a9c54,color:#fff
style Cloud fill:#e67e22,stroke:#b3611a,color:#fff
style GW fill:#9b59b6,stroke:#7a3d92,color:#fff
style Direct fill:#3498db,stroke:#2471a3,color:#fff
style Budget fill:#1abc9c,stroke:#148f77,color:#fff
style Fast fill:#1abc9c,stroke:#148f77,color:#fff
### アプローチ比較
| アプローチ | プライバシー強度 | モデル品質 | 運用コスト | セットアップの複雑さ |
| :--- | :--- | :--- | :--- | :--- |
| **自己ホスト(エアギャップ)** | 最強 | オープンウェイトのみ | ハードウェア+運用 | 高 |
| **自己ホスト(VPC)** | 非常に強い | オープンウェイトのみ | クラウドGPUコスト | 中 |
| **クラウドZDR + Private Link** | 強い(契約ベース) | フロンティアモデル | API料金 | 低〜中 |
| **SaaS ZDR API** | 良好(契約ベース) | フロンティアモデル | API料金 | 低 |
| **ZDRルーティング対応ゲートウェイ** | 良好(委任型) | マルチプロバイダー | API料金+ゲートウェイ手数料 | 低 |
---
## 脅威モデル
アプローチを選択する前に、何から保護するのかを理解してください。
| 脅威 | 説明 | 緩和手段 |
| :--- | :--- | :--- |
| **トレーニングデータ漏洩** | プロンプト/出力がプロバイダーのモデル学習に使用される | ZDR契約、API層(無料層でない)、自己ホスティング |
| **不正利用監視による保持** | プロバイダーが安全確認のためにプロンプトを保存(多くの場合30日間) | ZDR/MAMのオプトアウト、自己ホスティング |
| **従業員によるアクセス** | インシデント対応時にプロバイダーのスタッフがデータを閲覧可能 | ZDR + BYOK暗号化、自己ホスティング |
| **召喚状/法的な証拠開示** | 政府や法的手続きによりプロバイダーにデータ提供を要求 | 自己ホスティング、データ所在地管理、保持なし契約 |
| **プロバイダーでの侵害** | プロバイダーのシステムが侵害され、データが流出 | 保持なし(盗むものがない)、自己ホスティング、保存時の暗号化 |
| **自社のログ記録** | 自社のインフラ(プロキシ、APM、エラートラッカー)が機密プロンプトをログに記録 | DLPプロキシ、ログ編集、パイプラインの監査 |
| **プロンプトインジェクションによる情報流出** | 悪意のある入力によりLLMがツール呼び出しを介してデータを漏洩 | 出力スキャン、最小権限ツール、サンドボックス化 |
### データライフサイクル:プロンプトの行き先```mermaid
flowchart LR
User["User Input"] --> App["Your App"]
subgraph YourInfra["Your Infrastructure"]
App --> Logs1["App Logs ⚠️"]
App --> DLP["DLP / PII Proxy"]
DLP --> GW["API Gateway"]
GW --> Logs2["Gateway Logs ⚠️"]
end
subgraph Provider["LLM Provider"]
GW --> Inference["Model Inference\n(in-memory)"]
Inference --> Abuse["Abuse Monitor\n(0–30 day retention)"]
Inference --> Training["Model Training\n(opt-out or ZDR)"]
end
Inference --> Response["Response"]
Response --> App
style Logs1 fill:#e74c3c,stroke:#c0392b,color:#fff
style Logs2 fill:#e74c3c,stroke:#c0392b,color:#fff
style Abuse fill:#f39c12,stroke:#d68910,color:#fff
style Training fill:#e74c3c,stroke:#c0392b,color:#fff
style DLP fill:#2ecc71,stroke:#1a9c54,color:#fff
style Inference fill:#3498db,stroke:#2471a3,color:#fff
赤 = データが保持されるリスクポイント。緑 = 保護層。ZDRはプロバイダー側のリスクを排除し、DLP/プロキシは自社側のリスクを排除します。
storeパラメータは、リクエストでtrueに設定されていても常にfalseとして扱われますstoreパラメータは機能したまま — データ保持が必要だが監視を減らしたい組織向けZDR対象エンドポイント:
/v1/chat/completions, /v1/responses, /v1/images/*, /v1/embeddings, /v1/audio/*, /v1/moderations, /v1/completions, /v1/realtime
ZDR非対象:
Assistants API (/v1/assistants, /v1/threads, /v1/vector_stores)、Conversations API、Files、Fine-tuning、Batches、Evals、Background mode (/v1/responses で background: true)、Hosted containers (Code Interpreter)
追加のコントロール:
eu.api.openai.com)、AU (au.api.openai.com) で利用可能 — ZDR修正条項が必要、コスト10%増curl https://api.openai.com/v1/chat/completions
-H "Authorization: Bearer $OPENAI_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "gpt-4o",
"store": false,
"messages": [{"role": "user", "content": "Hello"}]
}'
---
### Anthropic
> [公式ドキュメント: プライバシーセンター](https://privacy.claude.com/en/articles/8956058-i-have-a-zero-data-retention-agreement-with-anthropic-what-products-does-it-apply-to) · [データ保持期間](https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data)
- **コントロール名**: ZDR 取決め
- **デフォルトの保持期間**: API の入出力は **7 日間** (2025 年 9 月に 30 日から短縮) 保持され、その後自動削除されます。モデルのトレーニングには**決して使用されません** — フラットポリシー、オプトアウトは不要
- **ZDR の有効化方法**: エンタープライズ販売経由の契約追加条項。Anthropic の承認が必要
- **ZDR の対象**: 対象となる Anthropic API + 商用組織の API キーを使用する製品 (Claude Code を含む)
- **ZDR の対象外**: Claude Free、Pro、Max のコンシューマープラン、コンシューマー向け Claude Code アカウント
**注意事項:**
- ユーザーセーフティ分類器の結果は ZDR 下でも保持されます (利用ポリシー施行のため)
- 法律の遵守や悪用防止のために必要な場所にデータが保存される場合があります
- HIPAA (BAA) のお客様には機能制限があります (例: Web 検索は除外)
- 暗号化のための **BYOK** (Bring Your Own Key) が 2026 年上半期に発表予定```python
import anthropic
client = anthropic.Anthropic() # Uses ANTHROPIC_API_KEY env var
# ZDR is org-level. No special per-request parameter needed.
# If your org has ZDR enabled, all API calls are covered.
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}]
)