MySQL に対する MariaDB 監査プラグインのサポート - Amazon Relational Database Service

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

Amazon RDS は、オープンソースの MariaDB 監査プラグインに基づいた MySQL データベースインスタンス用の監査プラグインを提供しています。詳細については、「MySQL サーバー GitHub リポジトリの監査プラグイン」を参照してください。

注記

MySQL の監査プラグインは MariaDB 監査プラグインに基づいています。この記事では、このプラグインを「MariaDB 監査プラグイン」と呼びます。

MariaDB 監査プラグインは、データベースへのユーザーのログオンやデータベースに対して実行されたクエリなどのデータベースアクティビティを記録します。データベースのアクティビティのレコードはログファイルに保存されます。

注記

現在のところ、MariaDB 監査プラグインは以下の RDS for MySQL バージョンでのみサポートされています。

  • MySQL のバージョン 8.0 (8.0.26 以降)

  • すべての MySQL 5.7 バージョン

監査プラグインのオプション設定

Amazon RDS では、MariaDB 監査プラグインのオプションの次の設定がサポートされています。

オプション設定 有効な値 デフォルト値 説明

SERVER_AUDIT_FILE_PATH

/rdsdbdata/log/audit/

/rdsdbdata/log/audit/

ログファイルの場所。ログファイルには、SERVER_AUDIT_EVENTS で指定されたアクティビティのレコードが含まれます。詳細については、「データベースログファイルの表示とリスト化」および「 MySQL データベースのログファイル」を参照してください。

SERVER_AUDIT_FILE_ROTATE_SIZE

1-1000000000

1000000

このバイト数のサイズに達するとファイルがローテーションします。詳細については、「RDS for MySQL データベースログの概要」を参照してください。

SERVER_AUDIT_FILE_ROTATIONS

0-100

9

server_audit_output_type=file 時に保存するログローテーション数。0 に設定すると、ログファイルはローテーションされません。詳細については、RDS for MySQL データベースログの概要およびデータベースログファイルのダウンロードを参照してください。

SERVER_AUDIT_EVENTS

CONNECT, QUERY, QUERY_DDL, QUERY_DML, QUERY_DML_NO_SELECT, QUERY_DCL

CONNECT, QUERY

ログに記録するアクティビティのタイプ。MariaDB 監査プラグインのインストール自体も記録されます。

  • CONNECT: データベースへ接続の成功と失敗、およびデータベースからの切断を記録します。

  • QUERY: データベースに対して実行されたすべてのクエリのテキストを記録します。

  • QUERY_DDL: QUERY イベントと同様ですが、返るのは、データ定義言語 (DDL) クエリ (CREATEALTER など) のみです。

  • QUERY_DML: QUERY イベントと同様ですが、返るのは、データ操作言語 (DML) クエリ (INSERTUPDATESELECT など) のみです。

  • QUERY_DML_NO_SELECT: QUERY_DML イベントと類似していますが、SELECT クエリをログ記録しません。

    このQUERY_DML_NO_SELECT設定は、MySQL 5.7.34 以降の 5.7 バージョン、および 8.0.25 以降の 8.0 バージョンの RDS でのみサポートされます。

  • QUERY_DCL: QUERY イベントと同様ですが、返るのは、データ制御言語 (DCL) クエリ (GRANTREVOKE など) のみです。

MySQL では、TABLE はサポートされていません。

SERVER_AUDIT_INCL_USERS

複数のカンマ区切り値

なし

指定されたユーザーからのアクティビティのみを含めます。デフォルトでは、アクティビティはすべてのユーザーについて記録されます。SERVER_AUDIT_INCL_USERSSERVER_AUDIT_EXCL_USERS は相互に排他的です。SERVER_AUDIT_INCL_USERS に値を追加する場合は、SERVER_AUDIT_EXCL_USERS に追加される値がないことを確認してください。

SERVER_AUDIT_EXCL_USERS

複数のカンマ区切り値

なし

指定されたユーザーからのアクティビティを除外します。デフォルトでは、アクティビティはすべてのユーザーについて記録されます。SERVER_AUDIT_INCL_USERSSERVER_AUDIT_EXCL_USERS は相互に排他的です。SERVER_AUDIT_EXCL_USERS に値を追加する場合は、SERVER_AUDIT_INCL_USERS に追加される値がないことを確認してください。

rdsadmin ユーザーは 1 秒ごとにデータベースをクエリしてデータベースのヘルスチェックを行います。そのほかの設定によっては、このアクティビティによってログファイルのサイズが急激に増大する可能性があります。このアクティビティを記録する必要がない場合は、SERVER_AUDIT_EXCL_USERSリストにrdsadminユーザーを追加します。

