Cloud Service
Amazon QLDB (Quantum Ledger Database)
変更履歴を改ざん不能な形で完全に記録できる、フルマネージドな台帳データベース。中央集権型の信頼できる権威ある記録元(システムオブレコード)が必要な用途に向く。
- 1.データの全変更履歴を追記専用で残し、暗号的に検証できる中央集権型の台帳DB。
- 2.PartiQLで操作し、各文書のリビジョン履歴とハッシュチェーンで改ざんの有無を証明できる。
- 3.サーバーレスで自動スケールし、金融取引やサプライチェーンなど監査が重要な記録元に向く。
解決する課題
- 金融取引や資産移転のように、いつ・誰が・何を変更したかを後から検証可能な形で完全に残したい
- 監査要件のために、リレーショナルDBの監査テーブルやトリガで改ざんされない履歴を自作する手間と不確実性をなくしたい
- ブロックチェーンほどの分散合意は不要だが、**信頼できる単一の権威ある記録元(システムオブレコード)**が欲しい
主要概念と用語
- 台帳(レジャー): 文書とその全変更履歴を保持する最上位の入れ物。追記専用で過去を上書きしない
- テーブル / 文書: 台帳内でデータを格納する単位。文書はスキーマレスで、JSONに似た構造を持つ
- リビジョン: 文書が変更されるたびに作られる版。各リビジョンが履歴として積み上がる
- ジャーナル: すべての変更をコミット順に記録する追記専用のログ。台帳の真実の源(信頼できる記録元)にあたる
- ブロック / ハッシュチェーン: ジャーナルの各ブロックを暗号ハッシュで連結した構造。前のブロックを変えると後続が壊れるため改ざんを検知できる
- ダイジェスト: 台帳のある時点の状態を表す暗号ハッシュ。これを基点に個別データの正当性を検証する
- 証明(プルーフ): ある文書のリビジョンがダイジェストに含まれることを数学的に示す検証情報
- PartiQL: SQL互換のクエリ言語。文書データに対しSQLライクに読み書きする
仕様・制限・クォータ
- サーバーレスで提供され、容量のプロビジョニングやサーバー管理は不要。利用量に応じて課金される
- データは追記専用のジャーナルとして記録され、過去のリビジョンは物理的に上書きされない
- 操作はPartiQLで行い、トランザクションはACID特性を満たす
- 履歴のうち不要になった古いリビジョンは**リダクション(編集削除)**で内容を取り除けるが、ジャーナルの連続性とハッシュチェーンは保たれる
- 1トランザクションあたりのサイズや文書数、1台帳あたりのテーブル数などには上限がある。具体的な数値は変動するため、最新値は公式ドキュメントで確認する
QLDBは新規顧客向けの提供方針が変更されたサービスです。新規プロジェクトでの採用可否や移行の検討にあたっては、必ず公式の最新アナウンスとドキュメントで提供状況を確認してください。設計上は追記専用台帳の概念を理解しておくことが重要です。
内部の仕組み
QLDBの中核は追記専用のジャーナルです。すべての変更はトランザクション単位でジャーナルへ順に記録され、各エントリはブロックにまとめられて前のブロックの暗号ハッシュとつながります。このハッシュチェーンにより、過去のいずれかの記録を後から書き換えると以降のハッシュが一致しなくなり、改ざんを検知できます。利用者が見るテーブルは、このジャーナルから導出された現在の状態(マテリアライズドビュー)であり、各文書にはリビジョン履歴が紐づきます。ある時点のダイジェストを取得しておけば、後から特定の文書リビジョンに対する証明を取り寄せ、そのデータがダイジェストに確かに含まれることを暗号的に検証できます。分散ノード間の合意を必要としない中央集権型のため、ブロックチェーンより構成が単純で性能を出しやすい点が特徴です。
改ざん検知を実効的にするには、ダイジェストを定期的に取得して安全な場所に保管します。後日、保管したダイジェストと証明を突き合わせることで、その時点以降にデータが書き換えられていないことを独立して示せます。
設計パターン / ベストプラクティス
- 取引記録、資産・在庫の移動、設定変更の履歴など、改ざんされない記録元が要件の用途で採用する
- 文書のキー設計はアクセスパターンから決め、よく検索する属性にインデックスを用意してスキャンを避ける
- 高頻度な分析や全文検索など台帳が不得手な処理は、変更をストリームで他サービスへ流すことで分担する
- 監査証跡として使う場合は、ダイジェストの取得と保管を定期的に自動化し、検証手順を運用に組み込む
- 個人情報など後で削除義務が生じうるデータは、リダクションを前提に文書構造を設計する
運用・監視
- CloudWatchで読み書きI/Oやコマンドレイテンシ、エラーなどを監視する
- 変更を下流に連携する場合はジャーナルストリームを使い、配信先での処理遅延や失敗を監視する
- 重いクエリはインデックスの効く条件で絞り込み、テーブル全体のスキャンを避けて応答時間とコストを抑える
- 監査要件に合わせ、ダイジェスト取得と証明による検証を定期ジョブとして実行し記録する
- 操作の監査にはCloudTrailを利用し、誰がいつ何をしたかを記録する
コスト
- 主なコストは書き込みI/O、読み取りI/O、ジャーナルおよびインデックスのストレージ量、データ転送
- テーブルスキャンを伴う重いクエリは読み取りI/Oを増やすため、インデックス設計がコストに直結する
- 履歴は追記専用で蓄積し続けるため、長期的なストレージ増加を見込んで設計する
- 料金は変動するため、最新の単価は公式の料金ページで確認する
セキュリティ
- アクセス制御はIAMで行い、最小権限の原則に従って台帳やテーブル単位の権限を付与する
- 保存データはKMSで暗号化され、通信はTLSで保護される
- VPCエンドポイント経由でプライベートにアクセスを構成し、ネットワーク到達範囲を絞る
- 改ざん耐性そのものがセキュリティ機能であり、ハッシュチェーンと証明によりデータの完全性を独立して検証できる
- 操作の監査にはCloudTrailを利用し、台帳への操作履歴を残す
関連サービス・比較
| 観点 | QLDB | Managed Blockchain |
|---|---|---|
| 信頼モデル | 中央集権型(単一の所有者) | 分散型(複数当事者で合意) |
| 主な用途 | 信頼できる単一の記録元・監査証跡 | 相互不信の当事者間での共有台帳 |
| 改ざん耐性 | ハッシュチェーンと証明で検証 | 分散合意とハッシュで検証 |
| 構成の複雑さ | シンプル(ノード管理不要) | ネットワークとメンバー管理が必要 |
ハンズオン / CLI例
# 台帳を作成(削除保護を有効化)
aws qldb create-ledger \
--name vehicle-registration \
--permissions-mode STANDARD \
--deletion-protection
# 台帳の状態を確認
aws qldb describe-ledger \
--name vehicle-registration
# 改ざん検証の基点となるダイジェストを取得
aws qldb get-digest \
--name vehicle-registration
AWS Service
Amazon QLDB (Quantum Ledger Database)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
データベース
比較で見る軸
クラウド: AWS / カテゴリ: データベース / 難易度: intermediate
導入後に効く点
PartiQLで操作し、各文書のリビジョン履歴とハッシュチェーンで改ざんの有無を証明できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- データベース
- 難易度
- intermediate
- 関連資格
- SAA-C03 / DEA-C01
- 設計柱
- security / reliability
判断チェックリスト
- 自社の用途が「データベース / security」に近いか確認する。
- 強みである「データの全変更履歴を追記専用で残し、暗号的に検証できる中央集権型の台帳DB。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。