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

TiDB Cloud Dedicatedデータベース監査ログ(レガシー)



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

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

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

前提条件

  • TiDB Cloud Dedicated クラスターを使用していること。

  • 組織内で Organization Owner または Project Owner ロールであること。そうでない場合、TiDB Cloud コンソールでデータベース監査関連のオプションを表示できません。詳細は、ユーザーロール を参照してください。

監査ログを有効にする

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

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

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

Step 1. Amazon S3 bucket を作成する

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

詳細は、AWS User Guide の Creating a bucket を参照してください。

Step 2. Amazon S3 access を設定する

  1. 監査ログを有効にする対象 TiDB クラスターの TiDB Cloud Account ID と External ID を取得します。

    1. TiDB Cloud コンソールで My TiDB ページに移動します。

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

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

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

  2. AWS Management Console で IAM > Access Management > Policies に移動し、s3:PutObject の書き込み専用権限を持つストレージ bucket policy があるか確認します。

    • ある場合は、後で使用するために一致するストレージ bucket policy を記録します。

    • ない場合は、IAM > Access Management > Policies > Create Policy に移動し、次の policy template に従って bucket policy を定義します。

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

      このテンプレートで、<Your S3 bucket ARN> は監査ログファイルの書き込み先となる S3 bucket の Amazon Resource Name (ARN) です。S3 bucket の 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 Account ID と External ID に対応する trust entity を持つ role がすでに存在するか確認します。

    • ある場合は、後で使用するために一致する role を記録します。
    • ない場合は、Create role をクリックし、trust entity type として Another AWS account を選択して、Account ID フィールドに TiDB Cloud Account ID の値を入力します。次に、Require External ID オプションを選択し、External ID フィールドに TiDB Cloud External ID の値を入力します。
  4. IAM > Access Management > Roles で、前の手順の role 名をクリックして Summary ページに移動し、次の手順を実行します。

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

Step 3. 監査ログを有効にする

TiDB Cloud コンソールで、TiDB Cloud account ID と External ID の値を取得した Enable Database Audit Logging ダイアログボックスに戻り、次の手順を実行します。

  1. Bucket URI フィールドに、監査ログファイルの書き込み先となる S3 bucket の URI を入力します。

  2. Bucket Region ドロップダウンリストで、bucket が存在する AWS リージョンを選択します。

  3. Role ARN フィールドに、Step 2. Configure Amazon S3 access でコピーした Role ARN の値を入力します。

  4. Test Connection をクリックして、TiDB Cloud が bucket にアクセスして書き込めるかを確認します。

    成功すると、The connection is successful と表示されます。そうでない場合は、アクセス設定を確認してください。

  5. Enable をクリックして、クラスターの監査ログを有効にします。

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

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

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

Step 1. GCS bucket を作成する

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

詳細は、Google Cloud Storage ドキュメントの Creating storage buckets を参照してください。

Step 2. GCS access を設定する

  1. 監査ログを有効にする対象 TiDB クラスターの Google Cloud Service Account ID を取得します。

    1. TiDB Cloud コンソールで My TiDB ページに移動します。

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

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

    4. Enable Database Audit Logging ダイアログで、Google Cloud Server Account ID セクションを見つけ、後で使用するために Service Account ID を記録します。

  2. Google Cloud console で IAM & Admin > Roles に移動し、ストレージコンテナに対して次の書き込み専用権限を持つ role が存在するか確認します。

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

    ある場合は、後で使用するために対象 TiDB クラスターに一致する role を記録します。ない場合は、IAM & Admin > Roles > CREATE ROLE に移動して、対象 TiDB クラスター用の role を定義します。

  3. Cloud Storage > Browser に移動し、TiDB Cloud にアクセスさせたい GCS bucket を選択して、SHOW INFO PANEL をクリックします。

    パネルが表示されます。

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

    principal を追加するためのダイアログボックスが表示されます。

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

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

Step 3. 監査ログを有効にする

TiDB Cloud コンソールで、TiDB Cloud account ID を取得した Enable Database Audit Logging ダイアログボックスに戻り、次の手順を実行します。

  1. Bucket URI フィールドに、GCS bucket の完全な名前を入力します。

  2. Bucket Region フィールドで、bucket が存在する GCS リージョンを選択します。

  3. Test Connection をクリックして、TiDB Cloud が bucket にアクセスして書き込めるかを確認します。

    成功すると、The connection is successful と表示されます。そうでない場合は、アクセス設定を確認してください。

  4. Enable をクリックして、クラスターの監査ログを有効にします。

    TiDB Cloud は、指定したクラスターの監査ログを GCS bucket に書き込む準備が整います。

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

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

