Amazon RDS 各DBエンジンで取得できるログについて

記事タイトルとURLをコピーする

表題の通り調査する機会があったため、記録として残しておきます。 監査要件や運用管理を検討する際の一助となれば幸いです。

本記事の情報は、2024年12月9日時点の調査結果に基づいています。

今回の調査で知りたかったのは大まかに以下の 3 つです。

  • Amazon RDS で利用可能な監査ログの種類
  • 各データベースエンジン(SQL Server、PostgreSQL、MySQL、MariaDB、Aurora)ごとの違い
  • AWS サービス(CloudWatch Logs など)へのログ出力が可能か

調査対象

今回調査した対象のDBエンジンは以下の通りです。

  • SQL Server
  • PostgreSQL
  • MySQL
  • MariaDB
  • Aurora (MySQL 互換 / PostgreSQL 互換)

各データベースエンジンごとの調査結果

1. Amazon RDS for SQL Server

種別 結果 備考
クエリログ データベースレベルの監査で各操作(INSERTUPDATEDELETEなど)がキャプチャ可能
コネクションログ
AWSサービスへの出力 設定を行うことで、ファイルサイズ制限に達した際にS3バケットにアップロードされる
  • 監査ログ保存
    • ログはRDSインスタンスに保存され、オプショングループで保存期間を指定可能
    • RDS インスタンス内での最大保持期間:35日間
    • クエリを実行して監査ログを確認可能
    • マルチAZの場合、データベース監査仕様は全ノードにレプリケートされるが、サーバーレベル監査は手動で作成が必要

参考: Amazon RDS for SQL Server の DB インスタンスの監査


2. PostgreSQL

種別 結果 備考
クエリログ デフォルトでログイン失敗、致命的エラー、デッドロックなどをキャプチャ
log_statement パラメータを指定することで詳細なログ取得可能
コネクションログ log_connectionslog_disconnectionsパラメータで記録可能
AWSサービスへの出力 CloudWatch Logsに発行可能
パフォーマンス低下やセキュリティ監査に有用な情報を取得可能
  • 監査エクステンション: pgAudit
    • DMLステートメントをセッションごと、オブジェクトごとに監査可能
    • ログ容量増大に注意

参考: RDS for PostgreSQL データベースログファイル


3. RDS for MySQL および MariaDB

種別 結果 備考
クエリログ デフォルトでエラーログ、スロークエリログ、全般ログが取得可能
コネクションログ MariaDB監査プラグインを有効化することで監査ログ取得可能
AWSサービスへの出力 CloudWatch Logsに発行可能

監査ログは RDS for MySQL,MariaDB 共に MariaDB監査プラグイン を有効化することで取得可能。
有効化した監査ログでは以下のフィールドが取得可能。

フィールド 説明
timestamp YYYYMMDD の後、ログに記録されたイベントの HH:MI:SS (24 時間制) が続きます
serverhost イベントが記録されているインスタンスの名前
username ユーザーの接続されたユーザー名
host ユーザーの接続元のホスト
connectionid 記録されたオペレーションの接続 ID 番号
queryid クエリ ID 番号。リレーショナルテーブルイベントと関連するクエリの検索に使用できる
TABLE イベントの場合、複数の行が追加される
オペレーション 記録されたアクションの種類
指定できる値は CONNECTQUERYREADWRITECREATEALTERRENAMEDROP
データベース USE コマンドにより設定されたアクティブなデータベース
オブジェクト QUERY イベントの場合、この値は、データベースが実行したクエリを示す
TABLE イベントの場合、テーブル名を示す
retcode 記録されたオペレーションのリターンコード
connection_type サーバーとの接続のタイプを示す

0: 未定義
1: TCP/IP
2: ソケット
3: 名前付きパイプ
4: SSL/TLS
5: 共有メモリ

※ RDS for MySQL バージョン 5.7.34 以降の 5.7 バージョン、およびすべての 8.0 バージョンのみに含まれる

