mcpField
A
automating-storage-limitation-controls

automating-storage-limitation-controls

github.com/mukul975データ・データベース32343 回インストール32 週間前に更新
リポジトリ

automating-storage-limitation-controls について

GDPRの保存制限を実装するプライバシー担当者やエンジニア向けのガイドです。保存ポリシー、自動削除、リーガルホールド、階層型アーカイブの設計と運用を扱います。

主な機能

  1. 01データカテゴリ別の保存期間設定
  2. 02TTLメタデータによる削除制御
  3. 03リーガルホールドと削除再開の管理
  4. 04階層型ストレージとアーカイブの計画
  5. 05削除検証とジョブ監視

活用シーン

  1. 01個人データの自動削除フロー設計
  2. 02訴訟や調査中の削除停止
  3. 03バックアップローテーションと暗号鍵破棄の計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/privacy-data-protection-skills --skill automating-storage-limitation-controls

インストール後、Claude Code で/automating-storage-limitation-controlsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
template.md
references/
standards.md
workflows.md
scripts/
process.py

詳細

保存期間制限の管理の自動化

概要

GDPR 第 5 条第 1 項(e)は、個人データを「個人データが処理される目的に必要な期間を超えて、データ主体を識別できる形式で保管してはならない」と定めています。これが保存期間制限の原則です。管理者は、処理目的に基づき、個人データの各カテゴリーについて保存期間を定める必要があります(第 13 条第 2 項(a)は、保存期間またはその決定基準の開示を求めています)。

手作業による保存期間管理では、大規模な運用においてコンプライアンス上の不備が避けられないため、自動化が不可欠です。EDPB の第 25 条に関するガイドライン 4/2019 では、自動削除の仕組みをデータ保護バイデザインの例として明示しています。

保存期間ポリシーのフレームワーク

保存期間の決定

各保存期間は、処理目的、法的要件、または正当な事業上の必要性を根拠として正当化する必要があります。

データカテゴリー目的適法性の根拠保存期間保存期間の起算点法的参照
顧客アカウントデータサービスの提供Art. 6(1)(b)契約期間+90日アカウントの閉鎖Art. 5(1)(e), Art. 17(1)(a)
取引記録税務コンプライアンスArt. 6(1)(c)10年取引日Swiss CO Art. 958f, EU VAT Directive 2006/112/EC Art. 242
サポートチケット顧客サービスArt. 6(1)(b)3年チケットのクローズArt. 5(1)(e)、時効期間
サーバーアクセスログセキュリティ監視Art. 6(1)(f)12か月ログの作成日Art. 5(1)(e)、ENISA の推奨
マーケティング同意記録説明責任Art. 6(1)(c)同意期間+5年同意の撤回Art. 7(1), Art. 5(2)
雇用記録法的義務Art. 6(1)(c)雇用期間+10年雇用の終了Swiss OR Art. 127-128
Cookie 分析データ製品の改善Art. 6(1)(a)13か月データ収集ePrivacy Directive Art. 5(3)、CNIL のガイダンス
DPIA 記録説明責任Art. 6(1)(c)処理期間+3年処理の終了Art. 35, Art. 5(2)
TTL ベースの削除アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│                   Retention Policy Engine                     │
│  ┌───────────────┐  ┌────────────────┐  ┌───────────────┐  │
│  │ Policy Store  │  │ TTL Calculator │  │ Legal Hold    │  │
│  │ (per category)│  │ (trigger+period)│  │ Registry      │  │
│  └───────┬───────┘  └───────┬────────┘  └──────┬────────┘  │
│          └──────────────────┼───────────────────┘           │
└─────────────────────────────┼───────────────────────────────┘
                              │
┌─────────────────────────────▼───────────────────────────────┐
│                   Lifecycle Scheduler                         │
│  ┌──────────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ Expiry Scanner   │  │ Archive Mover│  │ Deletion     │  │
│  │ (daily cron)     │  │ (pre-delete) │  │ Executor     │  │
│  └──────────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────┬───────────────────────────────┘
                              │
┌─────────────────────────────▼───────────────────────────────┐
│                   Audit and Verification                     │
│  ┌──────────────────┐  ┌──────────────┐  ┌──────────────┐  │
│  │ Deletion Log     │  │ Verification │  │ Exception    │  │
│  │ (immutable)      │  │ Scanner      │  │ Reporter     │  │
│  └──────────────────┘  └──────────────┘  └──────────────┘  │
└─────────────────────────────────────────────────────────────┘
分散システムにおける削除パターン
パターン説明ユースケース複雑さ
TTL カラム有効期限のタイムスタンプを格納するデータベースのカラム。バックグラウンドジョブが期限切れの行を削除します単一データベースのシステム、Redis、DynamoDB低
イベント駆動型削除ライフサイクルイベント(アカウントの閉鎖)により、削除コマンドをメッセージキューに送信しますマイクロサービスアーキテクチャ中
トゥームストーン+コンパクションレコードを削除済みとしてマークし、バックグラウンドのコンパクションでデータを物理的に削除します追記専用ストア、イベントソーシング中
カスケード削除外部キーの関係を通じて削除を伝播させます参照整合性のあるリレーショナルデータベース中
分散サーガ失敗時のロールバックを伴い、複数のサービスにわたる削除を協調して実行しますポリグロット永続化、サービス間のデータ高
暗号シュレッディングデータを物理的に削除せず、暗号化キーを破棄してデータを読み取り不能にします物理的な削除が現実的でないシステム(バックアップ、不変ログ)中
リーガルホールド管理

