📣

TiDB Cloud Serverless が
Starter
に変わりました!このページは自動翻訳されたものです。
原文はこちらからご覧ください。

TiDB Cloud専用データベース監査ログ

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

注記:

現在、データベース監査ログ機能はリクエストに応じてのみご利用いただけます。この機能をリクエストするには、 TiDB Cloudコンソールの右下にある「?」をクリックし、 「サポートをリクエスト」をクリックしてください。次に、 「説明」欄に「データベース監査ログの申請」と入力し、 「送信」をクリックしてください。

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

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

注記:

監査ログはクラスターのリソースを消費するため、クラスターを監査するかどうかは慎重に検討する必要があります。

前提条件

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

監査ログを有効にする

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

注記:

AWS にデプロイされた TiDB クラスターでは、データベース監査ログを有効にする際に、監査ログファイルをTiDB Cloudに保存することを選択できます。現在、この機能はリクエストに応じてのみ利用可能です。この機能をリクエストするには、 TiDB Cloudコンソールの右下にある「?」をクリックし、 「サポートをリクエスト」をクリックしてください。次に、 「説明」フィールドに「監査ログファイルをTiDB Cloudに保存する申請」と入力し、 「送信」をクリックしてください。

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

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

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

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

注記:

AWS S3バケットでオブジェクトロックを有効にしないでください。オブジェクトロックを有効にすると、 TiDB Cloudが監査ログファイルを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 マネジメントコンソールで、 IAM >アクセス管理>ポリシーに移動し、書き込み専用権限s3:PutObjectを持つstorageバケットポリシーがあるかどうかを確認します。

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

    • そうでない場合は、 「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 がバケットにアクセスして書き込むことができるかどうかを確認します。

    成功した場合は、 「接続に成功しました」と表示されます。そうでない場合は、アクセス設定を確認してください。

  5. クラスターの監査ログを有効にするには、 [有効]をクリックします。

    TiDB Cloud は、指定されたクラスターの監査ログを Amazon S3 バケットに書き込む準備が整いました。

注記:

  • 監査ログを有効にした後、バケットのURI、場所、またはARNに新しい変更を加えた場合は、再度「接続テスト」をクリックして、 TiDB Cloudがバケットに接続できることを確認してください。その後、 「有効化」をクリックして変更を適用してください。
  • TiDB Cloud の Amazon S3 へのアクセスを削除するには、AWS マネジメントコンソールでこのクラスターに付与された信頼ポリシーを削除するだけです。

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

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

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

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

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

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

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

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

      ヒント:

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

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

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

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

  2. Google Cloud コンソールで、 [IAMと管理] > [ロール]に移動し、storageコンテナの次の書き込み専用権限を持つロールが存在するかどうかを確認します。

    • storage.オブジェクト.作成
    • storage.オブジェクト.削除

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

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

    パネルが表示されます。

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

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

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

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

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

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

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

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

  3. 「テスト接続」をクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。

    成功した場合は、 「接続に成功しました」と表示されます。そうでない場合は、アクセス設定を確認してください。

  4. クラスターの監査ログを有効にするには、 [有効]をクリックします。

    TiDB Cloud は、指定されたクラスタの監査ログを GCS バケットに書き込む準備が整いました。

注記:

  • 監査ログを有効にした後、バケットのURIまたは場所に新しい変更を加えた場合は、 「接続テスト」を再度クリックして、 TiDB Cloudがバケットに接続できることを確認してください。その後、 「有効化」をクリックして変更を適用してください。
  • TiDB Cloud の GCS バケットへのアクセスを削除するには、Google Cloud コンソールでこのクラスタに付与された信頼ポリシーを削除します。

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

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

ステップ1. Azurestorageアカウントを作成する

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

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

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

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

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

      ヒント:

      左側のナビゲーション ペインが非表示になっている場合は、左上隅のメニュー ボタンをクリックして表示を切り替えます。

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

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

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

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

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

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

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

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

      注記:

      • 監査機能はstorageアカウントに監査ログを継続的に書き込む必要があるため、SASトークンの有効期間を十分に長くする必要があります。ただし、有効期間が長くなるとトークン漏洩のリスクが高まります。セキュリティ上、SASトークンは6~12か月ごとに交換することをお勧めします。
      • 生成された SAS トークンは取り消すことができないため、有効期間を慎重に設定する必要があります。
      • 監査ログの継続的な可用性を確保するために、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 がコンテナにアクセスして書き込むことができるかどうかを確認します。

    成功した場合は、 「接続に成功しました」と表示されます。そうでない場合は、アクセス設定を確認してください。

  6. クラスターの監査ログを有効にするには、 [有効]をクリックします。

    TiDB Cloud は、指定されたクラスターの監査ログを Azure BLOB コンテナーに書き込む準備ができています。

