# セキュリティ、プライバシー、およびデータ居住性

> 患者データの保護方法：EUデータ居住性、プロジェクト分離、ペアワイズID、認証情報、同意、来歴、患者が確認できる監査ログ、およびプライベートベータの制限事項。

Source: https://developers.anpheros.com/ja/guides/security

医療データは、アプリケーションが保持できる最も機密性の高いデータです。このページでは、Anpheros Platform が現在どのようにデータを保護しているか（実装されているもののみ）、およびプライベートベータ期間中にまだ制限されている事項について説明します。

## データレジデンシー

- プラットフォームの全データは欧州連合（EU）内で保存および処理されます。サービスとそのデータベースはGoogle Cloud `europe-west4`（オランダ）に、Webhook配信キューは`europe-west3`（フランクフルト）に、アクセスログの追記専用エクスポートはBigQueryのEUロケーションに保存されます。
- **米国データリージョン:** 本番環境のお客様向けに、HIPAAビジネスアソシエイト契約（下記参照）に基づき、リクエストに応じて利用可能です。この場合、米国の患者データは米国内リージョンから流出することはありません。
- ドキュメントは、顧客管理暗号化キー（CMEK）で暗号化されたEUストレージバケットに保存されます。オリジナルは最終化後に不変となり、そのSHA-256チェックサムとサイズが記録されます。

## アプリケーション間の分離

- 各APIキーは1つの**プロジェクト**に属します。プロジェクトは、自身が作成した患者のみを参照できます。サンドボックス環境では、他のプロジェクトからは参照できない、自身の合成患者のコピーも含まれます。
- **ペアワイズ識別子:** 各プロジェクトは、同じ人物に対して独自のIDを受け取ります。内部IDはプラットフォームから外部に出ることはないため、アプリケーション間でIDを相関させることはできません。
- アクセスできないレコードは、`404` を返しますが、決して `403` を返すことはありません。そのため、患者の存在を推測することはできません。
- **サンドボックスと本番環境は別々のデータベースです。** サンドボックスキー (`sk_test_`) は、物理的に実際の患者にアクセスすることはできません。
- 患者の同意を得た場合、組織は他の組織が記録したものも含め、レコード全体を読み取ることができますが、自身が記録したものだけを変更または削除できます。

## 認証情報

- APIキーは一度だけ表示され、SHA-256ハッシュとしてのみ保存されます。キーには`read` / `write` のスコープがあり、環境を越えることはありません。
- OAuth 2.1 は必須のPKCE (S256) を使用します。`redirect_uri` は正確に登録する必要があります。アクセストークンの有効期間は30分、リフレッシュトークンは30日で、使用ごとにローテーションされます。
- **リフレッシュトークン再利用検出:** すでに使用されたリフレッシュトークンを提示すると、トークンチェーン全体が失効します。
- トークンレスポンスには`Cache-Control: no-store`が含まれます。OpenID Connect `id_token` はRS256で署名され、公開鍵は`/oauth/jwks`で公開されています。

## 同意、来歴、および監査

- 患者は、ホストされた同意ページで、レコードと期間（30、90、180、または365日）を選択して、アプリケーションへのアクセスを許可します。スコープはリソースタイプとアクションごとに設定され、オプションでカテゴリによってフィルタリングされます。すべての許可は、FHIR `Consent` リソースとしてミラーリングされます。
- 取り消しは次のリクエストで有効になり、アプリケーションは再度リフレッシュできません。
- **すべての書き込み**は `Provenance` リソースを生成します。誰が（患者、施術者、デバイス、インポート、またはAI）、どの組織のために、どのソースシステムから書き込んだかを示します。
- **すべての読み取りはログに記録され、患者に表示されます**。プロジェクト固有のAPIキーで行われた読み取りや、AIモデル用に構築されたコンテキストも含まれます。

## トランスポートとウェブセキュリティ

- HTTPSのみを使用し、HTTP Strict Transport Securityを適用します。APIレスポンスには、 restrictive な Content-Security-Policy、`X-Content-Type-Options: nosniff`、`X-Frame-Options: DENY`、および strict な referrer policy が含まれます。
- Webhook配信は、タイムスタンプとボディに対してHMAC-SHA256で署名されます。受信側は、5分以上前の署名を拒否する必要があります。イベントにはIDとバージョンが含まれ、臨床コンテンツは含まれません。
- レート制限: クレデンシャルごとおよびIPアドレスごとに1分あたり600リクエスト。JSONボディは最大2 MiB。ドキュメントは最大25 MiB。

