~~NOCACHE~~ ## PostgreSQLログ取得 忘れそうなのでメモ。 下記2つの記事を組み合わせた内容になっています。マスキングは[PGAudit プラグインを使用する]を採用 https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-postgresql-pgaudit/ https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-postgresql-cleartext-logging/ ### 監査(audit)ログの取得 #### ①rdsに接続し、rds_pgaudit という専用のデータベースロールを作成します。 #rdsに接続する。 psql -h [エンドポイント] -U postgres [パスワード] #ロールを作成する。 CREATE ROLE rds_pgaudit; #CREATE ROLE #### ②DB インスタンスに関連付けられている DB パラメータグループを変更します。 ■必須項目 ^ 名前 ^ 値 ^ 備考 ^ | %%pgaudit.role%% | %%rds_pgaudit%% | | | %%shared_preload_libraries%% | %%pg_stat_statements,pgaudit%% | | ■任意項目(お試し設定) ^ 名前 ^ 値 ^ 備考 ^ | %%pgaudit.log%% | %%role,all,-misc%% | 監査ログの種類 postgreに再接続しないと設定反映されなかった | | %%log_connections%% | %%1%% | セッションの開始ログを記録 | | %%log_disconnections%% | %%1%% | セッションの終了ログを記録 | #### ③DB インスタンスを再起動します。 #### ④pgaudit が初期化されていることを確認します。 show shared_preload_libraries; # shared_preload_libraries #-------------------------- # rdsutils,pgaudit #(1 行) #### ⑤pgaudit 拡張機能を作成します。 CREATE EXTENSION pgaudit; # CREATE EXTENSION #### ⑥pgaudit.role が rds_pgaudit に設定されていることを確認します。 show pgaudit.role; # pgaudit.role #-------------- # rds_pgaudit #(1 行) ### 出力されるログの確認 今回はログ出力のお試しに%%[pgaudit.log=role,all,-misc]%%としていますので、必要に応じて値を変更してください。 #ロール作成 CREATE ROLE samplerole WITH PASSWORD 'test123'; #ロール変更 ALTER ROLE samplerole WITH PASSWORD 'test'; 記録されていいますね、マスキングされていますね! {{:Aws:RDS:pasted:20211027-152434.png?direct 600x0}} #データベース作成 CREATE DATABASE sampledb; #テーブル作成 CREATE TABLE sampletable ( id char(4) not null, name text not null, food text not null, PRIMARY KEY(id) ); 記録されていますね。 {{:Aws:RDS:pasted:20211027-151056.png?direct 600x0}} #データ登録 INSERT INTO sampletable(id,name,food) VALUES (1,'mnz','ちゃんぽん'); #selectしてみる select * from sampletable; 記録されていますね。 {{:Aws:RDS:pasted:20211027-151502.png?direct 600x0}} #rdsに接続する。 psql -h [エンドポイント] -U postgres [パスワード] #rdsから切断する。 \q 記録されていますね。 {{:Aws:RDS:pasted:20211027-153707.png?direct 600x0}} {{tag>AWS rds postgres}}