compliance-engineering について
SOC 2、HIPAA、GDPR、PCI-DSS、FedRAMP などの枠組みに対応する、開発者向けコンプライアンス実装ガイドです。コード上の制御、Webアプリの既定設定、コンプライアンス自動化を扱います。
主な機能
- 01SOC 2の監査ログとアクセス制御
- 02HIPAAの技術的安全措置
- 03GDPRの同意管理とデータ最小化
- 04PCI-DSSの制御ガイダンス
- 05コンプライアンス・アズ・コードの例
活用シーン
- 01PHIを扱うアプリの安全策の計画
- 02同意とデータ保持方法の確認
- 03決済カードデータへの制御適用
- 04インフラの監査証跡収集の自動化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ travisjneuman/ .claude --skill compliance-engineeringインストール後、Claude Code で/compliance-engineeringを入力して読み込まれたか確認します。
詳細
コンプライアンスエンジニアリング
フレームワークの概要
| フレームワーク | 対象範囲 | 主な要件 |
|---|---|---|
| SOC 2 | サービス組織 | セキュリティ、可用性、機密性、プライバシー、処理の完全性 |
| HIPAA | 医療データ(PHI) | 暗号化、アクセス制御、監査ログ、BAA |
| GDPR | EU の個人データ | 同意、データ最小化、消去する権利、DPIA |
| PCI-DSS | 決済カードデータ | ネットワーク分割、暗号化、アクセス制御、ログ記録 |
| FedRAMP | 米国政府のクラウド | NIST 800-53 の管理策、継続的なモニタリング、認証 |
コードにおける SOC 2 の管理策
監査ログ
interface AuditEvent {
timestamp: string;
actor: { id: string; role: string; ip: string };
action: string;
resource: { type: string; id: string };
outcome: 'success' | 'failure';
metadata: Record<string, unknown>;
}
async function auditLog(event: AuditEvent): Promise<void> {
// Write-once, append-only storage (immutable)
await auditStore.append({
...event,
timestamp: new Date().toISOString(),
hash: computeChainHash(event), // tamper detection
});
}
アクセス制御
// RBAC with principle of least privilege
const permissions = {
admin: ['read', 'write', 'delete', 'manage_users'],
editor: ['read', 'write'],
viewer: ['read'],
} as const;
function authorize(user: User, action: string, resource: Resource): boolean {
const allowed = permissions[user.role];
if (!allowed?.includes(action)) {
auditLog({ action, outcome: 'failure', actor: user, resource });
return false;
}
return true;
}
HIPAA の技術的セーフガード
- 保存データの暗号化: PHI の保存には AES-256 を使用し、鍵管理には AWS KMS / GCP KMS を使用します
- 転送中データの暗号化: TLS 1.2+ を必須とし、モバイルでは証明書ピンニングを使用します
- アクセス制御: 一意のユーザー ID、自動ログオフ、必須の MFA
- 監査管理: すべての PHI アクセスを記録し、ログを 6 年以上保持して、改ざんを検知できるようにします
- データのバックアップ: 暗号化されたバックアップ、復元手順のテスト、地理的な冗長性
GDPR の実装
同意管理
interface ConsentRecord {
userId: string;
purpose: string;
granted: boolean;
timestamp: string;
source: 'explicit' | 'legitimate_interest';
withdrawable: boolean;
}
// Data Subject Access Request (DSAR)
async function handleDSAR(userId: string, type: 'access' | 'erasure' | 'portability') {
switch (type) {
case 'access': return await exportUserData(userId); // JSON/CSV
case 'erasure': return await deleteUserData(userId); // Right to be forgotten
case 'portability': return await exportPortableData(userId); // Machine-readable
}
}
データ最小化
- 明示された目的に必要なデータのみを収集します
- 保持ポリシーを設定し、自動削除を有効にします
- 可能な場合は仮名化します(PII をトークンに置き換えます)
- 分析用に匿名化します(k-匿名性、差分プライバシー)
コンシューマー向け Web アプリのデフォルト設定
- フォント、CSS、JS はセルフホストします(
next/font、@fontsource/*)。ページ表示時にfonts.googleapis.comを使用しません(GDPR における IP アドレス漏えい。ミュンヘン地方裁判所、2022 年) - セッションリプレイ(Sentry Replay、PostHog、Hotjar、Clarity、LogRocket、FullStory)は同意を得るまで無効にし、入力内容をマスキングします(カリフォルニア州 CIPA の盗聴に関する申し立て)
- マーケティングメールには、配信停止リンク、List-Unsubscribe ヘッダー、実在する郵送先住所を記載します(CAN-SPAM)
- サブスクリプションでは、ボタンの横に更新条件を表示し、明示的な同意を得て、オンラインで解約できるようにします(カリフォルニア州 ARL、FTC ROSCA)
- 年齢に関するポリシーを定めます。子ども向けでないことを明記するか、13 歳未満のユーザーからデータを収集する前に、確認可能な保護者の同意を得ます(COPPA)
- ユーザーが公開アップロードするコンテンツについて、著作権局に DMCA 指定代理人を登録し(3 年ごとに更新)、通知と削除のページを設けます(17 U.S.C. 512(c))
PCI-DSS の主な管理策
- CVV/CVC はいかなる場合も保存しないでください。形式を問わず、決して保存しません
- カード番号をトークン化します。生の PAN の代わりに Stripe/Braintree のトークンを使用します
- ネットワークを分割します。カード会員データ環境(CDE)を分離します
- 四半期ごとに脆弱性スキャンを実施します。ASV 承認済みの外部スキャンを使用します
- ペネトレーションテストを実施します。少なくとも年 1 回、また重要な変更の後に実施します
コンプライアンス・アズ・コード
- ポリシー・アズ・コード: Open Policy Agent(OPA)、AWS Config Rules、Azure Policy
- インフラストラクチャのコンプライアンス: Terraform Sentinel、Checkov、tfsec
- ランタイムのコンプライアンス: コンテナのモニタリングには Falco、AWS GuardDuty を使用します
- 証跡の収集: 監査証跡としてスクリーンショットやログを自動収集します
コメント
Markdown 対応