0
0

More than 1 year has passed since last update.

【AWS】Aurora MySQL アドバンスト監査ログ出力【Cloud Watch Logs】

Posted at

Aurora MySQL アドバンスト監査ログ出力

Auroraで特定のDBユーザの操作を監査ログで出力する。
公式Documentを元に設定していく。

準備

まずはRDSクラスタ、パラメータグループ、ユーザを作成する。
VPCに接続用インスタンスを作成するのがめんどくさかったので、パブリックアクセスを有効化した。

  • クラスタ & インスタンス設定
項目
クラスタ名 test-db
エンジンバージョン 8.0.mysql_aurora.3.02.1
マスターユーザ test
インスタンスクラス db.t4g.medium
可用性 Auroraレプリカを作成しない
パブリックアクセス あり
セキュリティグループ 開発PCからの3306を許可したものを設定
ログのエクスポート 監査ログにチェック
  • クラスタパラメータグループ設定

auditという名前のユーザが行った操作を監査ログに出力するように設定する。
設定項目は以下の通り。

項目
server_audit_logging 1
server_audit_logs_upload 1
server_audit_incl_users audit
server_audit_events QUERY

ちなみに、server_audit_eventsにCONNECTを追加すると、
DBへの接続・切断イベントも記録されるようになるが、
こちらはユーザの指定ができず、全ユーザのものがログ出力される。

  • ユーザ作成
$ mysql -u test -h <クラスタエンドポイント> -p

mysql> CREATE USER audit@'%' IDENTIFIED BY 'audit';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON test.* TO audit@'%';

確認

variable 確認

show variablesで設定内容を確認。

mysql> SHOW VARIABLES LIKE 'server_audit%';
+------------------------------+-----------------+
| Variable_name                | Value           |
+------------------------------+-----------------+
| server_audit_cw_upload       | OFF             |
| server_audit_events          | QUERY,QUERY_DML |
| server_audit_excl_users      |                 |
| server_audit_incl_users      | audit           |
| server_audit_logging         | ON              |
| server_audit_mode            | 0               |
| server_audit_query_log_limit | 65536           |
+------------------------------+-----------------+
7 rows in set (0.01 sec)

なぜかserver_audit_cw_uploadがOFFになっているが、、、
とりあえずパラメータグループの内容は反映されているっぽい(cwlogのやつ以外)。

クエリ実行してみる

$ mysql -u audit -h <クラスタエンドポイント> -paudit

mysql> CREATE TABLE test.audit_test (id int, text varchar(10));
mysql> INSERT INTO test.audit_test VALUES (1, 'test');
mysql> SELECT * FROM test.audit_test;
+------+------+
| id   | text |
+------+------+
|    1 | test |
+------+------+
2 rows in set (0.01 sec)

CloudWatch Logs を確認

特にしていなければロググループに/aws/rds/cluster/<クラスタ名>/auditというグループができている。
中を見てみると、<インスタンス名>.audit.log.xみたいなログストリームができている。

ログを確認すると、下記のようにQUERYが記録されていることが確認できる。

1667508480539207,<インスタンス名>,audit,<接続元IP>,15659,QUERY,test,'create table audit_test',4028
1667508596853240,<インスタンス名>,audit,<接続元IP>,16684,QUERY,test,'insert audit_test values(1, \'test\')',0
1667511851715505,<インスタンス名>,audit,<接続元IP>,15617,QUERY,,'SELECT * from test.audit_test',0

以上!

server_audit_cw_upload の設定が OFF になったままなのが引っかかったが、
問題なく特定ユーザの特定クエリを監査ログとしてCloudWatchLogsにログ転送できた。

後片付けは忘れずに。。。

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