ステップ 6: 台帳のドキュメントを検証する - Amazon Quantum Ledger Database (Amazon QLDB)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 6: 台帳のドキュメントを検証する

Amazon QLDB では、SHA-256 の暗号的ハッシュを使用して、台帳のジャーナルのドキュメントの整合性を効率的に検証できます。この例では、Alexis と Brent は VIN が 1N4AL11D75C109151 の車両をディーラーに下取りに出して、新しいモデルに買い替えることにしました。ディーラーは、登記所に問い合わせて車両の所有権を検証することで、このプロセスを開始します。

検証と暗号的ハッシュが QLDB でどのように機能するかについては、「Amazon QLDB でのデータ検証」を参照してください。

このステップでは、vehicle-registration 台帳内のドキュメントリビジョンを検証します。まず、ダイジェストをリクエストします。ダイジェストは出力ファイルとして返され、台帳の変更履歴全体の署名として機能します。次に、そのダイジェストに関連するリビジョンの証明をリクエストします。この証明を使用して、すべての検証チェックに合格すると、リビジョンの整合性が検証されます。

ダイジェストをリクエストするには

  1. Amazon QLDB コンソール (https://console.aws.amazon.com/qldb) を開きます。

  2. ナビゲーションペイン内で [Ledgers (台帳)] を選択します。

  3. 台帳のリストで、「vehicle-registration」を選択します。

  4. [Get digest (ダイジェストの取得)] を選択します。[Get digest (ダイジェストの取得)] ダイアログボックスに、以下のようなダイジェスト詳細が表示されます。

    • [Digest] (ダイジェスト) - リクエストしたダイジェストの SHA-256 ハッシュ値。

    • [Digest tip address] (ダイジェストティップアドレス) - リクエストしたダイジェストの対象となっているジャーナル内の最新のブロック位置。アドレスには以下の 2 つのフィールドがあります。

      • strandId - ブロックを含むジャーナルストランドの一意の ID。

      • sequenceNo - ストランド内のブロックの位置を指定するインデックス番号。

    • [Ledger] (台帳) - ダイジェストをリクエストした台長名。

    • [Date] (日付) - ダイジェストをリクエストしたときのタイムスタンプ。

  5. ダイジェスト情報を確認します。次に、[Save] (保存) を選択します。デフォルトのファイル名はそのままにしておくことも、新しい名前を入力することもできます。

    このステップでは、Amazon Ion 形式のコンテンツを含むプレーンテキストファイルが保存されます。このファイルには、.ion.txt のファイル名拡張子が付いており、前述のダイアログボックスに列挙されたすべてのダイジェスト情報が含まれています。以下は、ダイジェストファイルのコンテンツ例です。フィールドの順序はブラウザにより異なる場合があります。

    {   "digest": "42zaJOfV8iGutVGNaIuzQWhD5Xb/5B9lScHnvxPXm9E=",   "digestTipAddress": "{strandId:\"BlFTjlSXze9BIh1KOszcE3\",sequenceNo:73}",   "ledger": "vehicle-registration",   "date": "2019-04-17T16:57:26.749Z" }
  6. このファイルを保存して後でアクセスすることができます。以下の手順では、このファイルを使用して、ドキュメントのリビジョンを検証します。

台帳ダイジェストを保存した後は、そのダイジェストと照合してドキュメントのリビジョンを検証するプロセスを開始できます。

注記

検証の本稼働ユースケースでは、2 つのタスクを同時に行うのではなく、以前に保存したダイジェストを使用します。ベストプラクティスとして、後で検証するリビジョンがジャーナルに書き込まれ次第、ダイジェストをリクエストして保存します。

ドキュメントのリビジョンを検証するには

  1. 最初に、検証するドキュメントリビジョンの idblockAddress に関するクエリを台帳に対し実行します。これらのフィールドはドキュメントのメタデータに含まれており、コミット済みビューでクエリを実行できます。

    ドキュメント id は、システムによって割り当てられた一意の ID 文字列です。blockAddress は、リビジョンがコミットされたブロックの位置を指定する Ion 構造です。

    QLDB コンソールのナビゲーションペインで、[PartiQL エディタ] を選択します。

  2. vehicle-registration 台帳を選択します。

  3. クエリエディタウィンドウで、以下のステートメントを入力し、[Run (実行)] を選択します。

    SELECT r.metadata.id, r.blockAddress FROM _ql_committed_VehicleRegistration AS r WHERE r.data.VIN = '1N4AL11D75C109151'
  4. クエリによって返された idblockAddress の値をコピーし、保存します。id フィールドの二重引用符は必ず省略してください。Amazon Ion では、文字列データ型は二重引用符で区切られます。

  5. これでドキュメントリビジョンが選択されたため、検証プロセスを開始できます。

    ナビゲーションペイン内で [Verification (検証)] を選択します。

  6. [Verify document (ドキュメントの検証)] フォームの [Specify the document that you want to verify (検証するドキュメントの指定)] に、次の入力パラメータを入力します。

    • [Ledger] (台帳) — vehicle-registration を選択します。

    • [Block address] (ブロックアドレス) - ステップ 3 のクエリで返された blockAddress 値。

    • [Document ID] (ドキュメント ID) - ステップ 3 のクエリで返された id 値。

  7. [Specify the digest to use for verification (検証に使用するダイジェストの指定)] で、[Choose digest (ダイジェストの選択)] を選択することで、以前に保存されたダイジェストを選択します。ファイルが有効であれば、コンソールにあるすべてのダイジェストフィールドにデータが自動入力されます。また、以下の値をダイジェストファイルから手動で直接コピーして貼り付けることもできます。

    • [Digest] (ダイジェスト) - ダイジェストファイルからの digest 値。

    • [Digest tip address] (ダイジェストティップアドレス) - ダイジェストファイルからの digestTipAddress 値。

  8. ドキュメントおよびダイジェストの入力パラメータを再確認し、[Verify (検証)] を選択します。

    コンソールが次の 2 つのステップを自動的に実行します。

    1. 指定されたドキュメントに関するプルーフを QLDB にリクエストします。

    2. QLDB によって返された証拠を使用してクライアント側 API を呼び出すことで、提供されたダイジェストと照合してドキュメントのリビジョンを検証します。

    コンソールの [Verification results (検証結果)] カードに、リクエストの結果が表示されます。詳細については、「検証結果」を参照してください。

  9. 検証ロジックをテストするには、「ドキュメントのリビジョンを検証するには」のステップ 6~8 を繰り返しますが、[Digest] (ダイジェスト) 入力文字列の 1 文字を変更します。これにより、[Verify (検証)] リクエストは失敗し、適切なエラーメッセージが表示されます。

vehicle-registration 台帳を使用する必要がなくなった場合は、「ステップ 7 (オプション): リソースをクリーンアップする」に進みます。