参考: MySQL に対する MariaDB 監査プラグインのサポート


4. Amazon Aurora(MySQL互換 / PostgreSQL互換)

種別 結果 備考
クエリログ MySQL互換: Advanced Auditing機能で詳細な監査ログ取得可能。 PostgreSQL互換: 標準設定と拡張機能利用可能
コネクションログ 上記と同様
AWSサービスへの出力 各互換エディションの方法に従いログ取得可能

Amazon Auroraでは、以下の方法で監査ログを取得できます。

Aurora MySQL互換エディション

Advanced Auditing機能を使用して、接続、クエリ、テーブルアクセスなどのイベントを監査できます。
この機能は、DBクラスタパラメータグループで設定。

Advanced Auditing 機能で取得できるフィールドは以下です。

フィールド 説明
timestamp 記録されたイベントの UNIX タイムスタンプ
serverhost イベントが記録されているインスタンスの名前
username ユーザーの接続されたユーザー名
host ユーザーの接続元のホスト
connectionid 記録されたオペレーションの接続 ID 番号
queryid クエリ ID 番号
リレーショナルテーブルイベントと関連するクエリの検索に使用できますTABLE イベントの場合、複数の行が追加される
オペレーション 記録されたアクションの種類。指定できる値は CONNECTQUERYREADWRITECREATEALTERRENAMEDROP
データベース USE コマンドにより設定されたアクティブなデータベース
オブジェクト QUERY イベントの場合、この値は、データベースが実行したクエリを示す
TABLE イベントの場合、テーブル名を示す
retcode 記録されたオペレーションのリターンコード

Aurora PostgreSQL互換エディション

標準のPostgreSQLと同様に、log_statementパラメータの設定や、サードパーティ製拡張機能(pgAudit)を使用して監査ログを取得できます。
ただし、使用する DB バージョンが拡張機能によってサポートされているか確認が必要です。

まとめ

監査ログの種類と対応状況としては、SQL Server、PostgreSQL、MySQL/MariaDB、Aurora のいずれも監査ログの取得が可能であり、運用やセキュリティ要件に応じた設定が可能であることがわかりました。 ただ、各エンジンごとに利用可能なログや取得方法に違いがあるため、どういったログを取得する必要があるかもエンジンの選定に関係しそうです。

PostgreSQL の pgAudit や MySQL/MariaDB の監査プラグインのように、拡張機能の利用が必要な場合は、事前にパフォーマンスへの影響や使用する拡張機能と DB エンジンバージョンの互換性、適用手順を十分に確認する必要あります。

参考資料

  1. Amazon RDS for SQL Server の DB インスタンスの監査
  2. RDS for PostgreSQL データベースログファイル - Amazon Relational Database Service
  3. RDS および Aurora PostgreSQL ログの操作: パート 1 | AWS データベース ブログ
  4. Working with RDS and Aurora PostgreSQL logs: Part 2 | AWS Database Blog
  5. pgAudit を使用してデータベースのアクティビティを記録する - Amazon Relational Database Service
  6. PostgreSQL: ドキュメント: 19.8.3. What to Log
  7. Amazon RDS for Postgre SQL の拡張機能バージョン
  8. pgaudit/README.md at main · pgaudit/pgaudit
  9. RDS for MySQL データベースログの概要 - Amazon Relational Database Service
  10. MySQL に対する MariaDB 監査プラグインのサポート - Amazon Relational Database Service
  11. aws/audit-plugin-for-mysql: Audit Plugin for MySQL Server
  12. RDS for PostgreSQL DB インスタンスのクエリログ記録をオンにする
  13. Amazon Aurora MySQL DB クラスターでのアドバンストな監査の使用 - Amazon Aurora

手嶋 凌一朗 (記事一覧)

エンタープライズクラウド部・クラウドリライアビリティ課

書きたい心はあるんです。

趣味はテニスと釣り