データベースアクティビティストリーミングの databaseActivityEventList JSON 配列 - Amazon Aurora

データベースアクティビティストリーミングの databaseActivityEventList JSON 配列

監査ログのペイロードは、暗号化された databaseActivityEventList JSON 配列です。以下の表に、監査ログの復号された DatabaseActivityEventList 配列内の各アクティビティイベントのフィールドをアルファベット順に示します。Aurora PostgreSQL または Aurora MySQL を使用するかどうかによって、フィールドは異なります。データベースエンジンに適用される表を参照してください。

重要

イベントの構造は変わる場合があります。Aurora では、将来、アクティビティイベントに新しいフィールドが追加される可能性があります。JSON データを分析するアプリケーションでは、コードが未知のフィールド名に対して無視または適切なアクションを実行できることを確認します。

Aurora PostgreSQL の databaseActivityEventList フィールド

Aurora PostgreSQL の databaseActivityEventList フィールドは次のとおりです。

フィールド データ型 説明
class 文字列

アクティビティイベントのクラス。Aurora PostgreSQL の有効な値は以下のとおりです。

  • ALL

  • CONNECT - 接続イベントまたは切断イベント。

  • DDL - ROLE クラスのステートメントのリストに含まれていない DDL ステートメント。

  • FUNCTION - 関数の呼び出し、または DO ブロック。

  • MISC - さまざまなコマンド (例: DISCARDFETCHCHECKPOINTVACUUM)。

  • NONE

  • READ - SELECT ステートメントまたは COPY ステートメント (ソースがリレーションまたはクエリの場合)。

  • ROLE - ロールと特権に関するステートメント (例: GRANTREVOKECREATEALTERDROPROLE)。

  • WRITE - INSERTUPDATEDELETETRUNCATECOPY ステートメント (送信先がリレーションの場合)。

clientApplication 文字列 クライアントのレポートどおりにクライアントが接続に使用していたアプリケーション。クライアントはこの情報を指定する必要はないため、値は null でも問題ありません。
command 文字列 SQL コマンドの名前 (コマンドの詳細は含まない)。
commandText 文字列

ユーザーによって渡された実際の SQL ステートメント。Aurora PostgreSQL の場合、値は元の SQL ステートメントと同じです。このフィールドは、接続レコードまたは切断レコードを除くすべてのタイプのレコードに使用されます。この場合、値は null です。

重要

各ステートメントの完全な SQL テキストは、機密データを含むアクティビティストリーミング監査ログに表示されます。ただし、Aurora が次の SQL ステートメントのようにコンテキストから判断できる場合、データベースユーザーのパスワードは編集されます。

ALTER ROLE role-name WITH password
databaseName 文字列 ユーザーが接続したデータベース。
dbProtocol 文字列 データベースプロトコル (例: Postgres 3.0)。
dbUserName 文字列 クライアントが認証したデータベースユーザー。
errorMessage

(バージョン 1.1 のデータベースアクティビティレコードのみ)

文字列

エラーがあった場合、このフィールドには DB サーバーによって生成されるはずのエラーメッセージが表示されます。エラーにならなかった通常のステートメントの場合、errorMessage の値は null です。

エラーは、重要度が ERROR 以上の、クライアントで表示される PostgreSQL エラーログイベントを生成するアクティビティとして定義されます。詳細については、「PostgreSQL メッセージの重要度」を参照してください。例えば、構文エラーやクエリのキャンセルは、エラーメッセージを生成します。

バックグラウンドのチェックポインタープロセスエラーなどの内部の PostgreSQL サーバーエラーは、エラーメッセージを生成しません。ただし、ログの重要度レベルの設定に関係なく、このようなイベントのレコードは引き続き出力されます。これにより、攻撃者がログをオフにして検出を回避することを防ぎます。

exitCode フィールドも参照してください。

exitCode int セッション終了レコードに使用される値。clean exit では、終了コードが含まれます。エラーシナリオによっては、終了コードが常に得られるとは限りません。例えば、PostgreSQL で exit() を実行している場合や、オペレーターが kill -9 などのコマンドを実行している場合があります。

エラーが発生した場合は、PostgreSQL エラーコードにリストされている SQL エラーコード (SQLSTATE) が exitCode フィールドに表示されます。

errorMessage フィールドも参照してください。

logTime 文字列 監査コードパスに記録されているタイムスタンプ。これは、SQL ステートメントの実行終了時刻を表します。startTime フィールドも参照してください。
netProtocol 文字列 ネットワーク通信プロトコル。
objectName 文字列 データベースオブジェクトの名前 (SQL ステートメントを使用している場合)。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。
objectType 文字列 テーブル、インデックス、ビューなどのデータベースオブジェクトタイプ。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。有効な値には次のようなものがあります。
  • COMPOSITE TYPE

  • FOREIGN TABLE

  • FUNCTION

  • INDEX

  • MATERIALIZED VIEW

  • SEQUENCE

  • TABLE

  • TOAST TABLE

  • VIEW

  • UNKNOWN

