~~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}}