Step 1. Azure storage account を作成する

TiDB Cloud がデータベース監査ログを書き込む宛先として、組織の Azure subscription 内に Azure storage account を作成します。

詳細は、Azure ドキュメントの Create an Azure storage account を参照してください。

Step 2. Azure Blob Storage アクセスを設定する

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

    1. Azure portal の左側のナビゲーションペインで 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 methodAccount key を選択します。

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

    4. Start フィールドと Expiry フィールドで、SAS トークンの有効期間を指定します。

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

    6. Generate SAS token and URL をクリックし、表示された Blob SAS token を後で使用するためにコピーします。

Step 3. 監査ログを有効にする

  1. TiDB Cloud コンソールで My TiDB ページに移動します。

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

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

  4. Enable Database Audit Logging ダイアログで、Step 2. Configure Azure Blob access で取得した blob URL と SAS トークンを入力します。

    • Blob URL フィールドに、監査ログを保存するコンテナーの URL を入力します。
    • SAS Token フィールドに、コンテナーへアクセスするための SAS トークンを入力します。
  5. Test Connection をクリックして、TiDB Cloud がコンテナーにアクセスして書き込みできるかを確認します。

    成功すると、The connection is successful と表示されます。失敗した場合は、アクセス設定を確認してください。

  6. Enable をクリックして、クラスターの監査ログを有効にします。

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

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

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

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

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

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

  2. Log Filter Rules セクションで > をクリックして展開し、追加した監査ルールの一覧を表示します。

監査ログを表示する

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

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

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

監査ログを無効にする

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

監査ログフィールド

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

列番号フィールド名TiDB データ型最大長説明
1N/AN/AN/A内部使用のために予約済み
2N/AN/AN/A内部使用のために予約済み
3N/AN/AN/A内部使用のために予約済み
4IDINTEGER一意のイベント ID
5TIMESTAMPTIMESTAMPイベント発生時刻
6EVENT_CLASSVARCHAR15イベントタイプ
7EVENT_SUBCLASSVARCHAR15イベントサブタイプ
8STATUS_CODEINTEGERステートメントの応答ステータス
9COST_TIMEFLOATステートメントの実行に要した時間
10HOSTVARCHAR16サーバー IP
11CLIENT_IPVARCHAR16クライアント IP
12USERVARCHAR17ログインユーザー名
13DATABASEVARCHAR64イベントに関連するデータベース
14TABLESVARCHAR64イベントに関連するテーブル名
15SQL_TEXTVARCHAR64 KBマスクされた SQL ステートメント
16ROWSINTEGER影響を受けた行数(0 は影響を受けた行がないことを示します)

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

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

    列番号フィールド名TiDB データ型最大長説明
    17CLIENT_PORTINTEGERクライアントポート番号
    18CONNECTION_IDINTEGER接続 ID
    19CONNECTION_TYPEVARCHAR12socket または unix-socket 経由の接続
    20SERVER_IDINTEGERTiDB サーバー ID
    21SERVER_PORTINTEGERTiDB サーバーが MySQL プロトコル経由で通信するクライアントを待ち受けるために使用するポート
    22SERVER_OS_LOGIN_USERVARCHAR17TiDB プロセスを起動したシステムのユーザー名
    23OS_VERSIONVARCHARN/ATiDB サーバーが配置されているオペレーティングシステムのバージョン
    24SSL_VERSIONVARCHAR6TiDB の現在の SSL バージョン
    25PIDINTEGERTiDB プロセスの PID
  • EVENT_CLASS の値が TABLE_ACCESS または GENERAL の場合、データベースイベントレコードには次のフィールドも含まれます。

    列番号フィールド名TiDB データ型最大長説明
    17CONNECTION_IDINTEGER接続 ID
    18COMMANDVARCHAR14MySQL プロトコルのコマンドタイプ
    19SQL_STATEMENTVARCHAR17SQL ステートメントタイプ
    20PIDINTEGERTiDB プロセスの PID

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