paramList 文字列 SQL ステートメントに渡されるカンマ区切りのパラメータの配列。SQL ステートメントにパラメータがない場合、この値は空の配列です。
pid int クライアント接続を処理するために割り当てられているバックエンドプロセスのプロセス ID。
remoteHost 文字列 クライアントの IP アドレスまたはホスト名。Aurora PostgreSQL では、どちらが使用されるかは、データベースの log_hostname パラメータ設定によって異なります。remoteHost 値には、rdsadmin ユーザーからのアクティビティを示す [local]localhost も含まれます。
remotePort string クライアントのポート番号。
rowCount int SQL 文によって返された行数。例えば、SELECT ステートメントが 10 行を返す場合、rowCount は 10 になります。INSERT ステートメントまたは UPDATE ステートメントの場合、RowCount は 0 です。
serverHost 文字列 データベースサーバーのホスト IP アドレス。serverHost 値には、rdsadmin ユーザーからのアクティビティを示す [local]localhost も含まれます。
serverType string データベースサーバーのタイプ (例: PostgreSQL)。
serverVersion 文字列 データベースサーバーのバージョン (例: Aurora PostgreSQL の 2.3.1)。
serviceName 文字列 サービスの名前 (例: Amazon Aurora PostgreSQL-Compatible edition)。
sessionId int 一意の疑似セッション識別子。
sessionId int 一意の疑似セッション識別子。
startTime

(バージョン 1.1 のデータベースアクティビティレコードのみ)

文字列

SQL ステートメントの実行がスタートされた時刻。

SQL ステートメントのおおよその実行時間を計算するには、logTime - startTime を使用します。logTime フィールドも参照してください。

statementId int クライアントの SQL ステートメントの識別子。カウンターはセッションレベルであり、クライアントによって SQL ステートメントが入力される度に増加します。
substatementId int SQL サブステートメントの識別子。この値は、statementId フィールドで識別された各 SQL ステートメントに含まれるサブステートメントをカウントします。
type 文字列 イベントタイプ。有効な値は record または heartbeat です。

Aurora MySQL の databaseActivityEventList フィールド

Aurora MySQL の databaseActivityEventList フィールドは次のとおりです。

フィールド データ型 説明
class 文字列

アクティビティイベントのクラス。

Aurora MySQL の有効な値は以下のとおりです。

  • MAIN - SQL ステートメントを表すプライマリイベントです。

  • AUX - 追加の詳細を含む補足イベント。例えば、オブジェクトの名前を変更したステートメントには、新しい名前を反映するクラス AUX を持つイベントがあります。

    同じステートメントに対応する MAIN イベントと AUX イベントを検索するには、pid フィールドと statementId フィールドの値が同じである、異なるイベントがないか確認します。

clientApplication 文字列 クライアントのレポートどおりにクライアントが接続に使用していたアプリケーション。クライアントはこの情報を指定する必要はないため、値は null でも問題ありません。
command 文字列

SQL ステートメントの一般的なカテゴリ。このフィールドの値は class の値によって異なります。

classMAIN の場合の値には、次の値が含まれます。

  • CONNECT - クライアントセッションが接続されている場合。

  • QUERY - SQL ステートメント。classAUX 値が 1 つ以上のイベントを伴います。

  • DISCONNECT - クライアントセッションが切断されている場合。

  • FAILED_CONNECT - クライアントが接続を試みたが、接続できない場合。

  • CHANGEUSER - 発行するステートメントではなく、MySQL ネットワークプロトコルの一部である状態の変更。

classAUX の場合の値には、次の値が含まれます。

  • READ - SELECT ステートメントまたは COPY ステートメント (ソースがリレーションまたはクエリの場合)。

  • WRITE - INSERTUPDATEDELETETRUNCATECOPY ステートメント (送信先がリレーションの場合)。

  • DROP - オブジェクトの削除。

  • CREATE - オブジェクトの作成。

  • RENAME - オブジェクトの名前の変更。

  • ALTER - オブジェクトのプロパティの変更。

commandText 文字列

classMAIN 値を持つイベントの場合、このフィールドはユーザーが渡した実際の SQL ステートメントを表します。このフィールドは、接続レコードまたは切断レコードを除くすべてのタイプのレコードに使用されます。この場合、値は null です。

classAUX 値を持つイベントの場合、このフィールドには、イベントに関係するオブジェクトに関する補足情報が含まれます。

Aurora MySQL では、引用符などの文字の前には、エスケープ文字を表すバックスラッシュが付きます。

重要

各ステートメントの SQL テキスト全体が、機密データを含む監査ログに表示されます。ただし、Aurora が次の SQL ステートメントのようにコンテキストから判断できる場合、データベースユーザーのパスワードは編集されます。

mysql> SET PASSWORD = 'my-password';
注記

セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。

databaseName string ユーザーが接続したデータベース。
dbProtocol 文字列 データベースプロトコル。現在、この値は常に Aurora MySQL の MySQL です。
dbUserName 文字列 クライアントが認証したデータベースユーザー。
endTime

(バージョン 1.2 のデータベースアクティビティレコードのみ)

文字列

SQL ステートメントの実行が終了した時刻。これは、協定世界時 (UTC) 形式で表されます。

SQL ステートメントの実行時間を計算するには、endTime - startTime を使用します。startTime フィールドも参照してください。

errorMessage

(バージョン 1.1 のデータベースアクティビティレコードのみ)

文字列

エラーがあった場合、このフィールドには DB サーバーによって生成されるはずのエラーメッセージが表示されます。エラーにならなかった通常のステートメントの場合、errorMessage の値は null です。

エラーは、重要度が ERROR 以上の、クライアントで表示される MySQL エラーログイベントを生成するアクティビティとして定義されます。詳細については、MySQL リファレンスマニュアルの「エラーログ」を参照してください。例えば、構文エラーやクエリのキャンセルは、エラーメッセージを生成します。

バックグラウンドのチェックポインタープロセスエラーなどの内部の MySQL サーバーエラーは、エラーメッセージを生成しません。ただし、ログの重要度レベルの設定に関係なく、このようなイベントのレコードは引き続き出力されます。これにより、攻撃者がログをオフにして検出を回避することを防ぎます。

exitCode フィールドも参照してください。

exitCode int セッション終了レコードに使用される値。clean exit では、終了コードが含まれます。エラーシナリオによっては、終了コードが常に得られるとは限りません。このような場合、この値はゼロになるか、空白になる可能性があります。
logTime 文字列 監査コードパスに記録されているタイムスタンプ。これは、協定世界時 (UTC) 形式で表されます。ステートメントの期間を計算する最も正確な方法については、startTime および endTime フィールドを参照してください。
netProtocol 文字列 ネットワーク通信プロトコル。現在、この値は常に Aurora MySQL の TCP です。
objectName 文字列 データベースオブジェクトの名前 (SQL ステートメントを使用している場合)。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は空白になります。オブジェクトの完全修飾名を作成するには、databaseNameobjectName を結合します。クエリに複数のオブジェクトが含まれる場合、このフィールドはカンマで区切られた名前のリストにすることができます。
objectType 文字列

テーブル、インデックスなどのデータベースオブジェクトタイプ。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。

Aurora MySQL の有効な値には次のようなものがあります。

  • INDEX

  • TABLE

  • UNKNOWN

paramList 文字列 このフィールドは Aurora MySQL には使用されず、常に null です。
pid int クライアント接続を処理するために割り当てられているバックエンドプロセスのプロセス ID。データベースサーバー再起動すると、pid が変更され、statementId フィールドのカウンターが初期からやり直されます。
remoteHost 文字列 SQL ステートメントを発行したクライアントの IP アドレスまたはホスト名。Aurora MySQL では、どちらが使用されるかは、データベースの skip_name_resolve パラメータ設定によって異なります。この値 localhost は、rdsadmin スペシャルユーザーからのアクティビティを示します。
remotePort 文字列 クライアントのポート番号。
rowCount int SQL ステートメントによって影響を受けた、または取得されたテーブルの行数。このフィールドは、データ操作言語 (DML) ステートメントである SQL ステートメントでのみ使用されます。SQL ステートメントが DML ステートメントではない場合、この値は null です。
serverHost 文字列 データベースサーバーインスタンス識別子。
serverType string データベースサーバーのタイプ (例: MySQL)。
serverVersion 文字列 データベースサーバーのバージョン。現在、この値は常に Aurora MySQL の MySQL 5.7.12 です。
serviceName 文字列 サービスの名前。現在、この値は常に Aurora MySQL の Amazon Aurora MySQL です。
sessionId int 一意の疑似セッション識別子。
startTime

(バージョン 1.1 のデータベースアクティビティレコードのみ)

文字列

SQL ステートメントの実行がスタートされた時刻。これは、協定世界時 (UTC) 形式で表されます。

SQL ステートメントの実行時間を計算するには、endTime - startTime を使用します。endTime フィールドも参照してください。

statementId int クライアントの SQL ステートメントの識別子。カウンターは、クライアントによって SQL ステートメントが入力される度に増加します。DB インスタンスが再起動されると、カウンターがリセットされます。
substatementId int SQL サブステートメントの識別子。この値は、クラス MAIN を持つイベントの場合は 1、クラス AUX を持つイベントの場合は 2 です。statementId フィールドを使用して、同じステートメントによって生成されたすべてのイベントを識別します。
transactionId

(バージョン 1.2 のデータベースアクティビティレコードのみ)

int トランザクションの識別子。
type 文字列 イベントタイプ。有効な値は record または heartbeat です。