📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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>/
  • アクセス認証情報:以下のいずれかを選択してください。
    • s3:PutObject権限を持つアクセスキー
    • s3:PutObject権限を持つロールARN 。ロールARNの使用は、AWSでホストされているクラスターのみでサポートされています。

詳細については、 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および { Container Object権限を持つ共有アクセス宣言(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は失敗を意味します。

以下の表は、データベース監査ログにおけるすべてのイベントクラスを示しています。

イベントクラス説明親クラス
CONNECTIONハンドシェイク、接続、切断、接続リセット、ユーザー変更など、接続に関連するすべての操作を記録します。-
CONNECT接続におけるハンドシェイクのすべての操作を記録しますCONNECTION
DISCONNECT切断操作の全記録CONNECTION
CHANGE_USER変更されたユーザーのすべての操作を記録しますCONNECTION
QUERYSQLステートメントのすべての操作を記録します。これには、データのクエリと変更に関するすべてのエラーが含まれます。-
TRANSACTIONBEGINCOMMITROLLBACKなどのトランザクションに関連するすべての操作を記録します。QUERY
EXECUTEEXECUTEステートメントのすべての操作を記録します。QUERY
QUERY_DMLINSERTREPLACEUPDATE 、およびDELETE LOAD DATAQUERY
INSERTINSERTステートメントのすべての操作を記録します。QUERY_DML
REPLACEREPLACEステートメントのすべての操作を記録します。QUERY_DML
UPDATEUPDATEステートメントのすべての操作を記録します。QUERY_DML
DELETEDELETEステートメントのすべての操作を記録します。QUERY_DML
LOAD DATALOAD DATAステートメントのすべての操作を記録します。QUERY_DML
SELECTSELECTステートメントのすべての操作を記録します。QUERY
QUERY_DDLDDLステートメントのすべての操作を記録しますQUERY
AUDITTiDBデータベース監査の設定に関連するすべての操作(システム変数の設定やシステム関数の呼び出しなど)を記録します。-
AUDIT_FUNC_CALLTiDB Cloudデータベース監査に関連する呼び出しシステム関数のすべての操作を記録します。AUDIT
AUDIT_SET_SYS_VARシステム変数の設定操作をすべて記録しますAUDIT

注記:

AUDITイベント クラスとそのサブクラスは常に監査ログに記録され、フィルタリングすることはできません。

監査ログの設定

監査ログの有効化、編集、無効化が可能です。

監査ログを有効にする

TiDB CloudコンソールまたはTiDB Cloud CLIを使用して、 TiDB Cloud Essentialインスタンスの監査ログを有効にすることができます。

注記:

監査ログを有効にするだけでは監査ログは生成されません。また、ログに記録するイベントを指定するフィルターを構成する必要があります。詳細については、監査ログフィルタルールの管理参照してください。

    1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

      ヒント:

      複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

    2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

    3. DB監査ログのページで、 [有効にする]をクリックします。

    4. 監査ログのstorage場所を選択し、必要な情報を入力します。次に、 「接続をテスト」をクリックし、「次へ」または「次へ」をクリックします。利用可能なstorage場所の詳細については、監査ログの場所を参照してください。

    5. データベース監査ログ設定ダイアログで、ログファイルのローテーションとログのマスキング設定を入力し、 [保存]をクリックします。

    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インスタンスの監査ログは、有効化後に編集できます。

      1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

        ヒント:

        複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

      2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

      3. DB監査ログのページで、 [設定]をクリックします。

      4. データベース監査ログ設定ダイアログで、ログファイルのローテーションまたはログのマスキング設定を更新し、 [保存]をクリックします。

      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インスタンスの監査ログを無効にすることができます。

        1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

          ヒント:

          複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

        2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

        3. DB監査ログのページで、右上隅の...をクリックし、次に無効にします。

        4. 「DB監査ログを無効にする」ダイアログで、 「無効にする」をクリックします。

        TiDB Cloud CLI を使用して監査ログを無効にするには、次のコマンドを実行します。

        ticloud serverless audit-log config update -c <cluster-id> --disabled=true

        監査ログフィルタルールの管理

        監査ログフィルタルールを作成、編集、無効化、削除できます。

        フィルタルールを作成する

        フィルタルールを作成するには、監査ログに記録するユーザーとイベントを定義します。ユーザー、イベントクラス、テーブル、ステータスコードを指定することで、ログ記録をニーズに合わせてカスタマイズできます。

          1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

            ヒント:

            複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

          2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

          3. DB監査ログのページで、 [フィルタルールの追加]をクリックします。

          4. [フィルター ルールの追加]ダイアログで、 [フィルター名][SQL ユーザー] 、および[フィルター ルール]フィールドに入力し、 [確認]をクリックします。これらのフィールドの詳細については、監査ログフィルタルールを参照してください。

          TiDB Cloud CLI を使用してフィルタルールを作成するには、次のコマンドを実行します。

          ticloud serverless audit-log filter create --cluster-id <cluster-id> --display-name <rule-name> --rule '{"users":["%@%"],"filters":[{}]}'

          フィルタールールを編集する

            1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

              ヒント:

              複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

            2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

            3. DB監査ログページで、編集するフィルタルールを見つけ、その行の...をクリックしてから、 [編集]をクリックします。

            4. 「フィルタールールの編集」ダイアログで、 「フィルター名」または「フィルタールール」フィールドを更新し、 「確認」をクリックします。

            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"]}]}'

            フィルタルールを無効にする

              1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

                ヒント:

                複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

              2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

              3. DB監査ログのページで、無効にしたいフィルタルールを見つけ、トグルをオフにしてフィルタルールを無効にします。

              TiDB Cloud CLI を使用してフィルタルールを無効にするには、次のコマンドを実行します。

              ticloud serverless audit-log filter update --cluster-id <cluster-id> --filter-rule-id <rule-id> --enabled=false

              フィルタルールを削除する

                1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

                  ヒント:

                  複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

                2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

                3. DB監査ログページで、削除するフィルタルールを見つけて、 ...をクリックします。

                4. 「削除」をクリックし、次に「了解しました。削除して確定します」をクリックしてください。

                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フィールドでソートする必要があるかもしれません。
                  1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

                    ヒント:

                    複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

                  2. 対象のTiDB Cloud Essentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。

                  3. DB監査ログページでは、 TiDB Cloud Storageの下にある監査ログの一覧を表示できます。

                  4. 監査ログをダウンロードするには、リストから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は、監査ログ内の各データベースイベントレコードに対して、以下のフィールドを提供します。

                  一般情報

                  すべての監査ログの種類には、以下の情報が含まれています。

                  分野説明
                  ID業務の監査記録を識別する固有の識別子。
                  TIME監査記録のタイムスタンプ。
                  EVENT監査記録のイベントクラス。複数のイベントタイプはカンマで区切られます( , )。
                  USER監査記録のユーザー名。
                  ROLES操作時のユーザーの役割。
                  CONNECTION_IDユーザーの接続を識別する識別子。
                  TABLESこの監査記録に関連するアクセスされたテーブル。
                  STATUS_CODE監査記録のステータスコード。 1は成功、 0は失敗を意味します。
                  KEYSPACE_NAME監査レコードのキースペース名。
                  SERVERLESS_TENANT_IDTiDB Cloud Essentialインスタンスが属するサーバーレステナントのID。
                  SERVERLESS_PROJECT_IDTiDB Cloud Essentialインスタンスが属するサーバーレスプロジェクトのID。
                  SERVERLESS_CLUSTER_ID監査レコードが属するサーバーレスTiDB Cloud EssentialインスタンスのID。
                  REASON監査記録のエラーメッセージ。操作中にエラーが発生した場合にのみ記録されます。

                  SQLステートメント情報

                  イベントクラスがQUERYまたはQUERYのサブクラスである場合、監査ログには次の情報が含まれます。

                  分野説明
                  CURRENT_DB現在使用しているデータベースの名前。
                  SQL_TEXT実行されたSQLステートメント。監査ログのマスキングが有効になっている場合は、マスキングされたSQLステートメントが記録されます。
                  EXECUTE_PARAMSEXECUTEステートメントのパラメータ。イベントクラスにEXECUTEが含まれ、かつ編集が無効になっている場合にのみ記録されます。
                  AFFECTED_ROWSSQL ステートメントの影響を受ける行数。イベント クラスにQUERY_DMLが含まれている場合にのみ記録されます。

                  接続情報

                  イベントクラスがCONNECTIONまたはCONNECTIONのサブクラスである場合、監査ログには次の情報が含まれます。

                  分野説明
                  CURRENT_DB現在のデータベースの名前。イベントクラスにDISCONNECTが含まれている場合、この情報は記録されません。
                  CONNECTION_TYPE接続の種類(ソケット、UnixSocket、SSL/TLSなど)。
                  PID現在の接続のプロセスID。
                  SERVER_VERSION接続されているTiDBサーバーの現在のバージョン。
                  SSL_VERSION現在使用されているSSLのバージョン。
                  HOST_IP接続されているTiDBサーバーの現在のIPアドレス。
                  HOST_PORT接続されているTiDBサーバーの現在のポート番号。
                  CLIENT_IPクライアントの現在のIPアドレス。
                  CLIENT_PORTクライアントの現在のポート番号。

                  注記:

                  トラフィックの可視性を向上させるため、 CLIENT_IPでは、ロードバランサー (LB) IP の代わりに、AWS PrivateLink 経由の接続の実際のクライアント IP アドレスが表示されるようになりました。現在、この機能はベータ版であり、AWS リージョンFrankfurt (eu-central-1)でのみ利用可能です。

                  監査操作情報

                  イベントクラスがAUDITまたはAUDITのサブクラスである場合、監査ログには次の情報が含まれます。

                  分野説明
                  AUDIT_OP_TARGETTiDB Cloudデータベース監査に関連する設定対象。
                  AUDIT_OP_ARGSTiDB Cloudデータベース監査に関連する設定の引数。

                  監査ログの制限

                  TiDB Cloud Essential は監査ログの順序を保証しないため、最新のイベントを見つけるにはすべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、監査ログのTIMEフィールドを使用できます。

                  このページは役に立ちましたか?