building-purpose-limitation-enforcement について
データ保護・エンジニアリングチーム向けの GDPR 目的制限の実装ガイドです。目的タグ付きデータ、アクセス制御、OPA ポリシーと Article 6(4) に基づく適合性評価を説明します。
主な機能
- 01データ取得時の処理目的の付与
- 02目的別アクセス制御
- 03目的に基づくアクセスの監査記録
- 04Article 6(4) に沿った適合性評価
- 05OPA によるポリシー定義
活用シーン
- 01無関係な目的でのデータアクセス制限
- 02新目的へのデータ転用申請の審査
- 03目的タグの適用範囲と評価状況の追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ privacy-data-protection-skills --skill building-purpose-limitation-enforcementインストール後、Claude Code で/building-purpose-limitation-enforcementを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/template.mdreferences/standards.mdworkflows.mdscripts/process.py詳細
目的制限の適用の構築
概要
GDPR 第 5 条第 1 項 (b) は、個人データを「特定され、明示され、正当な目的のために収集し、その目的と相容れない方法でさらに処理してはならない」と定めています。これは、データ保護の基本原則の 1 つである目的制限の原則です。
管理者は、収集時または収集前に目的を特定する必要があります(直接収集の場合は第 13 条第 1 項 (c)、間接収集の場合は第 14 条第 1 項 (c))。その後、別の目的で処理するには、新たな適法性の根拠が必要となるか、第 6 条第 4 項に基づく適合性評価に合格する必要があります。
目的制限に関する第 29 条作業部会の意見書 03/2013(WP203)では、適合性評価について詳しく説明されており、第 6 条第 4 項に規定された 5 つの主な要素が示されています。
第 6 条第 4 項の適合性評価要素
管理者が、個人データを収集した目的とは異なる目的で処理しようとする場合、第 6 条第 4 項により、次の要素を考慮した適合性評価が求められます。
| 要素 | 第 6 条第 4 項の参照先 | 評価に関する質問 |
|---|---|---|
| 目的間の関連性 | 第 6 条第 4 項 (a) | 当初の目的と新たな目的に関連性はありますか? |
| 収集時の状況 | 第 6 条第 4 項 (b) | 管理者とデータ主体の関係はどのようなものですか? 合理的に予想される範囲はどのようなものですか? |
| データの性質 | 第 6 条第 4 項 (c) | データには特別な種類の個人データ(第 9 条)や有罪判決に関するデータ(第 10 条)が含まれていますか? |
| 影響 | 第 6 条第 4 項 (d) | さらなる処理がデータ主体にもたらす可能性のある影響は何ですか? |
| 保護措置 | 第 6 条第 4 項 (e) | 暗号化や仮名化など、適切な保護措置が講じられていますか? |
次の場合、適合性評価は不要です。
- 処理が同意に基づいている場合(第 6 条第 1 項 (a))— 新たな目的について新たな同意を取得できます
- 処理が、必要かつ比例的な措置を定める EU または加盟国の法律に基づいている場合(第 6 条第 4 項の最終段落)
- 第 89 条第 1 項に基づく、公益におけるアーカイブ、科学的・歴史的研究、または統計を目的とする処理の場合
目的タグ付きデータアーキテクチャ
設計原則
- 取り込み時の目的の紐付け — すべてのデータレコードに、システムへの入力時点で収集目的のタグを付けます
- 目的ベースのアクセス制御 — アクセスポリシーは、データフィールドごとではなく、目的ごとに定義します
- 目的の監査証跡 — すべてのアクセスについて、認可された目的を記録します
- 目的の有効期限 — 目的が達成されると、関連データの保持期間のカウントダウンが始まります
アーキテクチャ図
┌────────────────────────────────────────────────────────────┐
│ Data Collection Points │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Web Form │ │ API Call │ │ IoT Feed │ │ Partner │ │
│ │ P:ONBRD │ │ P:ANALYT │ │ P:MAINT │ │ P:MARKET │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ └──────────────┼──────────────┼──────────────┘ │
└──────────────────────┼──────────────┼──────────────────────┘
│ │
┌──────────────────────▼──────────────▼──────────────────────┐
│ Purpose Tagging Gateway │
│ ┌─────────────────┐ ┌─────────────────────────────────┐ │
│ │ Purpose Registry │ │ Tag Injection Middleware │ │
│ │ (canonical IDs) │ │ (attaches purpose + timestamp) │ │
│ └─────────────────┘ └─────────────────────────────────┘ │
└──────────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────────▼─────────────────────────────┐
│ Purpose-Partitioned Data Store │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ONBRD │ │ ANALYT │ │ MAINT │ │ MARKET │ │
│ │ Partition│ │ Partition│ │ Partition│ │ Partition│ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└──────────────────────────────┬─────────────────────────────┘
│
┌──────────────────────────────▼─────────────────────────────┐
│ Purpose Enforcement Layer │
│ ┌─────────────────┐ ┌────────────────┐ ┌────────────┐ │
│ │ Policy Engine │ │ Compatibility │ │ Audit │ │
│ │ (OPA / Cedar) │ │ Assessor │ │ Logger │ │
│ └─────────────────┘ └────────────────┘ └────────────┘ │
└────────────────────────────────────────────────────────────┘
目的レジストリのスキーマ
各処理目的は、正式なメタデータとともに登録されます。
{
"purpose_id": "PRP-ONBRD-001",
"purpose_name": "Customer Account Onboarding",
"description": "Collection and processing of personal data necessary to create and activate a customer account, verify identity, and establish the contractual relationship.",
"lawful_basis": "Article 6(1)(b)",
"data_categories": ["email", "display_name", "country_code", "identity_verification_result"],
"controller": "Prism Data Systems AG",
"retention_period_days": 2555,
"retention_trigger": "account_closure",
"compatible_purposes": ["PRP-SUPRT-001", "PRP-SECUR-001"],
"incompatible_purposes": ["PRP-MARKET-001", "PRP-RESRCH-001"],
"special_categories": false,
"created_date": "2025-06-01",
"last_reviewed": "2026-01-15",
"review_cadence_days": 180,
"owner": "product_team",
"dpo_approved": true
}
目的ごとのアクセス制御
Open Policy Agent(OPA)によるポリシー・アズ・コード
目的ベースのアクセス制御は、目的レジストリに照らしてアクセス要求を評価する OPA ポリシーを使用して実装します。
# Prism Data Systems AG — Purpose-Based Access Policy
# Rule: Access is granted only if the requesting service's declared purpose
# matches a purpose tag on the requested data record.
allow {
input.action == "read"
input.resource.purpose_tags[_] == input.requester.declared_purpose
purpose_is_active(input.requester.declared_purpose)
role_authorized_for_purpose(input.requester.role, input.requester.declared_purpose)
}
# Rule: Cross-purpose access requires a completed compatibility assessment
allow {
input.action == "read"
not input.resource.purpose_tags[_] == input.requester.declared_purpose
compatibility_assessment_approved(input.resource.purpose_tags, input.requester.declared_purpose)
purpose_is_active(input.requester.declared_purpose)
}
# Rule: Write operations must include a valid purpose tag
allow {
input.action == "write"
valid_purpose(input.resource.purpose_tag)
input.requester.declared_purpose == input.resource.purpose_tag
}
ロール・目的認可マトリックス
| ロール | ONBRD | ANALYT | SUPRT | MARKET | SECUR | BILLING |
|---|---|---|---|---|---|---|
| オンボーディングサービス | 読み取り/書き込み | — | — | — | — | — |
| 分析パイプライン | — | 読み取り | — | — | — | — |
| サポートエージェント | 読み取り | — | 読み取り/書き込み | — | — | 読み取り |
| マーケティング自動化 | — | — | — | 読み取り | — | — |
| セキュリティ運用 | 読み取り | 読み取り | 読み取り | 読み取り | 読み取り/書き込み | 読み取り |
| 請求サービス | 読み取り | — | — | — | — | 読み取り/書き込み |
目的の互換性評価ワークフロー
-
申請の提出 — サービスオーナーは、目的Aのもとで収集したデータを新たな目的Bのために処理する申請を提出し、その事業上の正当性を文書化します。
-
要素の分析 — データ保護オフィスは、GDPR第6条第4項の5つの要素を評価します。
- 目的間の関連性(1~5で評価:1=関連性なし、5=密接に関連)
- 文脈と期待(1~5で評価:1=予期されない、5=十分に予期される)
- データの性質(1~5で評価:1=特別カテゴリ、5=機微でない)
- 結果(1~5で評価:1=重大、5=影響は最小限)
- 保護措置(1~5で評価:1=保護措置なし、5=包括的な保護措置)
-
スコアリング — 合計スコアを算出します(範囲は5~25)。
- 20~25:互換性あり。標準的な文書化を行ったうえで承認します。
- 15~19:互換性がある可能性あり。追加の保護措置(仮名化、アクセス制限)を講じたうえで承認します。
- 10~14:互換性がない可能性が高い。DPOへのエスカレーションとDPIAの検討が必要です。
- 5~9:互換性なし。却下します。新たな適法根拠または個別の同意が必要です。
-
決定の記録 — 評価結果を目的レジストリに記録します。記録には、評価者の識別情報、日付、スコアの内訳、条件、見直し日を含めます。
-
ポリシーの更新 — 承認された場合は、文書化された条件のもとで目的をまたぐアクセスを許可するよう、OPA ポリシーを更新します。
Prism Data Systems AG における実装
目的レジストリ
Prism Data Systems AG は、目的レジストリで14件の目的を登録・管理しています。
| 目的 ID | 名称 | 適法根拠 | データカテゴリ |
|---|---|---|---|
| PRP-ONBRD-001 | 顧客のオンボーディング | Art. 6(1)(b) | email, display_name, country_code |
| PRP-AUTH-001 | 認証 | Art. 6(1)(b) | email, password_hash, mfa_token |
| PRP-BILLING-001 | 請求と請求書発行 | Art. 6(1)(b) | billing_address, payment_method, vat_id |
| PRP-SUPRT-001 | カスタマーサポート | Art. 6(1)(b) | email, display_name, support_ticket_history |
| PRP-ANALYT-001 | 製品分析 | Art. 6(1)(f) | pseudonymized_user_id, feature_events, session_duration |
| PRP-MARKET-001 | ダイレクトマーケティング | Art. 6(1)(a) | email, display_name, marketing_preferences |
| PRP-SECUR-001 | セキュリティ監視 | Art. 6(1)(f) | ip_address, user_agent, login_events |
| PRP-LEGAL-001 | 法令遵守 | Art. 6(1)(c) | transaction_records, consent_records |
適用指標
Prism Data Systems AG は、以下の目的制限の適用指標を追跡しています。
| 指標 | 目標 | 測定方法 |
|---|---|---|
| 目的タグの付与率 | レコードの100% | 有効な目的タグが付与されたデータレコードの割合 |
| ブロックされた目的間アクセスの試行 | 評価なしの場合は95%超 | ポリシーエンジンによる拒否件数と目的間リクエスト総数の比較 |
| 完了した互換性評価 | 5営業日以内に100% | 申請からDPOの決定までの期間 |
| 目的レジストリの見直し状況 | 定められた周期内に100%を見直し | 見直し周期内に見直された目的の割合 |
主要な規制上の参照先
- GDPR第5条第1項(b) — 目的制限の原則
- GDPR第6条第4項 — 互換性評価の要素
- GDPR第13条第1項(c) — 収集時の目的に関する情報
- GDPR第14条第1項(c) — 間接的な収集における目的に関する情報
- GDPR第89条第1項 — アーカイブ、研究、統計に関する例外
- GDPR前文第50項 — 追加処理の互換性
- 第29条作業部会「目的制限に関する意見書 03/2013」(WP203)
- EDPB「第25条『設計によるデータ保護およびデフォルトによるデータ保護』に関するガイドライン 4/2019」