HAQM Web Services ブログ

監査のユースケースで HAQM QLDB をHAQM Aurora PostgreSQL に置き換える

本投稿は Replace HAQM QLDB with HAQM Aurora PostgreSQL for audit use cases (記事公開日: 2024 年 7 月 18 日) のブログを翻訳したものです。

HAQM Quantum Ledger Database (HAQM QLDB) はフルマネージド型の台帳データベースサービスで、台帳にコミットされたすべてのトランザクションの完全かつ検証可能な履歴を提供します。HAQM QLDB 台帳の中核となるのがジャーナルです。ジャーナルは追加専用のデータ構造で、ブロックとして保存されたトランザクションの連続的かつイミュータブルなレコードが含まれます。ジャーナル内のブロックは、暗号ハッシュを使用して連結されます。暗号ハッシュチェーンは、暗号検証方法を使用してトランザクションデータの整合性を提供します。トランザクション履歴のイミュータブルで暗号化による検証可能性という 2 つの特性は HAQM QLDB 固有のものであり、お客様が HAQM QLDB を使用してデータの整合性の高い監査と変更履歴を提供する理由でもあります。

この投稿では、監査用に HAQM QLDB の代わりに HAQM Aurora PostgreSQL 互換エディションを使用する方法と、HAQM QLDB が提供する独自の機能の一部を HAQM Aurora PostgreSQL のどの機能に置き換えることができるかについて説明します。

ジャーナルの置き換え

HAQM QLDB では、基になるジャーナルには、クエリステートメントやデータ定義コマンドを含む、コミットされたすべてのトランザクションの不変なレコードが格納されます。ジャーナルのトランザクション履歴は HAQM Simple Storage Service (HAQM S3) バケットにエクスポートして、監査目的でアクセスできます。HAQM Aurora PostgreSQL は、変更に関する永続的で不変なレコードを保持しません。代わりに、その履歴を監査データとして生成し、データベースの外部に保存する必要があります。

HAQM Aurora PostgreSQL は オープンソース監査ロギングエクステンションである pgAudit をサポートしています。これにより、PostgreSQL の標準のロギングと比べてきめ細かなセッションおよびオブジェクトの監査ロギングが可能になります。DDL 操作、読み取り、書き込み、ロールと権限の変更、関数の実行、バキュームやチェックポイントなどのユーザー開始操作などの監査するイベントを選択できます。ログ出力は、HAQM RDS コンソールからアクセスできる標準の postgres.log ファイルに送信され、最大 7 日間保存できます。監査ログデータを永続的に保持するには、ログを HAQM CloudWatch Logs に送信するように Aurora クラスターを設定して、ログを無期限に保持することができます。HAQM CloudWatch Logs は、ログのクエリ、モニタリング、アラート、および管理機能を提供します。CloudWatch Logs は保存時にログファイルを暗号化します。ログの削除を禁止する機能を含め、AWS Identity and Access Management (IAM) を使用して CloudWatch Logsへのアクセスを管理できます。

CloudWatch Logs は、監査人がデータベース監査を行う際に使用するのが難しいインターフェイスかもしれません。「HAQM S3 と HAQM Athena を使用して HAQM RDS for PostgreSQL の一元化された監査データ収集を構築する」という投稿では、監査人が監査データをクエリするためのわかりやすいインターフェイスを提供するソリューションを提供しています。このソリューションでは、HAQM Data Firehose を使用してデータベースのログを CloudWatch Logs から HAQM S3 に送信し、HAQM Athena を使用して SQL でクエリを実行できます。次の図は、このアーキテクチャを示しています。

history() 関数の置き換え

HAQM QLDB history() 関数を使用すると、テーブル内のすべてのレコードのすべてのリビジョンにアクセスできます。history() 関数を使用して、時間の経過とともにデータレコードがどのように変化したかを確認できます。別のテーブルの行に加えられた変更のコピーを格納する監査テーブルを使用して、この機能を HAQM Aurora PostgreSQL で複製できます。

監査テーブルの従来のアプローチは、監査対象のテーブルの構造を反映したテーブルです。トリガーは、メインテーブルの INSERT、UPDATE、DELETE のたびに実行されて、監査テーブルに変更された行のコピーを送信します。この方法のバリエーションでは、監査された行が JSON として保存されるため、ソーステーブルの構造が変更された場合に監査テーブルの構造を変更する必要がなくなります。テーブル権限は、監査テーブル内の行の変更を禁止するように設定されています。次の図は、この設計を示しています。

このアプローチは、正しい権限があればユーザーが監査テーブルのデータを変更できるという点で HAQM QLDB のHistory とは異なります。データアクセス権限の監査は、監査テーブル内のデータの整合性を維持するために重要です。監査テーブルを安全な専用の監査データベースに分離することで、この問題が解消され、監査データの信頼性が高まります。「HAQM Aurora PostgreSQL テーブルの監査記録を作成する」という投稿では、次の図に示すように、AWS Database Migration Service (AWS DMS) を使用してソースデータベースの変更を取得し、監査データベースに安全に保存するソリューションを提供しています。