データが訴訟、規制当局による調査、または監査手続きの対象となる場合、リーガルホールドによって自動削除が停止されます。

リーガルホールドのライフサイクル:

  1. ホールドの開始 — 法務担当者が、対象範囲(データカテゴリ、日付範囲、対象者)と案件の参照情報を指定したホールド通知を発行します
  2. ホールドの登録 — Retention Policy Engine がホールドを登録し、該当するレコードに対する TTL ベースの削除を上書きする免除を作成します
  3. ホールドの監視 — 法務担当者が毎月レビューを行い、ホールドが引き続き必要であることを確認します
  4. ホールドの解除 — 法務担当者が解除通知を発行します。Retention Policy Engine は免除を削除し、通常の保持処理を再開します
  5. 削除の追いつき処理 — ホールド期間中に削除されるはずだったレコードを、現在の保持ポリシーに照らして評価し、期限切れであれば削除します

Prism Data Systems AG の実装:

ホールドパラメーター値
ホールド対象範囲の形式data_categories、date_range_start、date_range_end、subject_identifiers、matter_reference を指定する JSON ドキュメント
ホールドレジストリ不変の監査証跡を備えた PostgreSQL テーブル
レビュー頻度法務担当者が毎月、DPO が四半期ごと
更新なしでのホールドの最長期間12 か月
ホールド解除の承認二者承認:法務担当者 + DPO

アーカイブポリシー

3 層ストレージのライフサイクル
層ストレージタイプアクセスパターン暗号化保持フェーズ
ホットプライマリデータベース(PostgreSQL)リアルタイムの読み書きフィールドレベルの AES-256-GCMアクティブな処理
ウォームオブジェクトストレージ(S3 互換、Glacier Instant Retrieval クラス)低頻度の読み取り、書き込みなしオブジェクトレベルの AES-256-GCM目的達成後、削除前(法務・監査)
コールドオフラインアーカイブ(テープ/保管庫)要求に応じて復元(24~48 時間)AES-256-GCM + エンベロープ暗号化法定保持期間のみ

Prism Data Systems AG の移行ルール:

移行トリガー自動化
ホット → ウォーム目的達成(例:アカウントの閉鎖)から 90 日後日次ライフサイクルジョブ
ウォーム → コールドウォームの保持期間が終了し、法定保持期間が引き続き適用される月次ライフサイクルジョブ
コールド → 削除法定保持期間が終了し、有効なリーガルホールドがないDPO 承認ゲートを設けた四半期ごとのライフサイクルジョブ
任意 → リーガルホールド該当する範囲に対してリーガルホールドが登録された場合即時停止

実装ワークフロー

  1. データストアを棚卸しする — プライマリデータベース、キャッシュ、メッセージキュー、ログ、バックアップ、サードパーティとの連携を含め、個人データを保存するすべてのシステムを一覧化します。

  2. 保持要件を対応付ける — データカテゴリと処理目的ごとに、目的上の必要性、法的義務、時効期間に基づいて保持期間を決定します。

  3. TTL メタデータを実装する — 各データストアに、created_at、retention_trigger_event、retention_trigger_date、ttl_expiry_date、legal_hold_id など、保持に関連する列またはメタデータを追加します。

  4. ライフサイクルスケジューラーをデプロイする — 毎日、期限切れレコードを検索し、有効なリーガルホールドを確認して、削除またはアーカイブへの移行を実行するバックグラウンドサービスを実装します。

  5. 削除の検証を実装する — 各削除サイクルの後に検証スキャンを実行し、対象のレコードがプライマリストア、レプリカ、キャッシュからすべて削除されたことを確認します。

  6. バックアップローテーションを設定する — バックアップの保持期間が、適用される最長の保持期間に一致するようにします。細粒度の削除が実用的でないバックアップメディアには、暗号学的消去を実装します。

  7. 監視とアラートをデプロイする — 削除ジョブの成功率を監視し、TTL を 7 日以上超過したレコードにフラグを立て、リーガルホールドの期限切れについてアラートを出します。

主要な規制上の参照先

  • GDPR 第5条第1項(e) — 保存期間の制限に関する原則
  • GDPR 第13条第2項(a) — 保存期間の開示要件
  • GDPR 第17条第1項(a) — データが不要になった場合の消去権
  • GDPR 第25条第1項 — 設計によるデータ保護
  • GDPR 前文第39項 — 保存期間の制限に関する指針
  • GDPR 第25条「設計およびデフォルトによるデータ保護」に関する EDPB ガイドライン 4/2019
  • スイス債務法第958f条 — 事業記録の10年間保存
  • EU VAT 指令 2006/112/EC 第242条 — 請求書の保存要件

コメント