

# MySQL に対する MariaDB 監査プラグインのサポート
<a name="Appendix.MySQL.Options.AuditPlugin"></a>

Amazon RDS は、オープンソースの MariaDB 監査プラグインに基づいた MySQL データベースインスタンス用の監査プラグインを提供しています。詳細については、「[MySQL サーバー GitHub リポジトリの監査プラグイン](https://github.com/aws/audit-plugin-for-mysql)」を参照してください。

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

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

## 監査プラグインのオプション設定
<a name="Appendix.MySQL.Options.AuditPlugin.Options"></a>

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


| オプション設定 | 有効な値 | デフォルト値 | 説明 | 
| --- | --- | --- | --- | 
| `SERVER_AUDIT_FILE_PATH` | `/rdsdbdata/log/audit/` | `/rdsdbdata/log/audit/` |  ログファイルの場所。ログファイルには、`SERVER_AUDIT_EVENTS` で指定されたアクティビティのレコードが含まれます。詳細については、「[データベースログファイルの表示とリスト化](USER_LogAccess.Procedural.Viewing.md)」および「[ MySQL データベースのログファイル](USER_LogAccess.Concepts.MySQL.md)」を参照してください。  | 
| `SERVER_AUDIT_FILE_ROTATE_SIZE` | 1-1000000000 | 1000000 |  このバイト数のサイズに達するとファイルがローテーションします。詳細については、「[RDS for MySQL データベースログの概要](USER_LogAccess.MySQL.LogFileSize.md)」を参照してください。  | 
| `SERVER_AUDIT_FILE_ROTATIONS` | 0-100 | 9 |  `server_audit_output_type=file` 時に保存するログローテーション数。0 に設定すると、ログファイルはローテーションされません。詳細については、「[RDS for MySQL データベースログの概要](USER_LogAccess.MySQL.LogFileSize.md)」および「[データベースログファイルのダウンロード](USER_LogAccess.Procedural.Downloading.md)」を参照してください。  | 
| `SERVER_AUDIT_EVENTS` | `CONNECT`, `QUERY`, `QUERY_DDL`, `QUERY_DML`, `QUERY_DML_NO_SELECT`, `QUERY_DCL` | `CONNECT`, `QUERY` |  ログに記録するアクティビティのタイプ。MariaDB 監査プラグインのインストール自体も記録されます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html) MySQL では、`TABLE` はサポートされていません。  | 
| `SERVER_AUDIT_INCL_USERS` | 複数のカンマ区切り値 | なし |  指定されたユーザーからのアクティビティのみを含めます。デフォルトでは、アクティビティはすべてのユーザーについて記録されます。`SERVER_AUDIT_INCL_USERS` と `SERVER_AUDIT_EXCL_USERS` は相互に排他的です。`SERVER_AUDIT_INCL_USERS` に値を追加する場合は、`SERVER_AUDIT_EXCL_USERS` に追加される値がないことを確認してください。  | 
| `SERVER_AUDIT_EXCL_USERS` | 複数のカンマ区切り値 | なし |  指定されたユーザーからのアクティビティを除外します。デフォルトでは、アクティビティはすべてのユーザーについて記録されます。`SERVER_AUDIT_INCL_USERS` と `SERVER_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 監査プラグインの削除](#Appendix.MySQL.Options.AuditPlugin.Remove)」を参照してください。  | 
| `SERVER_AUDIT_QUERY_LOG_LIMIT` | 0-2147483647 | 1024 |  レコードのクエリ文字列の長さに対する制限。  | 

## MariaDB 監査プラグインの追加
<a name="Appendix.MySQL.Options.AuditPlugin.Add"></a>

MariaDB 監査プラグインを DB インスタンスに追加する一般的な手順は以下のとおりです。
+ 新しいオプショングループを作成するか、既存のオプショングループをコピーまたは変更する
+ オプショングループにオプションを追加する
+ オプショングループを DB インスタンスに関連付ける

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

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

**MariaDB 監査プラグインを追加するには**

1. 使用するオプショングループを決定します。新しいオプショングループを作成することも、既存のオプショングループを使用することもできます。既存のオプショングループを使用する場合は、次のステップは飛ばしてください。それ以外の場合は、カスタム DB オプショングループを作成します。**[エンジン]** で **[MySQL]** を選択し、**[メジャーエンジンバージョン]** で **[5.7]**、**[8.0]**、または **[8.4]** を選択します。詳細については、「[オプショングループを作成する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.Create)」を参照してください。

1. オプショングループに [**MARIADB\$1AUDIT\$1PLUGIN**] オプションを追加し、オプションを設定します。オプションの追加方法の詳細については、「[オプショングループにオプションを追加する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.AddOption)」を参照してください。各設定の詳細については、「[監査プラグインのオプション設定](#Appendix.MySQL.Options.AuditPlugin.Options)」を参照してください。

1. 新規または既存の DB インスタンスに、DB オプショングループを適用します。
   + 新規 DB インスタンスの場合は、インスタンスを起動するときにオプショングループを適用します。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
   + 既存の DB インスタンスの場合は、インスタンスを修正し、新しいオプショングループを添付することで、オプショングループを適用します。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

## 監査ログの形式
<a name="Appendix.MySQL.Options.AuditPlugin.LogFormat"></a>

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

**ヒント**  
ログファイルのエントリは、順番になっていません。エントリを順序付けするには、タイムスタンプ値を使用します。最新のイベントを表示するには、すべてのログファイルの確認が必要な場合があります。ログデータの並べ替えと検索をより柔軟に行うためには、監査ログを CloudWatch にアップロードするための設定を有効にし、CloudWatch インターフェイスを使用してそれらを表示します。  
 より多くのタイプのフィールドを含み、JSON 形式で出力された監査データを表示するには、データベースのアクティビティストリーム機能を使用することもできます。詳細については、「[データベースアクティビティストリームを使用した Amazon RDS のモニタリング](DBActivityStreams.md)」を参照してください。

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


| フィールド | 説明 | 
| --- | --- | 
|  timestamp  |  `YYYYMMDD` の後、ログに記録されたイベントの `HH:MI:SS` (24 時間制) が続きます。  | 
|  serverhost  |  イベントが記録されているインスタンスの名前。  | 
|  username  |  ユーザーの接続されたユーザー名。  | 
|  host  |  ユーザーの接続元のホスト。  | 
|  connectionid  |  記録されたオペレーションの接続 ID 番号。  | 
|  queryid  |  クエリ ID 番号。リレーショナルテーブルイベントと関連するクエリの検索に使用できます。`TABLE` イベントの場合、複数の行が追加されます。  | 
|  オペレーション  |  記録されたアクションの種類。指定できる値は `CONNECT`、`QUERY`、`READ`、`WRITE`、`CREATE`、`ALTER`、`RENAME`、`DROP` です。  | 
|  データベース  |  `USE` コマンドにより設定されたアクティブなデータベース。  | 
|  オブジェクト  |  `QUERY` イベントの場合、この値は、データベースが実行したクエリを示します。`TABLE` イベントの場合、テーブル名を示します。  | 
|  retcode  |  記録されたオペレーションのリターンコード。  | 
|  connection\$1type  |  サーバーへの接続のセキュリティ状態です。可能な値は以下のとおりです。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html)  | 

## MariaDB 監査プラグインのログの表示とダウンロード
<a name="Appendix.MySQL.Options.AuditPlugin.Log"></a>

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

## MariaDB 監査プラグインの設定の変更
<a name="Appendix.MySQL.Options.AuditPlugin.ModifySettings"></a>

MariaDB 監査プラグインを有効にした後、設定を変更できます。オプション設定の変更方法の詳細については、「[オプションの設定を変更する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.ModifyOption)」を参照してください。各設定の詳細については、「[監査プラグインのオプション設定](#Appendix.MySQL.Options.AuditPlugin.Options)」を参照してください。

## MariaDB 監査プラグインの削除
<a name="Appendix.MySQL.Options.AuditPlugin.Remove"></a>

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

MariaDB 監査プラグインを DB インスタンスから削除するには、次のいずれかを実行します。
+ MariaDB 監査プラグインが所属するオプショングループからプラグインを削除します。この変更はそのオプショングループを使用するすべての DB インスタンスに影響します。詳細については、「[オプショングループからオプションを削除する](USER_WorkingWithOptionGroups.md#USER_WorkingWithOptionGroups.RemoveOption)」を参照してください。
+ DB インスタンスを修正して、プラグインが含まれない別オプショングループを指定します。この変更は、単一の DB インスタンスに影響します。デフォルト (空) のオプショングループや別のカスタムオプショングループを指定できます。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。