RDS for MySQLの監査ログは、rdsadmin等の特定ユーザーのログを除外設定にしても一部のログは保存されます
困っていた内容
Amazon RDS for MySQLの監査ログを設定する際、AWS側で管理操作するユーザーであるrdsadminのアクティビティログは不要だったため、rdsadminを除外する設定を行いました。
しかし、CloudWatch Logsには以下のようにrdsadminユーザーのログが出力されていました。
20240117 xx:xx:xx,ip-xx-xx-xx-xx,rdsadmin,localhost,xx,xx,DISCONNECT,,,0,SOCKET 20240117 xx:xx:xx,ip-xx-xx-xx-xx,rdsadmin,localhost,xx,CONNECT,,,0,SOCKET
原因と対処方法を教えてください。
どう対応すればいいの?
ドキュメントには、以下の記載があります。
CONNECT アクティビティは、ユーザーがこのオプション設定で指定されていても、すべてのユーザーについて常に記録されます。
そのため、監査ログから特定のユーザーのアクティビティを除外した場合でも、ログに記録するアクティビティのうち、CONNECT
ログを保存する設定になっていれば、全てのユーザーのCONNECT
とDISCONNECT
が保存されます。
ただし、私が検証したところ、全ユーザーのログを出力する設定からrdsadminを除外する設定に変更した際、監査ログには以下のクエリが保存されていました。これはログを記録する対象ユーザーの除外設定や監査ログファイルの保存場所を指定しています。
設定変更時、下記のクエリは、例外で保存されてしまうのかもしれません。
20240117 xx:xx:x,ip-xx-xx-xx-xx,rdsadmin,localhost,xxxxx,xxxxx,QUERY,,'SET GLOBAL server_audit_incl_users = \'\'',0,, 20240117 xx:xx:x,ip-xx-xx-xx-xx,rdsadmin,localhost,xxxxx,xxxxx,QUERY,,'SET GLOBAL server_audit_file_path = \'/rdsdbdata/log/audit/\'',0,, 20240117 xx:xx:x,ip-xx-xx-xx-xx,rdsadmin,localhost,xxxxx,xxxxx,QUERY,,'SET GLOBAL server_audit_incl_users = \'\'',0,, 20240117 xx:xx:x,ip-xx-xx-xx-xx,rdsadmin,localhost,xxxxx,xxxxx,QUERY,,'SET GLOBAL server_audit_excl_users = \'rdsadmin\'',0,,
除外したユーザーのうち、CONNECT
とDISCONNECT
、上記のクエリ以外のアクティビティもログに出力されている場合、監査ログ設定のミスの可能性があるため、設定を見直しましょう。
確認方法としては、オプショングループのオプション(MARIADB_AUDIT_PLUGIN)の中で、SERVER_AUDIT_EXCL_USERSにrdsadminが設定されているかを確認します。
SERVER_AUDIT_EVENTSでは、デフォルトで[CONNECT,QUERY]と設定されているため、SERVER_AUDIT_EXCL_USERSに設定したユーザーも含めて全てのユーザーで接続ログが保存されます。
rdsadminが設定されていなかった場合は、ユーザー名を入力して[すぐに適用]をクリックし、設定を保存して反映させます。
設定はこれで完了です。
ちなみに、RDS for MySQLだけでなく、Aurora MySQLクラスターにおいても、接続記録を保存する設定を行った場合、全ユーザーに対する接続ログが保存されることになります。
接続および切断イベントは、この可変の影響を受けません。指定された場合は常に記録されます。