Amazon Aurora MySQL DB クラスターでのアドバンストな監査の使用 - Amazon Aurora

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_usersserver_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_usersserver_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_usersserver_audit_excl_users の両方が空 (デフォルト) の場合、すべてのユーザーが監査されます。

ユーザーを server_audit_excl_users に追加して server_audit_incl_users を空のままにすると、server_audit_excl_users にリストしたユーザーだけを監査せずに、他のすべてのユーザーを監査することができます。

server_audit_excl_usersserver_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 番号。リレーショナルテーブルイベントと関連するクエリの検索に使用できます。TABLE イベントの場合、複数の行が追加されます。

オペレーション

記録されたアクションの種類。指定できる値は CONNECTQUERYREADWRITECREATEALTERRENAMEDROP です。

データベース

USE コマンドにより設定されたアクティブなデータベース。

オブジェクト

QUERY イベントの場合、この値は、データベースが実行したクエリを示します。TABLE イベントの場合、テーブル名を示します。

retcode

記録されたオペレーションのリターンコード。