ステップ 6. 元帳内の伝票を検証する - Amazon Quantum Ledger Database (Amazon QLDB)

英語の翻訳が提供されている場合で、内容が矛盾する場合には、英語版がオリジナルとして取り扱われます。翻訳は機械翻訳により提供されています。

ステップ 6. 元帳内の伝票を検証する

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

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

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

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

  1. https://console.aws.amazon.com/qldb で Amazon 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 は、リビジョンがコミットされたブロック位置を指定するイオン構造です。

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

  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(オプション): リソースをクリーンアップする」に進みます。