注記

CONNECT アクティビティは、ユーザーがこのオプション設定で指定されていても、すべてのユーザーについて常に記録されます。

SERVER_AUDIT_LOGGING

ON

ON

ログ記録がアクティブです。唯一の有効な値は ON です。Amazon RDS では、ログ記録の非アクティブ化はサポートしていません。ログ記録を非アクティブ化する場合は、MariaDB 監査プラグインを削除します。詳細については、「MariaDB 監査プラグインの削除」を参照してください。

SERVER_AUDIT_QUERY_LOG_LIMIT

0-2147483647

1024

レコードのクエリ文字列の長さに対する制限。

MariaDB 監査プラグインの追加

MariaDB 監査プラグインを DB インスタンスに追加する一般的な手順は以下のとおりです。

  • 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更する

  • オプショングループにオプションを追加する

  • オプショングループを DB インスタンスに関連付ける

MariaDB 監査プラグインを追加した後で、DB インスタンスを再起動する必要はありません。オプショングループがアクティブになると、直ちに監査がスタートされます。

重要

MariaDB 監査プラグインを DB インスタンスに追加すると、停止する可能性があります。MariaDB 監査プラグインは、メンテナンス期間中またはデータベースのワークロードが低い時間帯に追加することをお勧めします。

MariaDB 監査プラグインを追加するには
  1. 使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。それ以外の場合は、カスタム DB オプショングループを作成します。[エンジン][mysql] を選択し、[メジャーエンジンバージョン][5.6] または [5.7] を選択します。詳細については、「オプショングループを作成する」を参照してください。

  2. オプショングループに [MARIADB_AUDIT_PLUGIN] オプションを追加し、オプションを設定します。オプションの追加方法の詳細については、「オプショングループにオプションを追加する」を参照してください。各設定の詳細については、「監査プラグインのオプション設定」を参照してください。

  3. 新規または既存の DB インスタンスに、DB オプショングループを適用します。

    • 新規 DB インスタンスの場合は、インスタンスを起動するときにオプショングループを適用します。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。

    • 既存の DB インスタンスの場合は、インスタンスを修正し、新しいオプショングループを添付することで、オプショングループを適用します。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。

監査ログの形式

ログファイルは、UTF-8 形式のカンマ区切り変数 (CSV) ファイルとして表されます。

ヒント

ログファイルのエントリは、順番になっていません。エントリを順序付けするには、タイムスタンプ値を使用します。最新のイベントを表示するには、すべてのログファイルの確認が必要な場合があります。ログデータの並べ替えと検索をより柔軟に行うためには、監査ログを CloudWatch にアップロードするための設定を有効にし、CloudWatch インターフェイスを使用してそれらを表示します。

より多くのタイプのフィールドを含み、JSON 形式で出力された監査データを表示するには、データベースのアクティビティストリーム機能を使用することもできます。詳細については、「データベースアクティビティストリームを使用した Amazon RDS のモニタリング」を参照してください。

監査ログファイルの行には、次のカンマ区切りの情報が指定された順序で含まれています。

フィールド 説明

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 バージョンのみに含まれます。

MariaDB 監査プラグインのログの表示とダウンロード

MariaDB 監査プラグインを有効にした後は、他のテキストベースのログファイルと同様の方法でログファイル内の結果にアクセスします。監査ログファイルは /rdsdbdata/log/audit/ にあります。コンソールでログファイルを表示する方法の詳細については、「データベースログファイルの表示とリスト化」を参照してください。ログファイルのダウンロードについては、「データベースログファイルのダウンロード」を参照してください。

MariaDB 監査プラグインの設定の変更

MariaDB 監査プラグインを有効にした後、設定を変更できます。オプション設定の変更方法の詳細については、「オプションの設定を変更する」を参照してください。各設定の詳細については、「監査プラグインのオプション設定」を参照してください。

MariaDB 監査プラグインの削除

Amazon RDS では、MariaDB 監査プラグインのログ記録の無効化はサポートされていません。ただし、DB インスタンスからプラグインを削除することはできます。MariaDB 監査プラグインを削除すると、DB インスタンスが自動的に再起動され、監査が停止します。

MariaDB 監査プラグインを DB インスタンスから削除するには、次のいずれかを実行します。

  • MariaDB 監査プラグインが所属するオプショングループからプラグインを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「オプショングループからオプションを削除する」を参照してください。

  • DB インスタンスを修正して、プラグインが含まれない別オプショングループを指定します。この変更は、単一の DB インスタンスに影響します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。