hipaa-compliance について
hipaa-complianceは、保護対象保健情報(PHI)を扱う機能を開発するRecovery Coach開発者向けのスキルです。監査ログ、データのサニタイズ、セッション保護、緊急アクセスを、コード例とチェックリストで説明します。
主な機能
- 01アプリ内のPHIの特定
- 02アクセス・変更イベントの記録
- 03ログへのPHI内容の記載防止
- 04セッション保護要件の適用
- 05緊急アクセス手順の遵守
活用シーン
- 01PHIにアクセスするAPIルートの開発
- 02ユーザーデータ閲覧の監査記録追加
- 03PHI機能のリリース前の準拠確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ curiositech/ some_claude_skills --skill hipaa-complianceインストール後、Claude Code で/hipaa-complianceを入力して読み込まれたか確認します。
同梱ファイル.claude-plugin/plugin.json
詳細
Recovery Coach の HIPAA コンプライアンス
このスキルは、保護対象保健情報(PHI)を扱う機能を開発する際に、HIPAA コンプライアンスを維持するために役立ちます。
このアプリケーションにおける PHI とは?
| データの種類 | PHI の該当性 | 取り扱い |
|---|---|---|
| チェックイン時の気分/渇望 | PHI | すべてのアクセスを監査 |
| 日記のエントリー | PHI | すべてのアクセスを監査 |
| チャットの会話 | PHI | すべてのアクセスを監査 |
| ユーザープロフィール(名前、メールアドレス) | PHI | 変更を監査 |
| 断酒開始日 | PHI | アクセスを監査 |
| 緊急連絡先 | PHI | アクセスを監査 |
| 使用状況分析データ(集計済み) | PHI ではない | 監査不要 |
| ページビュー(コンテンツなし) | PHI ではない | 監査不要 |
監査ログの要件
ログに記録するタイミング
次の操作は必ずログに記録します:
- PHI の閲覧(チェックイン、日記、メッセージ)
- PHI の作成/更新/削除
- ユーザーデータのエクスポート
- ユーザー情報への管理者アクセス
- 認証の失敗
- セキュリティイベント(レート制限、不正アクセス)
ログの記録方法
src/lib/hipaa/audit.ts の監査ログユーティリティを使用します:
import {
logPHIAccess,
logPHIModification,
logSecurityEvent,
logAdminAction
} from '@/lib/hipaa/audit';
// Viewing PHI
await logPHIAccess(
userId,
'checkin', // targetType
checkinId, // targetId
AuditAction.PHI_VIEW
);
// Modifying PHI
await logPHIModification(
userId,
'journal',
journalId,
AuditAction.PHI_UPDATE,
{ field: 'content' } // Never include actual content!
);
// Security event
await logSecurityEvent(
userId,
AuditAction.RATE_LIMIT,
{ path: '/api/chat', attempts: 60 }
);
// Admin action
await logAdminAction(
adminId,
AuditAction.ADMIN_USER_VIEW,
'user',
targetUserId
);
データのサニタイズ
次のフィールドは絶対にログに記録しないでください
監査システムが自動的にサニタイズしますが、明示的に指定してください:
// BAD - Contains PHI
await logPHIAccess(userId, 'journal', id, action, {
content: journalEntry.content // NEVER DO THIS
});
// GOOD - Only metadata
await logPHIAccess(userId, 'journal', id, action, {
wordCount: journalEntry.content.length,
hasAttachments: false
});
サニタイズされるフィールド(自動的にマスキング)
password、token、secret、keyauthorization、cookie、sessioncredential、content、message、notes
セッションセキュリティの要件
src/lib/auth.ts に基づきます:
- セッションタイムアウト:操作がない状態が 15 分続いた場合(HIPAA の要件)
- セッションの最長時間:最大 8 時間
- ログイン失敗時のロックアウト:5 回の失敗で 30 分間の利用停止
- パスワード要件:12 文字以上、大文字と小文字、数字、特殊文字を含む
コードパターン
監査ログを記録する API ルート
import { getSession, requireAuth } from '@/lib/auth';
import { logPHIAccess } from '@/lib/hipaa/audit';
export async function GET(request: Request) {
const session = await getSession();
if (!session) {
return Response.json({ error: 'Unauthorized' }, { status: 401 });
}
// Fetch the data
const data = await fetchUserData(session.userId);
// Log the access
await logPHIAccess(
session.userId,
'userdata',
session.userId,
AuditAction.PHI_VIEW
);
return Response.json(data);
}
PHI にアクセスするコンポーネント
'use client';
import { useEffect } from 'react';
export function JournalViewer({ entryId }: { entryId: string }) {
useEffect(() => {
// Log view on mount (server-side preferred, but client backup)
fetch('/api/audit/log', {
method: 'POST',
body: JSON.stringify({
action: 'PHI_VIEW',
targetType: 'journal',
targetId: entryId
})
});
}, [entryId]);
// ... render
}
コンプライアンスチェックリスト
PHI に関わる機能をリリースする前に、次の項目を確認してください:
- すべての PHI アクセスが監査ログに記録されている
- ログに PHI の内容が含まれていない(ID とメタデータのみ)
- データへのアクセスに認証が必要である
- 管理者アクセスに個別の監査証跡がある
- アクセス失敗がログに記録されている
- データのエクスポートが監査ログに記録されている
- 機密フィールドが保存時に暗号化されている
- セッションタイムアウトが適用されている
監査ログの保持期間
- 最短期間:6 年(HIPAA の要件)
- 形式:生ログを 1 年間保持し、その後は圧縮
- 保存場所:データベース内の
audit_logテーブル - エクスポート:コンプライアンス監査用の暗号化されたエクスポート
緊急アクセス(ブレークグラス)
緊急時には、ブレークグラスアクセスを使用します:
import { requestBreakGlassAccess } from '@/lib/hipaa/break-glass';
// This creates enhanced audit trail
const access = await requestBreakGlassAccess(
adminId,
targetUserId,
'Emergency support required - user reported crisis'
);
ブレークグラスアクセス:
- 書面による正当な理由が必要です
- 恒久的な監査記録が作成されます
- コンプライアンス責任者にアラートが送信されます
- 24 時間以内にレビューする必要があります
リソース
- HIPAA セキュリティルール:45 C.F.R. § 164.312
- 監査管理基準:45 C.F.R. § 164.312(b)
- インシデント対応計画:
docs/INCIDENT-RESPONSE-PLAN.md - セキュリティドキュメント:
docs/SECURITY-HARDENING.md
コメント
Markdown 対応