📣
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. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。

    3. DB Audit Loggingページで、右上隅のEnableをクリックします。

    4. Database Audit Log Storage Configurationダイアログで、 AWS IAM Policy Settingsセクションを見つけて、後で使用するためにTiDB Cloud Account IDTiDB Cloud External IDを記録します。

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

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

    • そうでない場合は、 IAM > Access Management > Policies > Create Policyに移動し、次のポリシー テンプレートに従ってIAMポリシーを定義します。

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

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

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

    • はいの場合は、後で使用するために一致したロールを記録します。
    • そうでない場合は、 Create roleをクリックし、信頼エンティティタイプとしてAnother AWS accountを選択し、 Account IDフィールドにTiDB CloudのアカウントIDを入力します。次に、 Require External IDオプションを選択し、 External IDフィールドにTiDB Cloudの外部IDを入力します。
  4. IAM > Access Management > Rolesで、前の手順のロール名をクリックしてSummaryページに移動し、次の手順を実行します。

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

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

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

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

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

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

  4. Test Connection and Nextをクリックして、 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. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。

    3. DB Audit Loggingページで、右上隅のEnableをクリックします。

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

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

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

    はいの場合は、後で使用するためにTiDBクラスターの一致したロールを記録してください。いいえの場合は、 IAM & Admin > Roles > CREATE ROLEに移動して、TiDBクラスターのロールを定義してください。

  3. [Cloud Storage] > [ブラウザ]に移動し、 TiDB Cloudがアクセスする GCS バケットを選択して、 SHOW INFO PANELをクリックします。

    パネルが表示されます。

  4. パネルで、 ADD PRINCIPALをクリックします。

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

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

    1. New Principalsフィールドに、TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
    2. Roleドロップダウン リストで、ターゲット TiDB クラスターのロールを選択します。
    3. SAVEをクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

    2. 選択したストレージアカウントのナビゲーション ウィンドウで、 Data storage > Containersをクリックし、 + ContainerをクリックしてNew containerウィンドウを開きます。

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

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

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

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

    2. 表示されたGenerate SASペインで、Signing methodとしてAccount keyを選択します。

    3. Permissionsドロップダウン リストで、 ReadWriteCreateを選択して、監査ログ ファイルの書き込みを許可します。

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

    5. Allowed protocolsについては、安全なアクセスを確保するためにHTTPS onlyを選択します。

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

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

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

  2. ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。

  3. DB Audit Loggingページで、右上隅のEnableをクリックします。

  4. Database Audit Log Storage Configurationダイアログで、 ステップ2. Azure BLOBアクセスを構成するから取得した BLOB URL と SAS トークンを指定します。

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

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

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

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

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

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

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

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

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

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

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

  1. DB Audit Loggingページで、 Audit FiltersセクションのAdd Filter Ruleをクリックして、監査フィルタ ルールを追加します。

  2. Add Filter Ruleダイアログで、次の項目を設定します。

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

監査ログを確認する

デフォルトでは、 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) を参照してください。

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