## 検索エンジンとAIクローラー

公開ページ（anpheros.com、プラットフォーム紹介、およびこのドキュメント）は、検索エンジンおよびAIクローラーに公開されています。API、ダッシュボード、OAuthおよび同意ページ、患者アプリ（`app.anpheros.com`）は、`noindex`および`robots.txt`ルールによって除外されており、認証なしで患者データを返すことはありません。

## HIPAA (米国クリニック)

米国にあるクリニックにとって、Anpheros は **Business Associate** です。HIPAA Security Rule に対応する内容は以下の通りです。

| Safeguard | Anpheros による実装方法 |
|---|---|
| Assigned responsibility, risk analysis, written policies (§164.308) | 担当の Security Officer、年次リスク分析、10個の書面ポリシー（アクセス、暗号化、ログ記録、インシデント対応、不正通知、保持とバックアップ、トレーニング、デバイス、緊急アクセス、ベンダー）、6年間保管 |
| Unique user identification, access control (§164.312(a)) | すべてのキー、トークン、個人に固有のIDを付与。プロジェクトごとに患者へのアクセスを制限。すべての読み取りで同意スコープを適用。本番プロジェクトを持つ組織には MFA または SSO を必須。ダッシュボードでの自動ログオフ |
| Audit controls (§164.312(b)) | すべての読み取りと書き込みをログ記録、ハッシュチェーン化、追記専用でエクスポート。患者が閲覧可能 |
| Integrity (§164.312(c)) | バージョン管理されたリソース、すべての書き込みにプロベナンスを付与、SHA-256 による不変ドキュメント |
| Transmission security (§164.312(e)) | TLS 1.2+、HSTS、署名付きWebhook、HTTPSのみの配信 |
| Encryption at rest | データベースとバックアップを暗号化。顧客管理キーによるドキュメント暗号化 |
| Contingency plan (§164.308(a)(7)) | 日次バックアップ、ポイントインタイムリカバリ、90日ごとの復旧テスト（実施時間を記録） |
| Breach notification (§164.410) | BAA により Covered Entity に 5 営業日以内に通知（法律では 60 日） |
| Business associate chain (§164.308(b)) | Google Cloud は BAA を締結済み。サブプロセッサーリストは BAA の別添資料に記載 |

**Business Associate Agreement** および **米国データリージョン** は、本番環境のお客様向けにリクエストに応じて提供可能です（platform@anpheros.com までご連絡ください）。米国患者データの本番環境は、BAA 署名後に利用可能になります。サンドボックスには合成患者データのみが含まれるため、米国の開発者は BAA なしで今日から開発を進めることができます。Anpheros は SOC 2 または HITRUST の認証を受けていません。病院のお客様から要求があった場合に、SOC 2 Type II 監査を計画しています。

## 現在の制限事項（プライベートベータ）

- 自動フェイルオーバーなしのシングルゾーンホスティング。現時点では契約SLAはありません。
- 本番環境キーは、署名済みのデータ処理契約を持つ検証済み組織に発行されます。ベータパートナーは合成データから開始します。
- SMART EHR起動およびOpenID `nonce` パラメータは、現時点ではサポートされていません。

## 関連情報

- [開発者向け GDPR と医療データ](https://developers.anpheros.com/ja/guides/gdpr-health-data-developers)
- [医療データ来歴の説明](https://developers.anpheros.com/guides/medical-data-provenance): 誰が何を記述したか、およびその記録方法
- [同意とアクセスモデル](https://developers.anpheros.com/ja/guides/consent)
- [認証と OAuth](https://developers.anpheros.com/ja/guides/authentication)
- [制限とレート制限](https://developers.anpheros.com/ja/guides/limits)
- [信頼性、ステータス、インシデント](https://developers.anpheros.com/ja/guides/reliability): モニタリング、バックアップ、インシデントコミュニケーション
- [アーキテクチャ](https://developers.anpheros.com/ja/guides/architecture)
- [開発者向け欧州医療データスペース (EHDS)](https://developers.anpheros.com/ja/guides/ehds-for-developers)
