mcpField
P
privacy-by-design-rails

privacy-by-design-rails

github.com/codeminer42セキュリティ3238 回インストール5 日前に更新
リポジトリ

privacy-by-design-rails について

privacy-by-design-railsは、個人データを扱うRails 8開発者向けのスキルです。スキャナーと参考資料を通じて、データ最小化、暗号化、ログ保護、同意管理、データ主体の請求などのプライバシー対策を案内します。

主な機能

  1. 01個人データを扱うファイルのスキャン
  2. 02Railsのプライバシー参考資料
  3. 03暗号化と鍵ローテーションの解説
  4. 04ログやエラー報告のマスキング案内
  5. 05同意とデータ保持の手順

活用シーン

  1. 01個人データを扱うRailsコードのレビュー
  2. 02Railsアプリのログマスキング計画
  3. 03同意管理とデータ主体の請求の実装

インストール

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

$npx skills add https://github.com/codeminer42/skills --skill privacy-by-design-rails

インストール後、Claude Code で/privacy-by-design-railsを入力して読み込まれたか確認します。

同梱ファイル

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

references/
anonymization.md
consent-management.md
data-minimization.md
data-retention.md
dsar.md
encryption.md
log-and-output-protection.md
pii-definition.md
pseudonymization.md
secrets-management.md
session-security.md
rules/
consent-use-purposes-constant.md
email-no-pii-in-body.md
encrypt-filter-parameters.md
encrypt-pii-fields.md
export-dsar-vs-processing.md
export-no-pii-at-rest.md
log-no-job-arguments.md
log-no-pii-in-cache.md
log-pass-ids-not-data.md
scripts/rules/
base_rule.rb
consent_use_purposes_constant.rb
email_no_pii_in_body.rb
encrypt_filter_parameters.rb
encrypt_pii_fields.rb
error_reporter_scrubbing.rb
export_dsar_vs_processing.rb
export_no_pii_at_rest.rb
log_no_job_arguments.rb
log_no_pii_in_cache.rb

詳細

Rails 8 によるプライバシー・バイ・デザイン

個人データを扱うコードを生成またはレビューする際は、まずスキャナーを実行してください: ruby .claude/skills/privacy-by-design-rails/scripts/scanner.rb --files <relevant files>

トピックについて詳しく知りたい場合は、references/ にある関連するリファレンスファイルを読んでください。

PII に該当するものとは? 人を直接または間接的に特定できるあらゆるデータです(GDPR Art. 4、LGPD Art. 5、NIST SP 800-122)。単独では個人を特定できなくても、人と結び付けられると PII になるデータも含まれます。農場名、既知の所有者がいる動物の名前、ナンバープレート、車両の VIN、学生 ID、物件の住所、ソーシャルメディアのハンドル名、個人事業主の会社名、アカウントに関連付けられたデバイス ID、IP アドレスなどです。詳細な定義と関連付け可能性の判定については、references/pii-definition.md を参照してください。判断に迷った場合は、PII として扱ってください。

クイックリファレンス

原則Rails の機能ファイル
ログとインスペクションのフィルタリングconfig.filter_parameters(両方を対象)references/log-and-output-protection.md
モデルごとの PII 宣言self.filter_attributes(自己文書化)references/log-and-output-protection.md
ジョブ引数の保護(ActiveJob)self.log_arguments = false(ApplicationJob で設定)references/log-and-output-protection.md
ジョブ引数の保護(Sidekiq)サーバーミドルウェア + ID のみを渡すreferences/log-and-output-protection.md
ログ内の PII のマスキングlogstop gemreferences/log-and-output-protection.md
IP アドレスの匿名化ip_anonymizer ミドルウェアreferences/log-and-output-protection.md
エラーレポーターのサニタイズSentry/Rollbar などから PII を除去references/log-and-output-protection.md
APM/モニタリングのサニタイズAppSignal/NewRelic などから PII を除去references/log-and-output-protection.md
データの最小化Strong Parameters + シリアライザーreferences/data-minimization.md
検索可能な暗号化encrypts :field, deterministic: truereferences/encryption.md
検索不可能な暗号化encrypts :fieldreferences/encryption.md
パスワードのハッシュ化has_secure_passwordreferences/encryption.md
キーのローテーションencrypts :field, previous: [...]references/encryption.md
シークレット管理bin/rails credentials:editreferences/secrets-management.md
セキュリティ監査bundler-audit、Brakeman、pdscanreferences/secrets-management.md
HTTPS の強制config.force_ssl = true + HSTSreferences/session-security.md
セッションのセキュリティ署名付き Cookie/Bearer トークンreferences/session-security.md
同意の管理変更不可の追記専用監査証跡references/consent-management.md
同意の適用アクションを制御するコントローラー Concernreferences/consent-management.md
同意を条件とするエクスポート処理に ConsentGatedExportSerializer を使用references/consent-management.md
匿名化PII を [ANONYMIZED] に置き換えるreferences/anonymization.md
仮名化分析上の関連性を維持する HMAC ハッシュreferences/pseudonymization.md
DSAR ワークフローアクセス/訂正/消去references/dsar.md
データ保持Solid Queue のスケジュール済みジョブreferences/data-retention.md

すべてを組み合わせる — User モデル

class User < ApplicationRecord
  has_secure_password
  has_many :sessions, dependent: :destroy
  has_many :addresses, dependent: :destroy
  has_many :orders, dependent: :restrict_with_error
  has_many :consents, dependent: :destroy
  has_many :data_subject_requests, dependent: :destroy

  include Anonymizable
  include Pseudonymizable
  include DataExportable
  include HasConsent

  encrypts :email_address, deterministic: true, downcase: true
  encrypts :first_name
  encrypts :last_name
  encrypts :phone
  encrypts :date_of_birth

  self.filter_attributes = %i[
    first_name last_name phone date_of_birth
    email_address password_digest
  ]

  enum :role, { customer: 0, admin: 1 }

  anonymizable :first_name, :last_name, :phone, :date_of_birth
  exportable :uuid, :email_address, :first_name, :last_name, :phone, :date_of_birth

  normalizes :email_address, with: ->(e) { e.strip.downcase }
end

よくある間違い(スキャナーでは検出されません)

間違い修正
消去権への対応として、依存レコードがあるレコードを削除する依存レコードがある場合は匿名化を優先してください。参照整合性を維持できます。一部の当局は完全削除を推奨しているため、地域の要件を確認してください
同意をブール値のフラグとして保存する監査証跡には変更不可の追記専用レコードを使用してください
API で連番 ID を公開する公開識別子には UUID を使用してください
データ保持を手動で行うSolid Queue のスケジュール済みジョブで自動化してください

外部リファレンス

最新のガイダンスを確認したり、公式情報源と照らし合わせてパターンを検証したりする際に参照してください。必要に応じて WebFetch を使用してください。すべてを最初から取得する必要はありません。

Rails
GDPR
LGPD(ブラジル)

コメント