SOC 2（System and Organization Controls 2）は、米国公認会計士協会（AICPA）がセキュリティ、可用性、処理の完全性、機密性、プライバシーに関する組織の統制を評価するために開発したフレームワークです。

参照: [AICPA SOC 2](https://www.aicpa-cima.com/topic/audit-assurance/audit-and-assurance-greater-than-soc-2)

## トラストサービス基準マッピング

| トラスト原則 | 基準 | Rediaccの機能 |
|------------|------|--------------|
| **セキュリティ** (CC6) | 論理的アクセス制御、暗号化 | LUKS2 AES-256保存時暗号化。認証情報はオペレーターのローカル設定（`~/.config/rediacc/`）にのみ保存され、サーバーには保存されません。SSH鍵ベースのアクセス。リポジトリごとに分離されたDocker daemon。 |
| **可用性** (A1) | システム復旧とレジリエンス | `rdc repo backup push/pull`によるSSH、S3、B2、Azure、GDriveへの暗号化オフサイトコピー。CoWスナップショットによる即時ロールバック。Forkベースのアップグレードによるゼロダウンタイム変更。 |
| **処理の完全性** (PI1) | 正確で完全な処理 | 決定論的なRediaccfileライフサイクルフック（`up`/`down`）が一貫したデプロイメントを保証。`rdc repo validate`が予期しないシャットダウンやバックアップ操作後のリポジトリの完全性とバックアップの健全性を検証。 |
| **機密性** (C1) | 不正アクセスからのデータ保護 | 固有のLUKS認証情報によるリポジトリごとの暗号化。iptables、個別Docker daemon、ループバックIPサブネットによるネットワーク分離。異なるリポジトリのコンテナは互いに見えません。ゼロ知識設定ストアがアップロード前にクライアント側で設定を暗号化。サーバーは復号できない不透明なblobのみを保存。 |
| **プライバシー** (P1-P8) | 個人データの取り扱い | セルフホスト型：操作中のデータ外部流出なし。すべてのデータアクセスの監査証跡。暗号化キー管理は顧客の管理下。設定ストアは分割キー導出（passkey PRF + サーバーシークレット）を使用し、どちらの当事者も単独でデータにアクセスできません。 |

## 監査証跡

Rediaccは40以上のアカウントレベルのイベントタイプを記録します：

- **認証**: ログイン、ログアウト、パスワード変更、2FA有効化/無効化、セッション失効
- **認可**: APIトークンの作成/失効、ロール変更、チームメンバーシップ
- **設定**: 設定ストアのpush/pull、メンバー管理、アクセス失敗（IPの不一致、SDK拒否）
- **ライセンス**: マシンのアクティベーション、ライセンス発行、サブスクリプション変更

これらのログは管理ダッシュボード（ユーザー、チーム、日付によるフィルタリング付き）と`rdc audit` CLIでプログラム的にエクスポートして利用できます。マシンレベルの操作（フォーク、バックアップ、デプロイ）はお客様のインフラ上でSSH経由で実行されるため、それらの監査証跡はお客様のシステムログに存在します。

## 変更管理

Forkベースのワークフローは制御された変更管理をサポートします：

1. 本番リポジトリをフォーク（`rdc repo fork`）
2. フォークで変更を適用しテスト
3. フォークを独立して検証
4. フォークを本番に昇格（`rdc repo takeover`）

各ステップはタイムスタンプと実行者の識別情報とともに記録されます。

## アクセス制御

- **マシンアクセス**: SSH鍵認証のみ。パスワードベースのSSHはありません。
- **APIトークン**: スコープ付き権限、オプションのIPバインド、チーム削除時の自動失効。
- **リポジトリ分離**: 各リポジトリは独自のDocker daemonソケットを持ちます。あるリポジトリへのアクセスは同一マシン上の他のリポジトリへのアクセスを許可しません。
- **設定ストアトークン**: 初回使用時のIPバインド、24時間自動失効、同時性のための3リクエスト猶予ウィンドウを持つ使い捨てローテーションするトークン。X25519鍵交換による即時失効付きメンバーアクセス管理。