LoginSignup
0
0

More than 1 year has passed since last update.

Amazon RDS for PostgreSQLの監査ログをCloudWatch Logsに出力する

Last updated at Posted at 2020-11-17

はじめに

Amazon RDS for PostgreSQLの監査ログをCloudWatch Logsに出力します。
RDSのクラスターパラメータグループに設定を変更後、DBにログインしてSQLコマンドを実行します。

クラスターパラメータグループの変更項目

項目 詳細
pgaudit.log 'all, -misc' 「all」から「vacuum等のメンテナンスの処理」のみを除外する設定
pgaudit.log_catalog 0 catalogテーブルへのアクセスをログと残すかどうか指定できます。これを有効としておくと、psqlやPgAdminでのアクセスが発生した都度に、ノイズなログがかなり出力されることになるので、無効(0)としておく。
pgaudit.log_level log 出力されるログレベルを指定
pgaudit.log_parameter 1 SQL内で変数を利用された場合、その変数に代入された値までロギングしてくれる設定
pgaudit.log_relation 1 操作した対象のオブジェクト名を分かりやすく出力させてくれる設定
pgaudit.log_statement_once 1 Session Audit LoggingとObject Auditingを併用時、同じSQLログを複数回出力させない設定です。複数回出てくるのは煩わしいので、有効(1)としておく。
pgaudit.role rds_pgaudit AWSの場合、この値は rds_pgaudit 限定となる
shared_preload_libraries pg_stat_statements,
pg_hint_plan,
pgaudit
pgAuditのライブラリを、共有メモリにロードするための設定

SQL

SQL
CREATE ROLE rds_pgaudit;
SHOW shared_preload_libraries;
CREATE EXTENSION pgaudit;
SHOW pgaudit.role;

手順

1. RDSのパラメータグループを作成するCloudFormationのテンプレートの一部

テンプレート.yml
    Type: AWS::RDS::DBParameterGroup
    Properties:
      Parameters:
        timezone: Asia/Tokyo
        pgaudit.role: rds_pgaudit
        shared_preload_libraries: pgaudit
        pgaudit.log_level: log
        pgaudit.log: 'all, -misc'

このパラメータグループをRDSにアタッチします。

2. SQLのシェルスクリプト

スクリプト
SSH_HOST=[踏み台サーバーのIPアドレス]
BASTION_SSHKEY=[踏み台サーバーの秘密鍵のパス]
BASTION_SSHUSER=[踏み台サーバーのユーザー]
DB_HOST=[DBのエンドポイント]
DB_NAME=[DB名]
DB_USER=[DBのユーザー名]
DB_PASSWORD=[DBのパスワード]

DBRESULT=`ssh -T -l ${BASTION_SSHUSER} -i ${BASTION_SSHKEY} ${SSH_HOST} <<EOC
export PGPASSWORD=${DB_PASSWORD}
psql -U ${DB_USER} -d ${DB_NAME} -h ${DB_HOST} << EOF
SHOW shared_preload_libraries;
SHOW pgaudit.role;
CREATE EXTENSION pgaudit;
EOF
exit $?
EOC
`
echo ${DBRESULT}

参考

PostgreSQL を実行している Amazon RDS DB インスタンスを pgaudit 拡張機能を使用して監査するにはどうすればよいですか?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0