データベースアクティビティストリーミングの databaseActivityEventList JSON 配列
監査ログのペイロードは、暗号化された databaseActivityEventList
JSON 配列です。以下の表に、監査ログの復号された DatabaseActivityEventList
配列内の各アクティビティイベントのフィールドをアルファベット順に示します。Aurora PostgreSQL または Aurora MySQL を使用するかどうかによって、フィールドは異なります。データベースエンジンに適用される表を参照してください。
重要
イベントの構造は変わる場合があります。Aurora では、将来、アクティビティイベントに新しいフィールドが追加される可能性があります。JSON データを分析するアプリケーションでは、コードが未知のフィールド名に対して無視または適切なアクションを実行できることを確認します。
Aurora PostgreSQL の databaseActivityEventList フィールド
Aurora PostgreSQL の databaseActivityEventList
フィールドは次のとおりです。
フィールド | データ型 | 説明 |
---|---|---|
class |
文字列 |
アクティビティイベントのクラス。Aurora PostgreSQL の有効な値は以下のとおりです。
|
clientApplication |
文字列 | クライアントのレポートどおりにクライアントが接続に使用していたアプリケーション。クライアントはこの情報を指定する必要はないため、値は null でも問題ありません。 |
command |
文字列 | SQL コマンドの名前 (コマンドの詳細は含まない)。 |
commandText |
文字列 |
ユーザーによって渡された実際の SQL ステートメント。Aurora PostgreSQL の場合、値は元の SQL ステートメントと同じです。このフィールドは、接続レコードまたは切断レコードを除くすべてのタイプのレコードに使用されます。この場合、値は null です。 重要各ステートメントの完全な SQL テキストは、機密データを含むアクティビティストリーミング監査ログに表示されます。ただし、Aurora が次の SQL ステートメントのようにコンテキストから判断できる場合、データベースユーザーのパスワードは編集されます。
|
databaseName |
文字列 | ユーザーが接続したデータベース。 |
dbProtocol |
文字列 | データベースプロトコル (例: Postgres 3.0 )。 |
dbUserName |
文字列 | クライアントが認証したデータベースユーザー。 |
errorMessage (バージョン 1.1 のデータベースアクティビティレコードのみ) |
文字列 |
エラーがあった場合、このフィールドには DB サーバーによって生成されるはずのエラーメッセージが表示されます。エラーにならなかった通常のステートメントの場合、 エラーは、重要度が バックグラウンドのチェックポインタープロセスエラーなどの内部の PostgreSQL サーバーエラーは、エラーメッセージを生成しません。ただし、ログの重要度レベルの設定に関係なく、このようなイベントのレコードは引き続き出力されます。これにより、攻撃者がログをオフにして検出を回避することを防ぎます。
|
exitCode |
int | セッション終了レコードに使用される値。clean exit では、終了コードが含まれます。エラーシナリオによっては、終了コードが常に得られるとは限りません。例えば、PostgreSQL で exit() を実行している場合や、オペレーターが kill -9 などのコマンドを実行している場合があります。エラーが発生した場合は、PostgreSQL エラーコード
|
logTime |
文字列 | 監査コードパスに記録されているタイムスタンプ。これは、SQL ステートメントの実行終了時刻を表します。startTime フィールドも参照してください。 |
netProtocol |
文字列 | ネットワーク通信プロトコル。 |
objectName |
文字列 | データベースオブジェクトの名前 (SQL ステートメントを使用している場合)。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。 |
objectType |
文字列 | テーブル、インデックス、ビューなどのデータベースオブジェクトタイプ。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。有効な値には次のようなものがあります。
|
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 ステートメントのおおよその実行時間を計算するには、 |
statementId |
int | クライアントの SQL ステートメントの識別子。カウンターはセッションレベルであり、クライアントによって SQL ステートメントが入力される度に増加します。 |
substatementId |
int | SQL サブステートメントの識別子。この値は、statementId フィールドで識別された各 SQL ステートメントに含まれるサブステートメントをカウントします。 |
type |
文字列 | イベントタイプ。有効な値は record または heartbeat です。 |
Aurora MySQL の databaseActivityEventList フィールド
Aurora MySQL の databaseActivityEventList
フィールドは次のとおりです。
フィールド | データ型 | 説明 |
---|---|---|
class |
文字列 |
アクティビティイベントのクラス。 Aurora MySQL の有効な値は以下のとおりです。
|
clientApplication |
文字列 | クライアントのレポートどおりにクライアントが接続に使用していたアプリケーション。クライアントはこの情報を指定する必要はないため、値は null でも問題ありません。 |
command |
文字列 |
SQL ステートメントの一般的なカテゴリ。このフィールドの値は
|
commandText |
文字列 |
Aurora MySQL では、引用符などの文字の前には、エスケープ文字を表すバックスラッシュが付きます。 重要各ステートメントの SQL テキスト全体が、機密データを含む監査ログに表示されます。ただし、Aurora が次の SQL ステートメントのようにコンテキストから判断できる場合、データベースユーザーのパスワードは編集されます。
注記セキュリティ上のベストプラクティスとして、ここに示されているプロンプト以外のパスワードを指定してください。 |
databaseName |
string | ユーザーが接続したデータベース。 |
dbProtocol |
文字列 | データベースプロトコル。現在、この値は常に Aurora MySQL の MySQL です。 |
dbUserName |
文字列 | クライアントが認証したデータベースユーザー。 |
endTime (バージョン 1.2 のデータベースアクティビティレコードのみ) |
文字列 |
SQL ステートメントの実行が終了した時刻。これは、協定世界時 (UTC) 形式で表されます。 SQL ステートメントの実行時間を計算するには、 |
errorMessage (バージョン 1.1 のデータベースアクティビティレコードのみ) |
文字列 |
エラーがあった場合、このフィールドには DB サーバーによって生成されるはずのエラーメッセージが表示されます。エラーにならなかった通常のステートメントの場合、 エラーは、重要度が バックグラウンドのチェックポインタープロセスエラーなどの内部の MySQL サーバーエラーは、エラーメッセージを生成しません。ただし、ログの重要度レベルの設定に関係なく、このようなイベントのレコードは引き続き出力されます。これにより、攻撃者がログをオフにして検出を回避することを防ぎます。
|
exitCode |
int | セッション終了レコードに使用される値。clean exit では、終了コードが含まれます。エラーシナリオによっては、終了コードが常に得られるとは限りません。このような場合、この値はゼロになるか、空白になる可能性があります。 |
logTime |
文字列 | 監査コードパスに記録されているタイムスタンプ。これは、協定世界時 (UTC) 形式で表されます。ステートメントの期間を計算する最も正確な方法については、startTime および endTime フィールドを参照してください。 |
netProtocol |
文字列 | ネットワーク通信プロトコル。現在、この値は常に Aurora MySQL の TCP です。 |
objectName |
文字列 | データベースオブジェクトの名前 (SQL ステートメントを使用している場合)。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は空白になります。オブジェクトの完全修飾名を作成するには、databaseName と objectName を結合します。クエリに複数のオブジェクトが含まれる場合、このフィールドはカンマで区切られた名前のリストにすることができます。 |
objectType |
文字列 |
テーブル、インデックスなどのデータベースオブジェクトタイプ。このフィールドは、SQL ステートメントがデータベースオブジェクトに対して機能する場合にのみ使用されます。SQL ステートメントがオブジェクトに対して機能していない場合、この値は null です。 Aurora MySQL の有効な値には次のようなものがあります。
|
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 ステートメントの実行時間を計算するには、 |
statementId |
int | クライアントの SQL ステートメントの識別子。カウンターは、クライアントによって SQL ステートメントが入力される度に増加します。DB インスタンスが再起動されると、カウンターがリセットされます。 |
substatementId |
int | SQL サブステートメントの識別子。この値は、クラス MAIN を持つイベントの場合は 1、クラス AUX を持つイベントの場合は 2 です。statementId フィールドを使用して、同じステートメントによって生成されたすべてのイベントを識別します。 |
transactionId (バージョン 1.2 のデータベースアクティビティレコードのみ) |
int | トランザクションの識別子。 |
type |
文字列 | イベントタイプ。有効な値は record または heartbeat です。 |