HAQM QLDB streamsの置き換え

HAQM QLDB streams は、ニアリアルタイムで台帳イベントを HAQM Kinesis Data Streams にフィードします。ストリームレコードには、台帳へのデータ更新と、データベースで実行されたクエリステートメントのレコードが含まれます。ストリームを使用して、台帳から他のシステムにデータを複製できます。ストリームイベントをニアリアルタイムで分析して、疑わしいアクティビティや重要なテーブルやデータへの変更を特定できます。

データレプリケーション

Aurora をプライマリデータベースとして使用する場合、AWS DMS を使用して Aurora から他のシステムにデータをレプリケーションできます。AWS DMS は、1 回限りのデータ移行用だけではありません。ソースの Aurora PostgreSQL データベースから変更データキャプチャ (CDC) を使用して 1 つ以上のターゲットデータベースへの継続的なレプリケーションをサポートしています。HAQM QLDB ストリームを使用してデータをレプリケートする場合とは異なり、AWS DMS を介して HAQM Aurora PostgreSQL からデータをレプリケートする場合、追加のコーディングは必要ありません。AWS DMS は、宣言型 JSON 構文を使用して、ソースデータベースとターゲットデータベース間でデータをマッピングおよび変換します。

ニアリアルタイムの監査

HAQM Aurora PostgreSQL を使用してニアリアルタイムの監査機能を利用するには、Database Activity Streams を使用できます。Database Activity Streams は、Aurora クラスターから Kinesis Data Stream に低レベルの監査情報をニアリアルタイムでフィードします。HAQM QLDB ストリームと同様に、監査イベントをフィルタリング、分析、処理するカスタム Kinesis Data Stream コンシューマーを構築できます。Database Activity Streams は、HAQM QLDB が提供するものよりもはるかに幅広く監査のデータポイントをキャプチャします。Aurora は HAQM QLDB のように DML イベントと DDL イベントを報告しますが、接続、ロールと権限の変更、関数の実行、バキュームやチェックポイントなどのユーザー開始操作も報告します。Database Activity Streams と HAQM QLDB ストリームの主な違いは、HAQM QLDB はコミットされたトランザクションのアクションのみを報告するため、読み取り後にトランザクションをキャンセルすることで、ユーザーが検出されない読み取りを実行できることです。Aurora は、コミットされていないトランザクションも含め、すべてのアクションをアクティビティストリームに報告します。

Database Activity Streams は、データベース管理者のアクティビティの信頼できるログを提供します。Aurora クラスターのアクティビティストリームのアクティベーションはデータベースの外部で実行され、その操作へのアクセスはデータベース権限ではなく IAM 権限によって制御されます。データベース管理者には、監査データの収集や Kinesis Data Stream への公開を妨げるだけの十分なアクセス権がありません。また、データベース管理者は Kinesis Data Stream 内の監査データにアクセスできないため、そのデータの処理を妨害することはできません。

HAQM QLDB では、基礎となるジャーナルにはコミットされたすべてのトランザクションの不変なレコードが格納されます。ジャーナルのトランザクション履歴には、テーブルの history() 関数をクエリするか、Kinesis Data Streams を介してジャーナルを再ストリーミングすることで、いつでもアクセスできます。この機能は Database Activity Streams には存在しません。

ストリーミングされた監査データの有効期限が切れると、そのデータは失われます。監査データを保持するには、HAQM Data Firehose を使用してストリーミングされた監査イベントを 、HAQM S3 に保存することで無期限に保持できます。「Filter HAQM Aurora database activity stream data for segregation and monitoring」という投稿では、Firehose を使用して監査イベントをフィルタリングして HAQM S3 に送信して長期保存するソリューションを記載しています。

pgAudit と Aurora Database Activity Streams による監査の詳細については、「Part 1: Audit Aurora PostgreSQL databases using Database Activity Streams and pgAudit」を参照してください。

まとめ

この投稿では、監査機能および変更履歴機能を提供する HAQM Aurora PostgreSQL の機能について説明しました。この機能は、監査ユースケース向けに HAQM QLDB が提供する独自の機能の一部に取って代わることができます。

次の記事「HAQM QLDB のHAQM Aurora PostgreSQL への移行」では、HAQM QLDB 台帳から HAQM Aurora PostgreSQL にデータを移行するのに役立つソリューションを提供します。

台帳移行の計画や、HAQM Aurora PostgreSQL が台帳データの適切な保存先であるかどうかの判断については、AWS の担当者にお問い合わせください。


著者について

Dan Blaner は、台帳とリレーショナルデータベースを専門とするプリンシパルソリューションアーキテクトです。彼は学ぶこと、物事を理解すること、他の人が物事を理解するのを助けることを楽しんでいます。休みはベースを弾き、仲の良い友達とbad music 作りを楽しんでいます。