Amazon Aurora MySQL DB クラスターでのアドバンストな監査の使用
Amazon Aurora MySQL では、パフォーマンスの高い高度な監査機能を使用して、データベースアクティビティを監査できます。そのためには、複数の DB クラスターパラメータを設定することによって監査ログの収集を有効にします。高度な監査を有効にすると、この機能を使用して、サポートされているイベントの任意の組み合わせを記録できます。
監査ログを表示またはダウンロードして、一度に 1 つの DB インスタンスの監査情報を確認することができます。そのためには、「Amazon Aurora ログファイルのモニタリング」に記載された手順を使用します。
ヒント
複数の DB インスタンスを含む Aurora DB クラスターの場合、この方法の方が、クラスター内のすべてのインスタンスの監査ログを調べるために便利なことがあります。これを行うために、CloudWatch Logs を使用します。クラスターレベルで設定を有効にし、Aurora MySQL での監査ログデータを CloudWatch のロググループに発行します。その後、CloudWatch インターフェイスを使用して、監査ログの表示やフィルタリング、および検索が行えます。詳細については、「Amazon CloudWatch Logs への Amazon Aurora MySQL ログの発行」を参照してください。
アドバンストな監査の有効化
DB クラスターの高度な監査を有効にして設定するには、このセクションで説明されているパラメータを使用します。
より高度な監査を有効化または無効化するには、server_audit_logging
パラメータを使用します。
ログ記録するイベントを指定するには、server_audit_events
パラメータを使用します。
server_audit_incl_users
パラメータと server_audit_excl_users
パラメータを使用して、監査するユーザーを指定します。デフォルトでは、すべてのユーザーが監査されます。一方または両方を空のままにした場合、または両方で同じユーザ名が指定されている場合に、これらのパラメータがどのように機能するかについては、「server_audit_incl_users」ならびに「server_audit_excl_users」を参照してください。
高度な監査は、DB クラスターにより使用されているパラメータグループでこれらのパラメータを設定することにより設定します。「Amazon Aurora の DB パラメータグループのパラメータの変更」に示されている手順を使用し、AWS Management Consoleを使用して DB クラスターパラメータを変更できます。AWS CLI コマンドの modify-db-cluster-parameter-group 、または Amazon RDS API の ModifyDBClusterParameterGroup オペレーションを使用して、プログラム的に DB クラスターパラメータを変更できます。
パラメータグループが既にクラスターに関連付けられていれば、これらのパラメータを変更しても、DB クラスターを再起動する必要はありません。パラメータグループをクラスターに初めて関連付ける場合は、クラスターの再起動が必要です。
server_audit_logging
高度な監査を有効または無効にします。このパラメータのデフォルトは OFF です。高度な監査を有効にするには、ON に設定します。
監査するイベントのタイプを、server_audit_events
パラメータを使用して 1 つ以上定義しない限り、監査データはログに表示されません。
DB インスタンスの監査データがログに記録されていることを確認するには、そのインスタンスのログファイルに、audit/audit.log.
の形式で名前が付けられたものがあることを確認します。ログファイルの名前を表示するには、「データベースログファイルの表示とリスト化」に記載されてい手順に従ってください。other_identifying_information
server_audit_events
記録するイベントのコンマ区切りリストが含まれています。イベントはすべて大文字で指定する必要があります。リスト要素間に空白があってはいけません。例: CONNECT,QUERY_DDL
。このパラメータのデフォルトは空の文字列です。
次のイベントの任意の組み合わせを記録できます。
-
CONNECT - 成功した接続と失敗した接続の両方、および切断を記録します。このイベントにはユーザー情報が含まれています。
-
QUERY - すべてのクエリをプレーンテキストで記録します (構文またはアクセス権限エラーで失敗したエラーを含む)。
ヒント
このイベントタイプを有効にすると、監査データには、Aurora が自動的に行う継続的なモニタリングとヘルスチェックに関する情報が含まれます。特定の種類のオペレーションのみを確認したい場合は、イベントの種類をより具体的に指定できます。また、CloudWatch インターフェイスを使用して、ログ内の特定のデータベース、テーブル、またはユーザーに関連するイベントを検索することもできます。
-
QUERY_DCL - QUERY イベントと同様ですが、データ制御言語 (DCL) クエリ (GRANT、REVOKE など) のみ返します。
-
QUERY_DDL - QUERY イベントと同様ですが、データ定義言語 (DDL) クエリ (CREATE、ALTER など) のみ返します。
-
QUERY_DML - QUERY イベントと同様ですが、データ操作言語 (DML) クエリ (INSERT、UPDATE などと、SELECT) のみ返します。
-
TABLE - クエリ実行の影響を受けたテーブルを記録します。
注記
Aurora には、監査ログから特定のクエリを除外するフィルターはありません。SELECT
クエリを除外するには、すべての DML ステートメントを除外する必要があります。
特定のユーザーがこれらの内部 SELECT
クエリを監査ログで報告している場合は、server_audit_excl_users DB クラスターパラメータを設定して、そのユーザーを除外できます。ただし、そのユーザーが他のアクティビティでも使用され、省略できない場合、SELECT
クエリを除外するための他のオプションはありません。
server_audit_incl_users
アクティビティを記録するユーザーのカンマ区切りのユーザー名リストが含まれています。リストの要素間にスペースは挿入しないでください。例えば、user_3,user_4
などです。このパラメータのデフォルトは空の文字列です。最大長は 1024 文字です。指定したユーザー名は、User
テーブルの mysql.user
列の対応する値と一致する必要があります。ユーザー名の詳細については、MySQL のドキュメントの「アカウントユーザー名とパスワード
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
の両方に同じユーザーを追加した場合、それらのユーザーが監査されます。同じユーザーが両方の設定にリストされている場合、server_audit_incl_users
に対し、より高い優先順位が与えられます。
接続および切断イベントは、この可変の影響を受けません。指定された場合は常に記録されます。server_audit_incl_users
の方が優先順位が高いため、ユーザーが server_audit_excl_users
パラメータでも指定されている場合も、そのユーザーは記録されます。
server_audit_excl_users
アクティビティがを記録しないユーザーのカンマ区切りのユーザー名リストが含まれています。リストの要素間にスペースは挿入しないでください。例えば、rdsadmin,user_1,user_2
などです。このパラメータのデフォルトは空の文字列です。最大長は 1024 文字です。指定したユーザー名は、User
テーブルの mysql.user
列の対応する値と一致する必要があります。ユーザー名の詳細については、MySQL のドキュメントの「アカウントユーザー名とパスワード
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
の両方に同じユーザーを追加した場合、それらのユーザーが監査されます。同じユーザーが両方の設定にリストされている場合、server_audit_incl_users
に対し、より高い優先順位が与えられます。
接続および切断イベントは、この可変の影響を受けません。指定された場合は常に記録されます。ユーザーが server_audit_incl_users
パラメータでも指定されている場合、そのユーザーは記録されます。この設定の方が server_audit_excl_users
より優先順位が高いためです。
監査ログの表示
監査ログを表示およびダウンロードするには、コンソールを使用します。[データベース] ページで、DB インスタンスをクリックして詳細を表示し、[ログ] セクションまでスクロールします。高度な監査機能によって生成される監査ログには、audit/audit.log.
の形式で名前が付けられています。other_identifying_information
ログファイルをダウンロードするには、[ログ] セクションでファイルを選択してから、[ダウンロード] を選択します。
describe-db-log-files AWS CLI コマンドを使用して、ログファイルのリストを取得することもできます。ログファイルの内容は、AWS CLI の download-db-log-file-portion コマンドを実行してダウンロードできます。詳細については、「データベースログファイルの表示とリスト化」および「データベースログファイルのダウンロード」を参照してください。
監査ログの詳細
ログファイルは、UTF-8 形式のカンマ区切り変数 (CSV) ファイルとして表されます。クエリも一重引用符 (') で囲まれます。
監査ログは、各 Aurora MySQL DB インスタンスのローカルストレージに個別に保存されます。各インスタンスは、一度に 4 つのログファイルに書き込みを分散します。ログファイルの最大サイズは 100 MB です。この設定不可能な制限に達すると、Aurora はファイルを回転し、新しいファイルを生成します。
ヒント
ログファイルのエントリは、順番になっていません。エントリを順序付けするには、タイムスタンプ値を使用します。最新のイベントを表示するには、すべてのログファイルの確認が必要な場合があります。ログデータの並べ替えと検索をより柔軟に行うためには、監査ログを CloudWatch にアップロードするための設定を有効にし、CloudWatch インターフェイスを使用してそれらを表示します。
より多くのタイプのフィールドを含み、JSON 形式で出力された監査データを表示するには、データベースのアクティビティストリーム機能を使用することもできます。詳細については、「データベースアクティビティストリームを使用した Amazon Aurora のモニタリング」を参照してください。
監査ログファイルの行には、次のカンマ区切りの情報が指定された順序で含まれています。
フィールド | 説明 |
---|---|
timestamp |
記録されたイベントの UNIX タイムスタンプ (マイクロ秒の精度)。 |
serverhost |
イベントが記録されているインスタンスの名前。 |
username |
ユーザーの接続されたユーザー名。 |
host |
ユーザーの接続元のホスト。 |
connectionid |
記録されたオペレーションの接続 ID 番号。 |
queryid |
クエリ ID 番号。リレーショナルテーブルイベントと関連するクエリの検索に使用できます。 |
オペレーション |
記録されたアクションの種類。指定できる値は |
データベース |
|
オブジェクト |
|
retcode |
記録されたオペレーションのリターンコード。 |