📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDB Cloud Dedicatedデータベース監査ログ (Preview)



TiDB Cloud は、実行された SQL ステートメントなど、データベースへのユーザー アクセス アクティビティを記録する監査ログ機能を提供します。

組織のユーザー アクセス ポリシーやその他の情報セキュリティ対策の有効性を評価するには、データベース監査ログを定期的に分析することがセキュリティのベスト プラクティスです。

監査ログ機能はデフォルトで無効になっています。クラスターを監査するには、まず監査ログを有効にし、次に監査フィルタルールを指定する必要があります。

前提条件

  • TiDB Cloud Dedicated クラスターを使用しています。

  • 組織内でOrganization OwnerまたはProject Ownerロールに所属しています。それ以外の場合、 TiDB Cloudコンソールでデータベース監査関連のオプションは表示されません。詳細については、 ユーザーロールご覧ください。

監査ログを有効にする

TiDB Cloudは、 TiDB Cloud Dedicatedクラスタの監査ログをクラウドストレージサービスに書き込むことをサポートしています。データベース監査ログを有効にする前に、クラスタが配置されているクラウドプロバイダーでクラウドストレージサービスを設定してください。

AWSの監査ログを有効にする

AWS の監査ログを有効にするには、次の手順を実行します。

ステップ1. Amazon S3バケットを作成する

TiDB Cloud が監査ログを書き込む宛先として、組織所有の AWS アカウント内の Amazon S3 バケットを指定します。

詳細については、AWS ユーザーガイドのバケットの作成を参照してください。