注記:

監査ログを有効にした後、 BLOB URLまたはSAS トークンのフィールドに新しい変更を加えた場合は、再度「接続テスト」をクリックして、 TiDB Cloud がコンテナに接続できることを確認してください。その後、 「有効化」をクリックして変更を適用してください。

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

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

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

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

    一度に追加できる監査ルールは1つだけです。各ルールでは、ユーザー式、データベース式、テーブル式、およびアクセスタイプを指定します。監査要件に合わせて複数の監査ルールを追加できます。

  2. 「ログ フィルター ルール」セクションで、 >をクリックして展開し、追加した監査ルールのリストを表示します。

注記:

  • フィルタールールは正規表現で、大文字と小文字が区別されます。ワイルドカードルール.*を使用すると、クラスター内のすべてのユーザー、データベース、またはテーブルイベントがログに記録されます。
  • 監査ログはクラスターリソースを消費するため、フィルタールールの指定には注意が必要です。消費を最小限に抑えるには、可能な限り、監査ログのスコープを特定のデータベースオブジェクト、ユーザー、およびアクションに限定するフィルタールールを指定することをお勧めします。

監査ログをビュー

デフォルトでは、 TiDB Cloudはデータベース監査ログ ファイルをstorageサービスに保存するため、storageサービスから監査ログ情報を読み取る必要があります。

注記:

監査ログ ファイルをTiDB Cloudに保存することを要求して選択した場合は、データベース監査ログページの監査ログ アクセスセクションからダウンロードできます。

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

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

監査ログを無効にする

クラスターの監査が不要になった場合は、クラスターのページに移動し、 [設定] > [監査設定]をクリックして、右上隅の監査設定を[オフ]に切り替えます。

注記:

ログファイルのサイズが10MiBに達するたびに、ログファイルはクラウドstorageバケットにプッシュされます。そのため、監査ログを無効化すると、10MiB未満のログファイルはクラウドstorageバケットに自動的にプッシュされなくなります。この状況でログファイルを取得するには、 PingCAPサポートお問い合わせください。

監査ログフィールド

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

注記:

次の表では、フィールドの最大長が空の場合、そのフィールドのデータ型には明確に定義された定数長 (たとえば、INTEGER の場合は 4 バイト) があることを意味します。

列番号フィールド名TiDBデータ型最大長説明
1該当なし該当なし該当なし社内使用のために予約済み
2該当なし該当なし該当なし社内使用のために予約済み
3該当なし該当なし該当なし社内使用のために予約済み
4ID整数一意のイベントID
5タイムスタンプタイムスタンプイベントの時間
6イベントクラス可変長文字15イベントの種類
7イベントサブクラス可変長文字15イベントのサブタイプ
8ステータスコード整数声明の回答状況
9コスト_時間フロート声明に費やされた時間
10ホスト可変長文字16サーバーIP
11クライアントIP可変長文字16クライアントIP
12ユーザー可変長文字17ログインユーザー名
13データベース可変長文字64イベント関連データベース
14テーブル可変長文字64イベント関連のテーブル名
15SQL_TEXT可変長文字64 KBマスクされたSQL文
16整数影響を受ける行の数( 0影響を受ける行がないことを示します)

TiDB によって設定された EVENT_CLASS フィールドの値に応じて、監査ログ内のデータベース イベント レコードには次のような追加フィールドも含まれます。

  • EVENT_CLASS 値がCONNECTION場合、データベース イベント レコードには次のフィールドも含まれます。

    列番号フィールド名TiDBデータ型最大長説明
    17クライアントポート整数クライアントポート番号
    18接続ID整数接続ID
    19接続タイプ可変長文字12socketまたはunix-socket経由の接続
    20サーバーID整数TiDBサーバーID
    21サーバーポート整数TiDBサーバーがMySQLプロトコル経由でクライアントの通信をリッスンするために使用するポート
    22サーバーOSログインユーザー可変長文字17TiDBプロセス起動システムのユーザー名
    23OS_バージョン可変長文字該当なしTiDBサーバーが配置されているオペレーティング システムのバージョン
    24SSL_バージョン可変長文字6TiDBの現在のSSLバージョン
    25PID整数TiDBプロセスのPID
  • EVENT_CLASS 値がTABLE_ACCESSまたはGENERAL場合、データベース イベント レコードには次のフィールドも含まれます。

    列番号フィールド名TiDBデータ型最大長説明
    17接続ID整数接続ID
    18指示可変長文字14MySQLプロトコルのコマンドタイプ
    19SQL_ステートメント可変長文字17SQL文の種類
    20PID整数TiDBプロセスのPID

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