MySQL または MariaDB を実行している Amazon Relational Database Service (Amazon RDS) DB インスタンスのコンプライアンス要件を満たすために、データベース (DB) のアクティビティを監査したいと考えています。次に、DB ログを Amazon CloudWatch に公開したいと考えています。これを行うにはどうすればよいですか?
簡単な説明
MariaDB 監査プラグインを使用して、接続、切断、クエリ、クエリされたテーブルなどのイベントをキャプチャするためには以下のことが必要です。
Amazon Aurora MySQL 互換エディションを使用している場合は、「Aurora MySQL 互換 DB クラスターの高度な監査を有効にしてから、そのログを CloudWatch に公開するにはどうすればよいですか?」を参照してください。
解決方法
注意: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行時にエラーが発生する場合は、最新バージョンの AWS CLI が実行されていることを確認してください。
Amazon RDS は、MySQL と MariaDB の次のバージョンで監査プラグインのオプション設定をサポートしています。
- MySQL 5.7 の全バージョン
- MySQL 5.7.16 以降の 5.7 バージョン
- MySQL 8.0.25 以降の 8.0 バージョン
- MariaDB 10.2 以降
サポートされているバージョンの詳細については、MariaDB 監査プラグインのサポートおよび MariaDB データベースエンジンのオプションを参照してください。
まず、MariaDB 監査プラグインを有効にして設定し、DB インスタンスをカスタムオプショングループに関連付けます。
1. カスタムオプショングループを作成するか、既存のカスタムオプショングループを変更します。
2. オプショングループに MariaDB 監査プラグインオプションを追加して、オプション設定を構成します。
3. オプショングループを DB インスタンスに適用します。
新しい DB インスタンスにオプションを適用するには、DB インスタンスを起動したときに新しく作成されたオプショングループを使用するようにインスタンスを設定します。既存の DB インスタンスにオプションを適用するには、DB インスタンスを変更して新しいオプショングループをアタッチします。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。
MariaDB 監査プラグインを使用して DB インスタンスを設定した後は、DB インスタンスを再起動する必要はありません。オプショングループがアクティブになると、監査がただちに開始されます。
注: Amazon RDS は、MariaDB 監査プラグインでのログ記録の無効化をサポートしていません。監査ログを無効にするには、関連付けられているオプショングループからプラグインを削除します。これにより、インスタンスが自動的に再起動します。レコード内のクエリ文字列の長さを制限するには、SERVER_AUDIT_QUERY_LOG_LIMIT オプションを使用します。
CloudWatch へ監査ログを公開する
1. Amazon RDS コンソールを開きます。
2. ナビゲーションペインから [データベース] を選択します。
3. ログデータを CloudWatch にエクスポートするために使用する DB インスタンスを選択します。
4. [変更] を選択します。
5. [ログのエクスポート] セクションから、[監査ログ] を選択します。
6. [続行] を選択します。
7. [Summary of modifications] (変更のサマリー) を確認して、[Modify instance] (インスタンスの変更) を選択します。
次の AWS CLI コマンド構文を使用して CloudWatch ログのエクスポートを有効にすることもできます。
aws rds modify-db-instance --db-instance-identifier <mydbinstance> --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit"]}'
監査ログを有効にしてインスタンスを変更してログをエクスポートすると、監査ログに記録されたイベントが CloudWatch に送信されます。その後、CloudWatch のログイベントをモニタリングできます。