ステップ2. Amazon S3アクセスを構成する

  1. 監査ログを有効にする TiDB クラスターのTiDB Cloudアカウント ID と外部 ID を取得します。

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

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

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

    4. 「データベース監査ログストレージ設定」ダイアログで、 AWS IAMポリシー設定セクションを見つけて、後で使用するためにTiDB Cloudアカウント IDTiDB Cloud外部 IDを記録します。

  2. AWS Management Consoleで、 IAM >アクセス管理>ポリシーに移動し、書き込み専用権限s3:PutObjectを持つIAMポリシーがあるかどうかを確認します。

    • はいの場合は、後で使用するために一致したポリシーを記録します。

    • そうでない場合は、 「IAM」 > 「アクセス管理」 > 「ポリシー」 > 「ポリシーの作成」に移動し、次のポリシー テンプレートに従ってIAMポリシーを定義します。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "<Your S3 bucket ARN>/*" } ] }

      テンプレート内の<Your S3 bucket ARN>は、監査ログファイルが書き込まれるS3バケットのAmazonリソースネーム(ARN)です。S3バケットの「プロパティ」タブに移動し、 「バケットの概要」エリアでARN値を確認できます。「 "Resource"フィールドでは、ARNの後に/*を追加する必要があります。例えば、ARNがarn:aws:s3:::tidb-cloud-testの場合、 "Resource"フィールドの値を"arn:aws:s3:::tidb-cloud-test/*"に設定する必要があります。

  3. 「IAM」 > 「アクセス管理」 > 「ロール」に移動し、前に記録したTiDB Cloudアカウント ID と外部 ID に対応する信頼エンティティを持つロールがすでに存在するかどうかを確認します。

    • はいの場合は、後で使用するために一致したロールを記録します。
    • そうでない場合は、 「ロールの作成」をクリックし、信頼エンティティタイプとして「別のAWSアカウント」を選択し、 「アカウントID」フィールドにTiDB CloudのアカウントIDを入力します。次に、 「外部IDが必要」オプションを選択し、 「外部ID」フィールドにTiDB Cloudの外部IDを入力します。
  4. IAM >アクセス管理>ロールで、前の手順のロール名をクリックして概要ページに移動し、次の手順を実行します。

    1. 「権限」タブで、書き込み専用権限s3:PutObjectを持つ記録済みのポリシーがロールにアタッチされているかどうかを確認します。アタッチされていない場合は、 「ポリシーのアタッチ」を選択し、必要なポリシーを検索して「ポリシーのアタッチ」をクリックします。
    2. 概要ページに戻り、ロール ARN値をクリップボードにコピーします。

ステップ3. 監査ログを有効にする

TiDB Cloudコンソールで、 TiDB Cloudアカウント ID と外部 ID 値を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。

  1. 「バケット URI」フィールドに、監査ログファイルが書き込まれる S3 バケットの URI を入力します。

  2. バケットリージョン」ドロップダウンリストで、バケットが配置されている AWS リージョンを選択します。

  3. 「ロール ARN」フィールドに、 ステップ2. Amazon S3アクセスを構成するでコピーしたロール ARN 値を入力します。

  4. 「接続をテストして次へ」をクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。

Google Cloud の監査ログを有効にする

Google Cloud の監査ログを有効にするには、次の手順に従います。

ステップ1. GCSバケットを作成する

TiDB Cloud が監査ログを書き込む宛先として、組織所有の Google Cloud アカウント内の Google Cloud Storage(GCS)バケットを指定します。

詳細については、Google Cloud Storage ドキュメントのストレージバケットの作成ご覧ください。

ステップ2. GCSアクセスを構成する

  1. 監査ログを有効にする TiDB クラスタの Google Cloud サービス アカウント ID を取得します。

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

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

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

    4. [データベース監査ログストレージ設定]ダイアログで、 [Google Cloud Service アカウント ID]セクションを見つけて、後で使用するためにサービス アカウント IDを記録します。

  2. Google Cloud consoleで、 [IAMと管理] > [ロール]に移動し、ストレージバケット内のオブジェクトに対する次の書き込み専用権限を持つロールが存在するかどうかを確認します。

    • storage.objects.create
    • storage.objects.delete

    はいの場合は、後で使用するためにTiDBクラスターの一致したロールを記録してください。いいえの場合は、 「IAMと管理」 > 「ロール」 > 「ロールの作成」に移動して、TiDBクラスターのロールを定義してください。

  3. [Cloud Storage] > [ブラウザ]に移動し、 TiDB Cloudがアクセスする GCS バケットを選択して、 [情報パネルを表示]をクリックします。

    パネルが表示されます。

  4. パネルで、 「プリンシパルの追加」をクリックします。

    プリンシパルを追加するためのダイアログ ボックスが表示されます。

  5. ダイアログ ボックスで、次の手順を実行します。

    1. [新しいプリンシパル]フィールドに、TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
    2. [ロール]ドロップダウン リストで、ターゲット TiDB クラスターのロールを選択します。
    3. [保存]をクリックします。

ステップ3. 監査ログを有効にする

TiDB Cloudコンソールで、 Google Cloud サービス アカウント ID を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。

  1. 「バケット URI」フィールドに、完全な GCS バケット名を入力します。

  2. 「バケットリージョン」フィールドで、バケットが配置されている GCS リージョンを選択します。

  3. 「接続をテストして次へ」をクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。

Azureの監査ログを有効にする

Azure の監査ログを有効にするには、次の手順を実行します。

ステップ1. Azureストレージアカウントを作成する

TiDB Cloudがデータベース監査ログを書き込む宛先として、組織の Azure サブスクリプションに Azureストレージアカウントを作成します。

詳細については、Azure ドキュメントのAzureストレージアカウントを作成するを参照してください。

ステップ2. Azure Blob Storageアクセスを構成する

  1. Azureポータルで、データベース監査ログを保存するために使用するコンテナを作成します。

    1. Azure ポータルの左側のナビゲーション ウィンドウで、 [ストレージ アカウント]をクリックし、データベース監査ログを保存するストレージアカウントをクリックします。

    2. 選択したストレージアカウントのナビゲーション ウィンドウで、 [データストレージ] > [コンテナー]をクリックし、 [+ コンテナー]をクリックして[新しいコンテナー]ウィンドウを開きます。

    3. 「新しいコンテナ」ペインで、新しいコンテナの名前を入力し、匿名アクセスレベル(推奨レベルは「プライベート」 (匿名アクセスなし))を設定して、 「作成」をクリックします。数秒以内に新しいコンテナが作成され、コンテナリストに表示されます。

  2. ターゲット コンテナの URL を取得します。

    1. コンテナー リストで、対象のコンテナーを選択し、コンテナーの[...]をクリックして、 [コンテナーのプロパティ]を選択します。
    2. 表示されたプロパティ ページで、後で使用するためにURL値をコピーし、コンテナー リストに戻ります。
  3. ターゲット コンテナーの SAS トークンを生成します。

    1. コンテナー リストで、ターゲット コンテナーを選択し、コンテナーの[...]をクリックして、 [SAS の生成]を選択します。

    2. 表示された「SAS の生成」ペインで、署名方法として「アカウント キー」を選択します。

    3. [権限]ドロップダウン リストで、 [読み取り][書き込み][作成]を選択して、監査ログ ファイルの書き込みを許可します。

    4. [開始] フィールド[有効期限]フィールドで、SAS トークンの有効期間を指定します。

    5. 許可されたプロトコルについては、安全なアクセスを確保するためにHTTPS のみを選択します。

    6. [SAS トークンと URL の生成]クリックし、表示されるBLOB SAS トークンを後で使用するためにコピーします。

ステップ3. 監査ログを有効にする

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

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

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

  4. データベース監査ログストレージ設定ダイアログで、 ステップ2. Azure BLOBアクセスを構成するから取得した BLOB URL と SAS トークンを指定します。

    • 「Blob URL」フィールドに、監査ログが保存されるコンテナの URL を入力します。
    • SAS トークンフィールドに、コンテナーにアクセスするための SAS トークンを入力します。
  5. 「接続をテストして次へ」をクリックして、TiDB Cloud がコンテナにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。

データベース監査ログ設定を構成する

クラウドプロバイダーのストレージを構成した後、データベース監査ログ設定のステップを完了します。

  1. ログファイルのローテーションポリシーを設定します。

    ファイルサイズまたは時間間隔に基づいて監査ログファイルをローテーションできます。いずれかの条件が満たされると、TiDB Cloud は新しい監査ログファイルを生成します。

  2. ログの秘匿化を構成します。

    ログの秘匿化はデフォルトで有効になっています。有効にすると、SQL テキスト内の機密情報は監査ログで ? に置き換えられます。

  3. Save and Enable をクリックして設定を適用し、監査ログを有効にします。

監査フィルタルールを指定する

監査ログを有効にした後、監査フィルタルールを指定して、どのユーザーアクセスイベントをキャプチャし、監査ログに書き込むかを制御する必要があります。フィルタルールが指定されていない場合、 TiDB Cloudは何もログに記録しません。

クラスターの監査フィルター ルールを指定するには、次の手順を実行します。

  1. 「DB 監査ログ」ページで、 「監査フィルター」セクションの「フィルタ ルールの追加」をクリックして、監査フィルタ ルールを追加します。

  2. 「フィルタ ルールの追加」ダイアログで、次の項目を設定します。

    • フィルタ名: フィルタルールの名前を入力します。
    • SQL ユーザー: <user>@<host> 形式で SQL ユーザーを入力します。ユーザー名とホスト名では、任意の値に一致させるために %、任意の 1 文字に一致させるために _ を使用できます。@ 記号と <host> は省略可能です。
    • フィルタイベント: ログに記録するイベントを選択します。サポートされているフィルタイベントについては、監査フィルタイベントを参照してください。
  3. 「確認」をクリックしてフィルタルールを追加します。

監査ログを確認する

デフォルトでは、 TiDB Cloud はデータベース監査ログ ファイルをストレージサービスに保存するため、ストレージサービスから監査ログにアクセスする必要があります。

TiDB Cloud監査ログは、クラスター ID、ノード ID、およびログ作成日が完全修飾ファイルパスに組み込まれた読み取り可能なテキスト ファイルです。

たとえば、 13796619446086334065/tidb-0/tidb-audit-2022-04-21T18-16-29.529.log 。この例では、 13796619446086334065クラスター ID を示し、 tidb-0ノード ID を示します。

監査ログを無効にする

クラスターの監査が不要になった場合は、次の手順を実行します。

  1. TiDB Cloudコンソールで My TiDB ページに移動し、ターゲットの TiDB Cloud Dedicated クラスターの名前をクリックします。
  2. 左側のナビゲーション ペインで、Settings > DB Audit Logging をクリックします。
  3. Database Audit Logging セクションで、Settings の横にある ... をクリックし、Disable をクリックします。

監査フィルタイベント

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

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

監査ログフィールド

監査ログ内の各データベースイベントレコードに対して、TiDB Cloud は次のフィールドを提供します。

一般情報

すべてのクラスの監査ログには、次の情報が含まれます。

フィールド説明
ID操作の監査レコードの一意識別子。
TIME監査レコードのタイムスタンプ。
EVENT監査レコードのイベントクラス。複数のイベントタイプはコンマ (,) で区切られます。
USER操作を実行したユーザーの名前。
ROLES操作時点でのユーザーのロール。
CONNECTION_IDユーザー接続の識別子。
TABLES操作中にアクセスされたテーブル。
STATUS_CODE監査レコードのステータスコード。1 は成功、0 は失敗を意味します。
KEYSPACE_NAME監査レコードの keyspace 名。
REASON監査レコードのエラーメッセージ。操作中にエラーが発生した場合にのみ記録されます。

SQL 文情報

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

フィールド説明
CURRENT_DB現在のデータベースの名前。
SQL_TEXT実行された SQL 文。監査ログの秘匿化が有効な場合、秘匿化された SQL 文が記録されます。
EXECUTE_PARAMSEXECUTE 文のパラメーター。イベントクラスに EXECUTE が含まれ、かつ秘匿化が無効な場合にのみ記録されます。
AFFECTED_ROWSSQL 文の影響を受けた行数。イベントクラスに QUERY_DML が含まれる場合にのみ記録されます。

接続情報

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

フィールド説明
CURRENT_DB現在のデータベースの名前。イベントクラスに DISCONNECT が含まれる場合、この情報は記録されません。
CONNECTION_TYPE接続タイプ。Socket、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 Dedicated では、監査ログが時系列順に書き込まれることは保証されません。つまり、最新のイベントを見つけるにはすべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、監査ログの TIME フィールドを使用できます。

データベース監査ログ(レガシー)のリファレンス

現在レガシー監査ログプラグインを利用している場合は、Database Audit Logging (Legacy) を参照してください。

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