pgAudit 拡張機能のセットアップ - Amazon Relational Database Service

pgAudit 拡張機能のセットアップ

RDS for PostgreSQL DB インスタンス に pgAudit 拡張機能を設定するには、まず RDS for PostgreSQL DB インスタンスのカスタム DB パラメータグループの共有ライブラリに pgAudit を追加します。カスタム DB パラメータグループの作成については、「Amazon RDS のパラメータグループ」を参照してください。次に、pgAudit 拡張機能をインストールします。最後に、監査するデータベースとオブジェクトを指定します。このセクションの手順で、方法を示します。AWS Management Console または AWS CLI を使用できます。

これらすべてのタスクを実行するには、rds_superuser ロールとして権限が必要です。

以下の手順では、 RDS for PostgreSQL DB インスタンスがカスタム DB パラメータグループに関連付けられていることを前提としています。

pgAudit 拡張機能をセットアップするには
  1. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

  2. ナビゲーションペインで、 RDS for PostgreSQL DB インスタンスを選択します。

  3. [Configuration] (設定) タブを開きます。RDS for PostgreSQL DB インスタンス。インスタンスの詳細の中から、パラメータグループのリンクを見つけてください。

  4. リンクを選択して、に関連するカスタムパラメータを開きます。RDS for PostgreSQL DB インスタンス。

  5. パラメータ検索フィールドに、shared_pre を入力して shared_preload_libraries パラメータを検索します。

  6. プロパティ値にアクセスするには、[Edit parameters] (パラメータの編集) を選択します。

  7. [Values] (値) フィールドのリストに pgaudit を追加します。値のリスト内の項目を区切るにはカンマを使用します。

    pgAudit が追加された shared_preload_libaries パラメータの画像。
  8. RDS for PostgreSQL DB instance を再起動して、shared_preload_libraries パラメータの変更を有効にします。

  9. インスタンスが使用可能になったら、pgAudit が初期化されていることを確認します。psql を使用して RDS for PostgreSQL DB インスタンスに接続し、次のコマンドを実行します。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
  10. pgAudit を初期化すると、拡張機能を作成できるようになりました。pgaudit 拡張機能はデータ定義言語 (DDL) ステートメントを監査するためのイベントトリガーをインストールするため、ライブラリを初期化した後に拡張機能を作成する必要があります。

    CREATE EXTENSION pgaudit;
  11. psql セッションを終了します。

    labdb=> \q
  12. AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/ を開きます。

  13. リストで pgaudit.log パラメータを検索し、ユースケースに応じた値に設定します。例えば、次の画像に示すように pgaudit.log パラメータを write に設定すると、ログへの挿入、更新、削除、およびその他のタイプの変更がキャプチャされます。

    設定を含む pgaudit.log パラメータの画像。

    pgaudit.log パラメータには、次のいずれかの値を選択することもできます。

    • none – これはデフォルトです。データベースの変更は記録されません。

    • すべて — すべてをログに記録します (読み取り、書き込み、関数、ロール、DDL、その他)。

    • ddl – ROLE クラスに含まれていない、すべてのデータ定義言語 (DDL) ステートメントのログ記録。

    • function – 関数呼び出し、および DO ブロックのログ記録。

    • misc – DISCARDFETCHCHECKPOINTVACUUMSET など、さまざまなコマンドのログ記録。

    • read – SELECT および COPY のログ記録 (ソースがリレーション (テーブルなどの) またはクエリの場合)。

    • role – GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE など、ロールと権限に関連するステートメントのログ記録。

    • write – INSERTUPDATEDELETETRUNCATE、および COPY のログ記録 (送信先がリレーション (テーブル) の場合)。

  14. [Save changes] (変更の保存) をクリックします。

  15. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  16. データベースリストから、 RDS for PostgreSQL DB インスタンスを選択します。

pgAudit をセットアップするには

AWS CLI を使用して pgAudit を設定するには、次の手順に示すように、modify-db-parameter-group オペレーションを呼び出してカスタムパラメータグループの監査ログパラメータを変更します。

  1. 次の AWS CLI コマンドを使用してshared_preload_librariesパラメータに pgaudit を追加します。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=shared_preload_libraries,ParameterValue=pgaudit,ApplyMethod=pending-reboot" \ --region aws-region
  2. 次の AWS CLI コマンドを使用して RDS for PostgreSQL DB インスタンスを再起動し、pgaudit ライブラリを初期化します。

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region
  3. インスタンスが使用可能になると、pgaudit が初期化されていることを確認できます。psql を使用して RDS for PostgreSQL DB インスタンスに接続し、次のコマンドを実行します。

    SHOW shared_preload_libraries; shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)

    pgAudit を初期化すると、拡張機能を作成できるようになりました。

    CREATE EXTENSION pgaudit;
  4. AWS CLI を使用できるように psql セッションを終了します。

    labdb=> \q
  5. 次の AWS CLI コマンドを使用して、セッション監査ログによって記録するステートメントのクラスを指定します。この例では、pgaudit.log パラメータを write に設定し、ログへの挿入、更新、削除をキャプチャします。

    aws rds modify-db-parameter-group \ --db-parameter-group-name custom-param-group-name \ --parameters "ParameterName=pgaudit.log,ParameterValue=write,ApplyMethod=pending-reboot" \ --region aws-region

    pgaudit.log パラメータには、次のいずれかの値を選択することもできます。

    • none – これはデフォルトです。データベースの変更は記録されません。

    • すべて — すべてをログに記録します (読み取り、書き込み、関数、ロール、DDL、その他)。

    • ddl – ROLE クラスに含まれていない、すべてのデータ定義言語 (DDL) ステートメントのログ記録。

    • function – 関数呼び出し、および DO ブロックのログ記録。

    • misc – DISCARDFETCHCHECKPOINTVACUUMSET など、さまざまなコマンドのログ記録。

    • read – SELECT および COPY のログ記録 (ソースがリレーション (テーブルなどの) またはクエリの場合)。

    • role – GRANTREVOKECREATE ROLEALTER ROLEDROP ROLE など、ロールと権限に関連するステートメントのログ記録。

    • write – INSERTUPDATEDELETETRUNCATE、および COPY のログ記録 (送信先がリレーション (テーブル) の場合)。

    次の AWS CLI コマンドを使用して、 RDS for PostgreSQL DB インスタンスを再起動します。

    aws rds reboot-db-instance \ --db-instance-identifier your-instance \ --region aws-region