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 拡張機能をセットアップするには
AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/
を開きます。 -
ナビゲーションペインで、 RDS for PostgreSQL DB インスタンスを選択します。
-
の [Configuration] (設定) タブを開きます。RDS for PostgreSQL DB インスタンス。インスタンスの詳細の中から、パラメータグループのリンクを見つけてください。
-
リンクを選択して、に関連するカスタムパラメータを開きます。RDS for PostgreSQL DB インスタンス。
-
パラメータ検索フィールドに、
shared_pre
を入力してshared_preload_libraries
パラメータを検索します。 -
プロパティ値にアクセスするには、[Edit parameters] (パラメータの編集) を選択します。
-
[Values] (値) フィールドのリストに
pgaudit
を追加します。値のリスト内の項目を区切るにはカンマを使用します。 RDS for PostgreSQL DB instance を再起動して、
shared_preload_libraries
パラメータの変更を有効にします。インスタンスが使用可能になったら、pgAudit が初期化されていることを確認します。
psql
を使用して RDS for PostgreSQL DB インスタンスに接続し、次のコマンドを実行します。SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
pgAudit を初期化すると、拡張機能を作成できるようになりました。
pgaudit
拡張機能はデータ定義言語 (DDL) ステートメントを監査するためのイベントトリガーをインストールするため、ライブラリを初期化した後に拡張機能を作成する必要があります。CREATE EXTENSION pgaudit;
psql
セッションを終了します。labdb=>
\q
AWS Management Console にサインインし、Amazon RDS コンソール https://console.aws.amazon.com/rds/
を開きます。 リストで
pgaudit.log
パラメータを検索し、ユースケースに応じた値に設定します。例えば、次の画像に示すようにpgaudit.log
パラメータをwrite
に設定すると、ログへの挿入、更新、削除、およびその他のタイプの変更がキャプチャされます。pgaudit.log
パラメータには、次のいずれかの値を選択することもできます。none – これはデフォルトです。データベースの変更は記録されません。
すべて — すべてをログに記録します (読み取り、書き込み、関数、ロール、DDL、その他)。
ddl –
ROLE
クラスに含まれていない、すべてのデータ定義言語 (DDL) ステートメントのログ記録。function – 関数呼び出し、および
DO
ブロックのログ記録。misc –
DISCARD
、FETCH
、CHECKPOINT
、VACUUM
、SET
など、さまざまなコマンドのログ記録。read –
SELECT
およびCOPY
のログ記録 (ソースがリレーション (テーブルなどの) またはクエリの場合)。role –
GRANT
、REVOKE
、CREATE ROLE
、ALTER ROLE
、DROP ROLE
など、ロールと権限に関連するステートメントのログ記録。write –
INSERT
、UPDATE
、DELETE
、TRUNCATE
、およびCOPY
のログ記録 (送信先がリレーション (テーブル) の場合)。
[Save changes] (変更の保存) をクリックします。
Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 データベースリストから、 RDS for PostgreSQL DB インスタンスを選択します。
pgAudit をセットアップするには
AWS CLI を使用して pgAudit を設定するには、次の手順に示すように、modify-db-parameter-group オペレーションを呼び出してカスタムパラメータグループの監査ログパラメータを変更します。
次の 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" \ --regionaws-region
-
次の AWS CLI コマンドを使用して RDS for PostgreSQL DB インスタンスを再起動し、pgaudit ライブラリを初期化します。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
インスタンスが使用可能になると、
pgaudit
が初期化されていることを確認できます。psql
を使用して RDS for PostgreSQL DB インスタンスに接続し、次のコマンドを実行します。SHOW shared_preload_libraries;
shared_preload_libraries -------------------------- rdsutils,pgaudit (1 row)
pgAudit を初期化すると、拡張機能を作成できるようになりました。
CREATE EXTENSION pgaudit;
AWS CLI を使用できるように
psql
セッションを終了します。labdb=>
\q
次の 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" \ --regionaws-region
pgaudit.log
パラメータには、次のいずれかの値を選択することもできます。none – これはデフォルトです。データベースの変更は記録されません。
すべて — すべてをログに記録します (読み取り、書き込み、関数、ロール、DDL、その他)。
ddl –
ROLE
クラスに含まれていない、すべてのデータ定義言語 (DDL) ステートメントのログ記録。function – 関数呼び出し、および
DO
ブロックのログ記録。misc –
DISCARD
、FETCH
、CHECKPOINT
、VACUUM
、SET
など、さまざまなコマンドのログ記録。read –
SELECT
およびCOPY
のログ記録 (ソースがリレーション (テーブルなどの) またはクエリの場合)。role –
GRANT
、REVOKE
、CREATE ROLE
、ALTER ROLE
、DROP ROLE
など、ロールと権限に関連するステートメントのログ記録。write –
INSERT
、UPDATE
、DELETE
、TRUNCATE
、およびCOPY
のログ記録 (送信先がリレーション (テーブル) の場合)。
次の AWS CLI コマンドを使用して、 RDS for PostgreSQL DB インスタンスを再起動します。
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region