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

TiDB Cloud Essential のデータベース監査ログ (ベータ版)

TiDB Cloud Essential は、ユーザー アクセスの詳細 (実行された SQL ステートメントなど) の履歴をログに記録するデータベース監査ログ機能を提供します。

注記:

現在、データベース監査ログ機能はリクエストに応じてのみご利用いただけます。この機能をリクエストするには、 TiDB Cloudコンソールの右下にある「?」をクリックし、 「サポートをリクエスト」をクリックしてください。次に、 「説明」欄に「 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 は、次のいずれかの条件が満たされると、新しい監査ログ ファイルを生成します。

  • 現在のログ ファイルがローテーション サイズ (デフォルトでは 100 MiB) に達しました。
  • 前回のログ生成からローテーション間隔(デフォルトでは1時間)が経過しました。内部のスケジュール設定によっては、ログ生成が数分遅れる場合があります。

監査ログの場所

監査ログは次の場所に保存できます。

TiDB Cloud

監査ログはTiDB Cloudに保存し、ローカルマシンにダウンロードできます。監査ログは365日後に有効期限が切れ、削除されます。保存期間の延長をご希望の場合は、 TiDB Cloudサポートご連絡ください。

アマゾンS3

監査ログを Amazon S3 に保存するには、次の情報を提供する必要があります。

  • URI: s3://<bucket-name>/<folder-path>/
  • アクセス資格情報: 次のいずれかを選択します。
    • s3:PutObject許可を持つアクセスキー
    • 権限s3:PutObjectを持つ役割ARNでホストされているクラスターのみがロールARNの使用をサポートします。

詳細についてはAmazon S3 アクセスを構成する参照してください。

Googleクラウドストレージ

監査ログを Google Cloud Storage に保存するには、次の情報を提供する必要があります。

  • URI: gs://<bucket-name>/<folder-path>/
  • アクセス資格情報: storage.objects.createおよびstorage.objects.delete権限を持つサービスアカウントキー

詳細についてはGCS アクセスを構成する参照してください。

Azure BLOB ストレージ

監査ログを 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>/
  • アクセス資格情報: ContainerおよびObjectリソースに対するReadおよびWrite権限を持つ共有アクセス署名(SAS)トークン

詳細についてはAzure Blob Storage アクセスを構成する参照してください。

アリババクラウドOSS

Alibaba Cloud OSS に監査ログを保存するには、次の情報を提供する必要があります。

  • URI: oss://<bucket-name>/<folder-path>/
  • アクセス資格情報: OSS バケットへのデータのエクスポートを許可するoss:PutObjectおよびoss:GetBucketInfo権限を持つアクセスキーペア

詳細についてはAlibaba Cloud Object Storage Service (OSS) アクセスを構成する参照してください。

監査ログフィルタルール

監査ログをフィルタリングするには、ログに記録するイベントを指定するフィルタ ルールを作成する必要があります。

フィルター ルールには次のフィールドが含まれます。

  • users : 監査イベントをフィルタリングするユーザー名のリスト。ワイルドカード%使用すると、任意のユーザー名に一致します。

  • filters : フィルターオブジェクトのリスト。各フィルターオブジェクトには以下のフィールドが含まれます。

    • classes : 監査イベントをフィルタリングするイベントクラスのリスト。例: ["QUERY", "EXECUTE"]
    • tables : テーブルフィルターのリスト。詳細については、 テーブルフィルター参照してください。
    • statusCodes : 監査イベントをフィルター処理するためのステータス コードのリスト。2 1成功、 0失敗を意味します。

次の表は、データベース監査ログのすべてのイベント クラスを示しています。

イベントクラス説明親クラス
CONNECTIONハンドシェイク、接続、切断、接続のリセット、ユーザーの変更など、接続に関連するすべての操作を記録します。
  • CONNECT接続時のハンドシェイクのすべての操作を記録するCONNECTION
    DISCONNECT切断のすべての操作を記録するCONNECTION
    CHANGE_USERユーザーの変更に関するすべての操作を記録しますCONNECTION
    QUERYデータのクエリと変更に関するすべてのエラーを含む、SQL ステートメントのすべての操作を記録します。
  • TRANSACTIONBEGINなどのROLLBACKに関連するすべての操作を記録しますCOMMITQUERY
    EXECUTEEXECUTEステートメントのすべての操作を記録しますQUERY
    QUERY_DMLINSERT UPDATE含むDML LOAD DATAのすべての操作DELETE記録しますREPLACEQUERY
    INSERTINSERTステートメントのすべての操作を記録しますQUERY_DML
    REPLACEREPLACEステートメントのすべての操作を記録しますQUERY_DML
    UPDATEUPDATEステートメントのすべての操作を記録しますQUERY_DML
    DELETEDELETEステートメントのすべての操作を記録しますQUERY_DML
    LOAD DATALOAD DATAステートメントのすべての操作を記録しますQUERY_DML
    SELECTSELECTステートメントのすべての操作を記録しますQUERY
    QUERY_DDLDDL文のすべての操作を記録するQUERY
    AUDITシステム変数の設定やシステム関数の呼び出しなど、TiDB データベース監査の設定に関連するすべての操作を記録します。
  • AUDIT_FUNC_CALLTiDB Cloudデータベース監査に関連するシステム関数の呼び出し操作をすべて記録します。AUDIT
    AUDIT_SET_SYS_VARシステム変数の設定操作をすべて記録しますAUDIT

    注記:

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

    監査ログを構成する

    監査ログを有効化、編集、無効化できます。

    監査ログを有効にする

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

    注記:

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

      1. TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。

        ヒント:

        左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

      2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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コンソールにログインし、プロジェクトのクラスターページに移動します。

          ヒント:

          左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

        2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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コンソールにログインし、プロジェクトのクラスターページに移動します。

            ヒント:

            左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

          2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [DB 監査ログ]をクリックします。

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

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

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

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

          監査ログフィルタルールを管理する

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

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

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

            1. TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。

              ヒント:

              左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

            2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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コンソールにログインし、プロジェクトのクラスターページに移動します。

                ヒント:

                左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

              2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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コンソールにログインし、プロジェクトのクラスターページに移動します。

                  ヒント:

                  左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

                2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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コンソールにログインし、プロジェクトのクラスターページに移動します。

                    ヒント:

                    左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

                  2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [DB 監査ログ]をクリックします。

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

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

                  ticloud serverless audit-log filter delete --cluster-id <cluster-id> --filter-rule-id <rule-id>

                  TiDB Cloudストレージによるアクセス監査ログ

                  監査ログを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コンソールにログインし、プロジェクトのクラスターページに移動します。

                      ヒント:

                      左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。

                    2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [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 1成功、 0失敗を意味します。
                    KEYSPACE_NAME監査レコードのキースペース名。
                    SERVERLESS_TENANT_IDクラスターが属するサーバーレス テナントの ID。
                    SERVERLESS_PROJECT_IDクラスターが属するサーバーレス プロジェクトの ID。
                    SERVERLESS_CLUSTER_ID監査レコードが属するサーバーレス クラスターの 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クライアントの現在のポート。

                    監査操作情報

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

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

                    監査ログの制限

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

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