監査ログ
Dorisは、データベース操作の監査機能を提供し、ユーザーのログイン、クエリ、およびデータベースに対する変更操作の記録を可能にします。Dorisでは、監査ログは組み込みのシステムテーブルを通じて直接クエリするか、Dorisの監査ログファイルを表示することで確認できます。
監査ログの有効化
監査ログプラグインは、グローバル変数enable_audit_plugin(デフォルトでは無効)を使用していつでも有効または無効にできます。例:
set global enable_audit_plugin = true;
有効にすると、Dorisは監査ログをaudit_logテーブルに書き込みます。
監査ログプラグインはいつでも無効にできます:
set global enable_audit_plugin = false;
無効にした後、Dorisはaudit_logテーブルへの書き込みを停止します。すでに書き込まれた監査ログは変更されません。
監査ログテーブルの表示
バージョン2.1.8より前では、システムバージョンがアップグレードされるにつれて、監査ログテーブルのフィールドが増加している可能性があります。アップグレード後は、監査ログテーブルのフィールドに基づいてALTER TABLEコマンドを使用してaudit_logテーブルにフィールドを追加する必要があります。
Dorisバージョン2.1以降、Dorisは監査ログ機能を有効にすることで、ユーザーの動作操作を__internal_schemaデータベースのaudit_logテーブルに書き込むことができます。
監査ログテーブルは動的パーティションテーブルで、デフォルトでは日次でパーティション分割され、最新30日間のデータを保持します。ALTER TABLE文を使用してdynamic_partition.startプロパティを変更することで、動的パーティションの保持期間を調整できます。
監査ログファイル
fe.confで、LOG_DIRはFEログの格納パスを定義します。このFEノードで実行されたすべてのデータベース操作は${LOG_DIR}/fe.audit.logに記録されます。クラスタ内のすべての操作を表示するには、各FEノードの監査ログを確認する必要があります。
監査ログフォーマット
3.0.7より前のバージョンでは、ステートメント内の記号\n、\t、\rは\\n、\\t、\\rに置換されていました。これらの変更されたステートメントは、fe.audit.logファイルとaudit_logテーブルに格納されていました。
バージョン3.0.7以降、fe.audit.logファイルについては、ステートメント内の\nのみが\\nに置換されます。audit_logテーブルは、ステートメントの元のフォーマットを格納します。
監査ログ設定
グローバル変数:
監査ログ変数はset [global] <var_name> = <var_value>を使用して変更できます。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
audit_plugin_max_batch_interval_sec | 60秒 | 監査ログテーブルの最大書き込み間隔。 |
audit_plugin_max_batch_bytes | 50MB | 監査ログテーブルの1バッチあたりの最大データ量。 |
audit_plugin_max_sql_length | 4096 | 監査ログテーブルに記録されるSQL文の最大長。 |
audit_plugin_load_timeout | 600秒 | 監査ログインポートジョブのデフォルトタイムアウト。 |
audit_plugin_max_insert_stmt_length | Int.MAX | INSERT文の最大長制限。audit_plugin_max_sql_lengthよりも大きい場合は、audit_plugin_max_sql_lengthの値が使用されます。このパラメータは3.0.6以降でサポートされています。 |
一部のINSERT INTO VALUES文は長すぎて頻繁に送信される可能性があり、監査ログが大きくなりすぎる原因となるため、Dorisはバージョン3.0.6でaudit_plugin_max_insert_stmt_lengthを追加し、INSERT文の監査長を個別に制限しました。これにより、監査ログの拡大を回避し、SQL文が完全に監査されることを保証します。
FE設定項目:
FE設定項目はfe.confディレクトリを編集することで変更できます。
| 設定項目 | 説明 |
|---|---|
skip_audit_user_list | 特定のユーザーの操作を監査ログに記録したくない場合は、この設定を変更できます(バージョン3.0.01以降でサポート)。例えば、監査ログ記録からuser1とuser2を除外するには次の設定を使用します:skip_audit_user_list=user1,user2 |