mcpField
H
hipaa-compliance

hipaa-compliance

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

hipaa-compliance について

hipaa-complianceは、保護対象保健情報(PHI)を扱う機能を開発するRecovery Coach開発者向けのスキルです。監査ログ、データのサニタイズ、セッション保護、緊急アクセスを、コード例とチェックリストで説明します。

主な機能

  1. 01アプリ内のPHIの特定
  2. 02アクセス・変更イベントの記録
  3. 03ログへのPHI内容の記載防止
  4. 04セッション保護要件の適用
  5. 05緊急アクセス手順の遵守

活用シーン

  1. 01PHIにアクセスするAPIルートの開発
  2. 02ユーザーデータ閲覧の監査記録追加
  3. 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、key
  • authorization、cookie、session
  • credential、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

コメント