テナントルートのバックアップ
各テナントには、ランダムに生成したサーバー側導出ルートのシェアがあり、Deriver AとDeriver Bが別々に保持します。 現在のシェアを失うと、そのペアを必要とする将来の導出ができません。 本番では、別々のGoogle Cloud KMS鍵で保護した、各シェアの暗号化復元コピーをCloudflare R2に保存します。 ウォレットのカストディシードとクライアント署名ルートは、既存の鍵管理経路に留まります。 このバックアップの対象は、サーバーのテナントルートシェアです。
このページは、R120の管理型可用性バックアップを説明します。 R121のテナント管理の復元パッケージと、R122で計画するウォレット移行パッケージは、内容と承認が異なります。 復元と移行を参照してください。
ストレージと鍵の管理主体
| 素材 | Deriver A | Deriver B |
|---|---|---|
| 有効なシェア | A専用のD1内で暗号化 | B専用のD1内で暗号化 |
| 管理型バックアップ | AのR2バケット内の暗号文 | BのR2バケット内の暗号文 |
| バックアップのラッピング鍵 | Google KMS鍵A | Google KMS鍵B |
| KMSへのアクセス | 鍵Aの利用を許可したAのサービスアカウント | 鍵Bの利用を許可したBのサービスアカウント |
本番のバックアップ鍵は、Google KMSのソフトウェア保護レベルを使います。 現在、各ロールは、全テナントで1つのラッピング鍵バージョンを共有します。 Google KMSは、ラッピング鍵素材のエクスポートを許可せず、APIで暗号化と復号を実行します。 Workerは、自身の鍵を呼べるサービスアカウントの認証情報を保持します。バックアップ鍵自体はCloudflareの外に留まります。 Google KMSの暗号化ドキュメント
ロールの認証情報は分離されていますが、両鍵は現在、共通管理下の1つのGoogle Cloudプロジェクトにあります。 実行時の認証情報は分離されます。両鍵の権限を持つ管理者は、共有の信頼境界として残ります。 盗まれたロール認証情報は、アクセスを取り消すまで、そのロールの鍵を呼べます。
バックアップ・更新・復元
テナントルートの作成・更新時、各DeriverはKMSで自身のバックアップを暗号化します。 復号と公開コミットメントの確認により、バックアップを検証します。 このAPI呼び出し中、Google KMSはそのロールの平文シェアを処理します。 各バックアップは、テナント識別情報、ロール、鍵管理の系統、エポック、シェアのコミットメント、導入証跡に認証付きで紐づきます。 有効化には、両ロールのレコードと検証済みバックアップが必要です。
古い世代のクリーンアップが成功すると、各テナントには、A用とB用の2つの現行シェアの暗号化バックアップオブジェクトがあります。 R2には補助的な証跡オブジェクトも保存します。 更新中やクリーンアップ中断時には、現行、保留、廃止済みエポックのオブジェクトが共存する場合があります。 「2つ」は、クリーンアップ後の現行シェアのバックアップ数です。保存オブジェクト全体の上限ではありません。
承認済みの管理型復元は、対象ロールのバックアップをそのDeriver内で復号し、コミットメントを検証します。 両ロールによる次の世代への更新も必須です。 復元には、保持したR2暗号文、利用可能なKMSバージョン、正規の識別・有効化レコードが必要です。 このフロー内のシェア復元を対象とします。データベースを完全に失った場合は、それらのレコードの復元も必要です。
通常のECDSA・Ed25519署名は、既存のオンライン署名素材を使い、このKMSバックアップアダプターを呼びません。 KMSの可用性と操作料金が影響するのは、バックアップの作成、検証、更新、復元です。
10・50・100テナントの場合の費用
2026年9月5日に確認した米ドル価格では、ソフトウェア鍵バージョンは月額約$0.06です。 暗号化・復号は10,000回あたり$0.03です。手動作成したこれらの鍵には、Autokeyの無料枠を使いません。 Google Cloud KMSの料金
| テナント数 | R2内の現行シェアのバックアップ数 | 有効なKMSバージョン数 | KMSの月額固定費 |
|---|---|---|---|
| 10 | 20 | 2 | 約$0.12 |
| 50 | 100 | 2 | 約$0.12 |
| 100 | 200 | 2 | 約$0.12 |
両シェアの暗号化と検証には、4回のKMS操作を使います。1組あたり約$0.000012です。 再試行、追加検証、復元で呼び出しが増える場合があります。 R2の保存・リクエスト、D1、Workerの実行は別料金です。追加のKMSバージョンを保持すると、固定費も増えます。
R120は、テナント管理者による成功した更新を、テナントごとに直近1時間で1回に制限します。 プロバイダー処理の前に、サーバーで適用します。 待機期間中の別リクエストには、サーバーが計算した再試行時刻とHTTP 429を返します。 同じ操作の再試行には、既存の結果を返します。 復元後に必須の更新は、別途承認した復旧経路を維持します。 環境内でこの上限に依存する前に、デプロイしたリリースと受付ポリシーを確認してください。
ローテーションと破棄の制約
テナントルートの更新は、有効な導出ルートを維持しながらA/Bシェアを変更します。 現在のバックアップ提供者は、設定済みの共有KMSバージョンを使い続けます。 新しいKMSバージョンの作成は、別のラッピング鍵のローテーション操作です。
古いR2オブジェクトを削除しても、KMSバージョンが利用可能な間は、複製した暗号文すべての復元不能を証明できません。 共有KMSバージョンの破棄は、その鍵で暗号化したすべてのバックアップに影響します。 現在のデプロイが保証するのは、運用上のローテーションと暗号化バックアップの可用性です。 テナント単位の暗号学的消去と、侵害からの能動的な回復は未検証です。
テナントルート更新、レーン更新、ウォレットの鍵交換の違いは、鍵のローテーションを参照してください。