performing-privacy-impact-assessment について
個人データ処理を評価するプライバシーチーム向けの影響評価スキルです。データフローの整理、リスク評価、GDPRとCCPA/CPRAの確認を行い、是正計画とレポートを作成します。
主な機能
- 01処理活動の登録とデータフローの整理
- 02プライバシー項目別のリスク評価
- 03GDPRとCCPA/CPRAへの適合確認
- 04是正計画と評価レポートの作成
- 05NIST Privacy Frameworkプロファイルへの対応付け
活用シーン
- 01新システムの個人データ処理を評価
- 02完全なDPIAが必要か事前判定
- 03複数の処理活動をまとめて評価
- 04プライバシー監査資料の準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-privacy-impact-assessmentインストール後、Claude Code で/performing-privacy-impact-assessmentを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
プライバシー影響評価の実施
使用するタイミング
- 個人データを取り扱う新しいシステム、製品、または処理活動を開始するとき
- GDPR 第 35 条に基づくデータ保護影響評価(DPIA)を実施するとき
- データ処理業務における CCPA/CPRA への準拠状況を評価するとき
- NIST Privacy Framework に準拠したプライバシーリスク評価を実施するとき
- 組織の境界やサードパーティの処理業者をまたぐデータフローをマッピングするとき
- 自動化されたプライバシーガバナンスおよび評価パイプラインを構築するとき
- 規制当局による監査に備えるとき、または説明責任を果たしていることを証明するとき
前提条件
- GDPR、CCPA/CPRA、NIST Privacy Framework の概念に関する知識があること
- データ処理インベントリおよびシステムアーキテクチャのドキュメントにアクセスできること
- 必要な依存関係をインストールした Python 3.8+
- データ保護責任者(DPO)またはプライバシーチームから適切な承認を得ていること
- 組織のデータフローおよびサードパーティの処理業者との関係を把握していること
手順
フェーズ 1:データインベントリと処理活動のカタログ化
個人データの処理活動をすべて網羅したインベントリを作成します。処理活動記録(ROPA)の各項目には、データカテゴリ、法的根拠、保持期間、関係するデータ主体を記録する必要があります。
from agent import PrivacyImpactAssessmentEngine
engine = PrivacyImpactAssessmentEngine()
# Register a processing activity for assessment
activity = engine.register_processing_activity(
name="Customer Analytics Platform",
description="Collects browsing behavior and purchase history for personalization",
data_controller="Acme Corp",
data_processor="CloudAnalytics Inc",
data_categories=["browsing_history", "purchase_records", "ip_address", "device_id"],
data_subjects=["customers", "website_visitors"],
legal_basis="consent",
retention_period_days=730,
cross_border_transfer=True,
transfer_destinations=["US", "IN"],
automated_decision_making=True,
)
print(f"Registered activity: {activity['activity_id']}")
フェーズ 2:データフローのマッピング
収集から削除までのすべてのデータフローをマッピングし、各接点、変換、保存場所を特定します。これにより、システム間のデータ移動に潜むプライバシーリスクが明らかになります。
# Build the data flow map
flow_map = engine.map_data_flows(
activity_id=activity["activity_id"],
flows=[
{
"stage": "collection",
"source": "Web browser cookie + form submission",
"destination": "CDN edge server",
"data_elements": ["ip_address", "device_id", "browsing_history"],
"encryption_in_transit": True,
"protocol": "TLS 1.3",
},
{
"stage": "processing",
"source": "CDN edge server",
"destination": "Analytics data warehouse (US-East)",
"data_elements": ["browsing_history", "purchase_records", "device_id"],
"encryption_in_transit": True,
"encryption_at_rest": True,
"protocol": "mTLS",
},
{
"stage": "storage",
"source": "Analytics data warehouse",
"destination": "S3 encrypted bucket",
"data_elements": ["browsing_history", "purchase_records"],
"encryption_at_rest": True,
"retention_days": 730,
"access_controls": "IAM role-based, MFA required",
},
{
"stage": "sharing",
"source": "Analytics data warehouse",
"destination": "Third-party ML provider (IN)",
"data_elements": ["browsing_history", "purchase_records"],
"encryption_in_transit": True,
"data_processing_agreement": True,
"cross_border": True,
},
{
"stage": "deletion",
"source": "S3 bucket + data warehouse",
"destination": "Secure erasure",
"method": "Cryptographic erasure + lifecycle policy",
"verification": "Automated deletion audit log",
},
],
)
engine.render_data_flow_diagram(flow_map)
フェーズ 3:スコアリングマトリックスによるプライバシーリスク評価
複数のプライバシーリスクの側面について、発生可能性と影響を評価する、体系的なリスクスコアリング手法を適用します。このマトリックスは、NIST PRAM と ICO DPIA のリスク評価アプローチの両方に準拠しています。
# Run the risk assessment
risk_report = engine.assess_privacy_risks(
activity_id=activity["activity_id"],
assessment_type="full_dpia",
)
# Display risk matrix results
for risk in risk_report["risks"]:
print(f"[{risk['severity']}] {risk['category']}: {risk['description']}")
print(f" Likelihood: {risk['likelihood']}/5 | Impact: {risk['impact']}/5 | Score: {risk['risk_score']}/25")
print(f" Mitigation: {risk['recommended_mitigation']}")
評価対象のリスクカテゴリは次のとおりです。
- データ最小化 -- 明示された目的を超える過剰な収集
- 目的の限定 -- 法的根拠のない二次利用
- 越境移転 -- 十分な保護措置(SCC、BCR)を講じない移転
- 自動化された意思決定 -- 人による監督や異議申し立ての手段がないプロファイリング
- データ主体の権利 -- アクセス/消去/データポータビリティの要求に対応できないこと
- サードパーティリスク -- 処理業者のコンプライアンス上の不備、再処理業者の連鎖
- セキュリティ対策 -- 暗号化、アクセス制御、侵害対応の不備
- 保持 -- 必要性や法的要件を超えてデータを保存すること
- 同意管理 -- 無効または曖昧な同意の仕組み
- 侵害通知 -- 72 時間以内(GDPR)に検知して通知できないこと
フェーズ 4:GDPR および CCPA/CPRA との整合性チェック
特定の規制要件に照らして、自動コンプライアンスチェックを実行します。エンジンは各処理活動を、条文レベルの GDPR 義務および CCPA/CPRA の消費者の権利要件に照らしてマッピングします。
# GDPR compliance check
gdpr_report = engine.check_gdpr_compliance(activity_id=activity["activity_id"])
print(f"GDPR Score: {gdpr_report['compliance_score']}/100")
for finding in gdpr_report["findings"]:
print(f" [{finding['status']}] Art.{finding['article']}: {finding['description']}")
# CCPA/CPRA compliance check
ccpa_report = engine.check_ccpa_compliance(activity_id=activity["activity_id"])
print(f"CCPA Score: {ccpa_report['compliance_score']}/100")
for finding in ccpa_report["findings"]:
print(f" [{finding['status']}] Sec.{finding['section']}: {finding['description']}")
フェーズ 5:是正計画とレポートの生成
具体的な対応項目、担当者、期限を含む優先順位付きの是正計画を生成し、正式な PIA/DPIA レポートを作成します。
# Generate remediation plan
remediation = engine.generate_remediation_plan(
activity_id=activity["activity_id"],
risk_report=risk_report,
gdpr_report=gdpr_report,
ccpa_report=ccpa_report,
)
for item in remediation["action_items"]:
print(f"[{item['priority']}] {item['action']}")
print(f" Owner: {item['owner']} | Deadline: {item['deadline']}")
print(f" Addresses: {', '.join(item['addresses_risks'])}")
# Generate formal DPIA report
engine.generate_dpia_report(
activity_id=activity["activity_id"],
output_path="dpia_report_customer_analytics.json",
format="json",
)
print("[+] DPIA report generated")
例
簡易スクリーニング評価
ICO のスクリーニングチェックリストを使用して、完全な DPIA が必要かどうかを判断します。
engine = PrivacyImpactAssessmentEngine()
screening = engine.run_screening_checklist(
uses_special_category_data=False,
large_scale_processing=True,
systematic_monitoring=True,
automated_decision_making=True,
cross_border_transfer=True,
vulnerable_data_subjects=False,
innovative_technology=True,
denial_of_service_or_rights=False,
)
print(f"DPIA Required: {screening['dpia_required']}")
print(f"Triggers: {screening['triggers']}")
# Output: DPIA Required: True
# Triggers: ['large_scale_processing', 'systematic_monitoring',
# 'automated_decision_making', 'cross_border_transfer',
# 'innovative_technology']
複数の処理活動の一括評価
engine = PrivacyImpactAssessmentEngine()
activities = [
{"name": "Email Marketing", "data_categories": ["email", "name"],
"legal_basis": "consent", "cross_border_transfer": False},
{"name": "HR Analytics", "data_categories": ["employee_id", "performance_scores",
"health_data"], "legal_basis": "legitimate_interest", "cross_border_transfer": True},
{"name": "Fraud Detection", "data_categories": ["transaction_data", "ip_address",
"device_fingerprint"], "legal_basis": "legitimate_interest",
"automated_decision_making": True, "cross_border_transfer": False},
]
for act_def in activities:
activity = engine.register_processing_activity(**act_def)
risk = engine.assess_privacy_risks(activity_id=activity["activity_id"])
print(f"{act_def['name']}: Overall Risk={risk['overall_risk_level']} "
f"({risk['risk_count_by_severity']})")
NIST Privacy Framework プロファイルのマッピング
engine = PrivacyImpactAssessmentEngine()
profile = engine.generate_nist_privacy_profile(
activity_id=activity["activity_id"],
target_tier="tier_3", # Repeatable
)
for function_id, outcomes in profile["functions"].items():
print(f"\n{function_id}:")
for outcome in outcomes:
status = "PASS" if outcome["implemented"] else "GAP"
print(f" [{status}] {outcome['subcategory']}: {outcome['description']}")
コメント
Markdown 対応