TiDB Cloud Essentialのデータベース監査ログ機能 (ベータ版)
TiDB Cloud Essentialは、実行されたSQLステートメントなど、データベースへのユーザーアクセスアクティビティを記録する監査ログ機能を提供します。
注記:
現在、データベース監査ログ機能はリクエストに応じてのみ利用可能です。この機能をリクエストするには、 TiDB Cloudコンソール?」をクリックし、 次に「サポートチケット」をクリックしてヘルプセンターに移動します。チケットを作成し、 「説明」フィールドに「 TiDB Cloud Essentialデータベース監査ログの申請」と入力して、 「送信」をクリックします。
組織のユーザーアクセスポリシーやその他の情報セキュリティ対策の有効性を評価するには、データベース監査ログを定期的に分析することがセキュリティ上のベストプラクティスです。
監査ログ機能はデフォルトでは無効になっています。TiDB Cloud Essentialインスタンスの監査を行うには、監査ログを有効にする必要があります。
監査ログの設定
データ編集
TiDB Cloud Essentialは、デフォルトでは監査ログ内の機密データをマスキングします。以下のSQL文を例に挙げます。
INSERT INTO `test`.`users` (`id`, `name`, `password`) VALUES (1, 'Alice', '123456');
以下のように編集されています。
INSERT INTO `test`.`users` (`id`, `name`, `password`) VALUES ( ... );
ログファイルのローテーション
TiDB Cloud Essentialは、以下のいずれかの条件が満たされた場合に新しい監査ログファイルを生成します。
- 現在のログファイルがローテーションサイズ(デフォルトでは100MiB)に達しました。
- 前回のログ生成から、ローテーション間隔(デフォルトでは1時間)が経過しました。内部スケジューリングメカニズムによっては、ログ生成が数分遅れる場合があります。
監査ログの場所
監査ログは以下の場所に保存できます。
TiDB Cloud
TiDB Cloudに監査ログを保存し、ローカルマシンにダウンロードできます。監査ログは365日後に期限切れとなり、削除されます。保存期間の延長をご希望の場合は、 TiDB Cloudサポートまでお問い合わせください。
Amazon S3
監査ログをAmazon S3に保存するには、以下の情報を提供する必要があります。
- URI:
s3://<bucket-name>/<folder-path>/ - アクセス認証情報:以下のいずれかを選択してください。
詳細については、 Amazon S3へのアクセスを設定する参照してください。
Google Cloud Storage
監査ログをGoogle Cloud Storageに保存するには、以下の情報を提供する必要があります。
- URI:
gs://<bucket-name>/<folder-path>/ - アクセス資格情報:
storage.objects.createおよびstorage.objects.delete権限を持つサービスサービスアカウントキー。
詳細については、 GCSへのアクセスを設定する参照してください。
Azure Blob Storage
Azure Blob Storage に監査ログを保存するには、以下の情報を提供する必要があります。
- URI:
azure://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/またはhttps://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/ - 共有アクセス署名(SAS)トークン資格情報:
ReadおよびWriteおよび {ContainerObject権限を持つ共有アクセス宣言(SAS) ブラウザ。
詳細については、 Azure Blob Storageへのアクセスを構成する参照してください。
アリババクラウドOSS
Alibaba Cloud OSSに監査ログを保存するには、以下の情報を提供する必要があります。
- URI:
oss://<bucket-name>/<folder-path>/ - アクセス資格情報: OSS バケットへのデータのエクスポートを許可する
oss:PutObjectおよびoss:GetBucketInfo権限を持つアクセスキーペアキーペア。
詳細については、 Alibaba Cloudオブジェクトストレージサービス(OSS)へのアクセスを設定する参照してください。
監査ログフィルタルール
監査ログをフィルタリングするには、ログに記録するイベントを指定するフィルタルールを作成する必要があります。
フィルタルールには以下のフィールドが含まれます。
users: 監査イベントをフィルタリングするためのユーザー名のリスト。ワイルドカード%を使用すると、任意のユーザー名に一致させることができます。filters: フィルタオブジェクトのリスト。各フィルタオブジェクトには、次のフィールドが含まれます。classes: 監査イベントをフィルタリングするためのイベントクラスのリスト。例:["QUERY", "EXECUTE"]。tables: テーブル フィルターのリスト。詳細については、 テーブルフィルター参照してください。statusCodes: 監査イベントをフィルタリングするためのステータスコードのリスト。1は成功、0は失敗を意味します。
以下の表は、データベース監査ログにおけるすべてのイベントクラスを示しています。
注記:
AUDITイベント クラスとそのサブクラスは常に監査ログに記録され、フィルタリングすることはできません。
監査ログの設定
監査ログの有効化、編集、無効化が可能です。
監査ログを有効にする
TiDB CloudコンソールまたはTiDB Cloud CLIを使用して、 TiDB Cloud Essentialインスタンスの監査ログを有効にすることができます。
注記:
監査ログを有効にするだけでは監査ログは生成されません。また、ログに記録するイベントを指定するフィルターを構成する必要があります。詳細については、監査ログフィルタルールの管理参照してください。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、 [有効にする]をクリックします。
監査ログのstorage場所を選択し、必要な情報を入力します。次に、 「接続をテスト」をクリックし、「次へ」または「次へ」をクリックします。利用可能なstorage場所の詳細については、監査ログの場所を参照してください。
データベース監査ログ設定ダイアログで、ログファイルのローテーションとログのマスキング設定を入力し、 [保存]をクリックします。
Amazon S3storageを例にとってみましょう。監査ログを有効にして監査ログをAmazon S3に保存するには、次のコマンドを実行します。
ticloud serverless audit-log config update -c <cluster-id> --enabled --cloud-storage S3 --s3.uri <s3-url> --s3.access-key-id <s3-access-key-id> --s3.secret-access-key <s3-secret-access-key> --rotation-size-mib <size-in-mb> --rotation-interval-minutes <interval-in-minutes> --unredacted=<true|false>
--rotation-size-mib 、 --rotation-interval-minutes 、および--unredactedパラメータはオプションです。これらを指定しない場合、デフォルト値が使用されます。
監査ログの編集
TiDB Cloud Essentialインスタンスの監査ログは、有効化後に編集できます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、 [設定]をクリックします。
データベース監査ログ設定ダイアログで、ログファイルのローテーションまたはログのマスキング設定を更新し、 [保存]をクリックします。
TiDB Cloud CLI を使用して監査ログ設定を更新するには、次のコマンドを実行します。
ticloud serverless audit-log config update -c <cluster-id> --rotation-size-mib <size-in-mb> --rotation-interval-minutes <interval-in-minutes> --unredacted=<true|false>
監査ログを無効にする
TiDB Cloud Essentialインスタンスの監査ログを無効にすることができます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、右上隅の...をクリックし、次に無効にします。
「DB監査ログを無効にする」ダイアログで、 「無効にする」をクリックします。
TiDB Cloud CLI を使用して監査ログを無効にするには、次のコマンドを実行します。
ticloud serverless audit-log config update -c <cluster-id> --disabled=true
監査ログフィルタルールの管理
監査ログフィルタルールを作成、編集、無効化、削除できます。
フィルタルールを作成する
フィルタルールを作成するには、監査ログに記録するユーザーとイベントを定義します。ユーザー、イベントクラス、テーブル、ステータスコードを指定することで、ログ記録をニーズに合わせてカスタマイズできます。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、 [フィルタルールの追加]をクリックします。
[フィルター ルールの追加]ダイアログで、 [フィルター名] 、 [SQL ユーザー] 、および[フィルター ルール]フィールドに入力し、 [確認]をクリックします。これらのフィールドの詳細については、監査ログフィルタルールを参照してください。
TiDB Cloud CLI を使用してフィルタルールを作成するには、次のコマンドを実行します。
ticloud serverless audit-log filter create --cluster-id <cluster-id> --display-name <rule-name> --rule '{"users":["%@%"],"filters":[{}]}'
フィルタールールを編集する
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログページで、編集するフィルタルールを見つけ、その行の...をクリックしてから、 [編集]をクリックします。
「フィルタールールの編集」ダイアログで、 「フィルター名」または「フィルタールール」フィールドを更新し、 「確認」をクリックします。
TiDB Cloud CLI を使用してフィルタルールを編集するには、次のコマンドを実行します。
ticloud serverless audit-log filter update --cluster-id <cluster-id> --filter-rule-id <rule-id> --rule '{"users":["%@%"],"filters":[{"classes":["QUERY"],"tables":["test.t"]}]}'
フィルタルールを無効にする
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、無効にしたいフィルタルールを見つけ、トグルをオフにしてフィルタルールを無効にします。
TiDB Cloud CLI を使用してフィルタルールを無効にするには、次のコマンドを実行します。
ticloud serverless audit-log filter update --cluster-id <cluster-id> --filter-rule-id <rule-id> --enabled=false
フィルタルールを削除する
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログページで、削除するフィルタルールを見つけて、 ...をクリックします。
「削除」をクリックし、次に「了解しました。削除して確定します」をクリックしてください。
ticloud serverless audit-log filter delete --cluster-id <cluster-id> --filter-rule-id <rule-id>
TiDB Cloud Storage を使用した監査ログへのアクセス
TiDB Cloudに監査ログを保存すると、 TiDB Cloud EssentialはそれらをYYYY-MM-DD-<index>.logという名前の読み取り可能なテキストファイルとして保存します。これらのファイルは、 TiDB CloudコンソールまたはTiDB Cloud CLIを使用して表示およびダウンロードできます。
注記:
- TiDB Cloud Essentialは、監査ログが時系列順に保存されることを保証しません。
YYYY-MM-DD-<index>.logという名前のログファイルには、それ以前の日付のエントリが含まれている可能性があります。- 特定の日付(例:2025年1月1日)のすべてのログを取得するには、
--start-date 2025-01-01と--end-date 2025-01-02。場合によっては、すべてのログファイルをダウンロードし、TIMEフィールドでソートする必要があるかもしれません。
TiDB Cloudコンソールにログインし、私のTiDBページに移動します。
ヒント:
複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。
対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログページでは、 TiDB Cloud Storageの下にある監査ログの一覧を表示できます。
監査ログをダウンロードするには、リストから1つ以上のログを選択し、 「ダウンロード」をクリックします。
TiDB Cloud CLIを使用して監査ログをダウンロードするには、次のコマンドを実行します。
ticloud serverless audit-log download --cluster-id <cluster-id> --output-path <output-path> --start-date <start-date> --end-date <end-date>
start-date: ダウンロードする監査ログの開始日。形式はYYYY-MM-DDです。例:2025-01-01。end-date: ダウンロードする監査ログの終了日。形式はYYYY-MM-DDです。例:2025-01-01。
監査ログフィールド
TiDB Cloudは、監査ログ内の各データベースイベントレコードに対して、以下のフィールドを提供します。
一般情報
すべての監査ログの種類には、以下の情報が含まれています。
SQLステートメント情報
イベントクラスがQUERYまたはQUERYのサブクラスである場合、監査ログには次の情報が含まれます。
接続情報
イベントクラスがCONNECTIONまたはCONNECTIONのサブクラスである場合、監査ログには次の情報が含まれます。
注記:
トラフィックの可視性を向上させるため、
CLIENT_IPでは、ロードバランサー (LB) IP の代わりに、AWS PrivateLink 経由の接続の実際のクライアント IP アドレスが表示されるようになりました。現在、この機能はベータ版であり、AWS リージョンFrankfurt (eu-central-1)でのみ利用可能です。
監査操作情報
イベントクラスがAUDITまたはAUDITのサブクラスである場合、監査ログには次の情報が含まれます。
監査ログの制限
TiDB Cloud Essential は監査ログの順序を保証しないため、最新のイベントを見つけるにはすべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、監査ログのTIMEフィールドを使用できます。