RDSのAurora MySQLで監査ログの出力を設定する
記事名の通りに『RDSの監査ログを出力せい。御用改めである』とお達しが来たので対応作業したメモ。
(゜々。)「そもそもRDSの監査ログってなんだんねん?」
( ᐛ )「RDSに対して誰が・何時・何処に・何をしたかを記録しているログだんねん」
つまり、『RDSにそれぞれの固有アカウントのみを用いてユーザーがアクセスしていれば、“TRUNCATE TABLE”とか“DROP TABLE”とかで誰が全消ししたのか特定できる』ってことですよ、ステキ。
ではちゃきちゃき行きます。
事前に『DBクラスターのパラメータグループ』を用立てておきます。
RDSでDBクラスターを作ると自動的に割り当てられるデフォルトのDBクラスターのパラメータグループではダメです。
設定変更できないので。
そんでもって該当のパラメータグループの以下の項目を変更します。
- server_audit_logs_upload:CloudWatch Logs にエクスポートする設定。
“1″に設定します。
- server_audit_logging:高度な監査を有効または無効する設定。
“1″に設定します。
- server_audit_excl_users:設定したユーザーを監査ログに出力しない設定。
“rdsadmin,rdsproxyadmin”を設定します。
他に出したくないユーザー(例えばLaravelなんかのアプリでアクセスしてくるユーザーとか)を設定してもよろしいかと。
※『CONNECT アクティビティは、ユーザーがこのオプション設定で指定されていても、すべてのユーザーについて常に記録されます。』という仕様もあるのでそこんところ留意。
- server_audit_events:記録するイベントのコンマ区切りリストが含まれています。
“CONNECT,QUERY,QUERY_DCL,QUERY_DDL,QUERY_DML,TABLE“を設定します。
※『イベントはすべて大文字で指定する必要があります。リスト要素間に空白があってはいけません。(例: CONNECT,QUERY_DDL)』
パラメータグループに以上を設定して、DBクラスターの【設定】を確認。
『再起動を保留中』とパラメータグループのところに出ているようなら(たぶん出なかったとは思うのだけど)DBクラスターを再起動。
これで監査ログが出力されるようになる……
――と、思ったか?
実はもうひとつ重要な設定の変更がありましてー。
DBクラスターの【変更】から【追加設定】のブロックへ。
『ログのエクスポート』ってチェックボックスがあるので、そこの【監査ログ】にチェックを入れて、DBクラスターの変更を実行。
これでCloudWatchに監査ログが転送されて、
DBクラスターの【設定】から『発行されたログ』[CloudWatch Logs]部分のリンクで飛べるようになります
(੭ ᐕ)
最後の設定変更を忘れてて「あっれー、手順メモ通りにやってんのに監査ログ出ねえ。おっかしーなー」と30分ぐらい困ったマヌケによる対応作業メモでした(੭ ᐕ)b