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アクセスを構成する
監査ログを有効にする TiDB クラスターのTiDB Cloudアカウント ID と外部 ID を取得します。
TiDB Cloudコンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [DB 監査ログ]をクリックします。
DB 監査ログページで、右上隅の[有効化]をクリックします。
「データベース監査ログストレージ設定」ダイアログで、 AWS IAMポリシー設定セクションを見つけて、後で使用するためにTiDB Cloudアカウント IDとTiDB Cloud外部 IDを記録します。
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/*"に設定する必要があります。
「IAM」 > 「アクセス管理」 > 「ロール」に移動し、前に記録したTiDB Cloudアカウント ID と外部 ID に対応する信頼エンティティを持つロールがすでに存在するかどうかを確認します。
- はいの場合は、後で使用するために一致したロールを記録します。
- そうでない場合は、 「ロールの作成」をクリックし、信頼エンティティタイプとして「別のAWSアカウント」を選択し、 「アカウントID」フィールドにTiDB CloudのアカウントIDを入力します。次に、 「外部IDが必要」オプションを選択し、 「外部ID」フィールドにTiDB Cloudの外部IDを入力します。
IAM >アクセス管理>ロールで、前の手順のロール名をクリックして概要ページに移動し、次の手順を実行します。
- 「権限」タブで、書き込み専用権限
s3:PutObjectを持つ記録済みのポリシーがロールにアタッチされているかどうかを確認します。アタッチされていない場合は、 「ポリシーのアタッチ」を選択し、必要なポリシーを検索して「ポリシーのアタッチ」をクリックします。 - 概要ページに戻り、ロール ARN値をクリップボードにコピーします。
- 「権限」タブで、書き込み専用権限
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、 TiDB Cloudアカウント ID と外部 ID 値を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。
「バケット URI」フィールドに、監査ログファイルが書き込まれる S3 バケットの URI を入力します。
「バケットリージョン」ドロップダウンリストで、バケットが配置されている AWS リージョンを選択します。
「ロール ARN」フィールドに、 ステップ2. Amazon S3アクセスを構成するでコピーしたロール ARN 値を入力します。
「接続をテストして次へ」をクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。
Google Cloud の監査ログを有効にする
Google Cloud の監査ログを有効にするには、次の手順に従います。
ステップ1. GCSバケットを作成する
TiDB Cloud が監査ログを書き込む宛先として、組織所有の Google Cloud アカウント内の Google Cloud Storage(GCS)バケットを指定します。
詳細については、Google Cloud Storage ドキュメントのストレージバケットの作成ご覧ください。
ステップ2. GCSアクセスを構成する
監査ログを有効にする TiDB クラスタの Google Cloud サービス アカウント ID を取得します。
TiDB Cloudコンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [DB 監査ログ]をクリックします。
DB 監査ログページで、右上隅の[有効化]をクリックします。
[データベース監査ログストレージ設定]ダイアログで、 [Google Cloud Service アカウント ID]セクションを見つけて、後で使用するためにサービス アカウント IDを記録します。
Google Cloud consoleで、 [IAMと管理] > [ロール]に移動し、ストレージバケット内のオブジェクトに対する次の書き込み専用権限を持つロールが存在するかどうかを確認します。
- storage.objects.create
- storage.objects.delete
はいの場合は、後で使用するためにTiDBクラスターの一致したロールを記録してください。いいえの場合は、 「IAMと管理」 > 「ロール」 > 「ロールの作成」に移動して、TiDBクラスターのロールを定義してください。
[Cloud Storage] > [ブラウザ]に移動し、 TiDB Cloudがアクセスする GCS バケットを選択して、 [情報パネルを表示]をクリックします。
パネルが表示されます。
パネルで、 「プリンシパルの追加」をクリックします。
プリンシパルを追加するためのダイアログ ボックスが表示されます。
ダイアログ ボックスで、次の手順を実行します。
- [新しいプリンシパル]フィールドに、TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
- [ロール]ドロップダウン リストで、ターゲット TiDB クラスターのロールを選択します。
- [保存]をクリックします。
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、 Google Cloud サービス アカウント ID を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。
「バケット URI」フィールドに、完全な GCS バケット名を入力します。
「バケットリージョン」フィールドで、バケットが配置されている GCS リージョンを選択します。
「接続をテストして次へ」をクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。
Azureの監査ログを有効にする
Azure の監査ログを有効にするには、次の手順を実行します。
ステップ1. Azureストレージアカウントを作成する
TiDB Cloudがデータベース監査ログを書き込む宛先として、組織の Azure サブスクリプションに Azureストレージアカウントを作成します。
詳細については、Azure ドキュメントのAzureストレージアカウントを作成するを参照してください。
ステップ2. Azure Blob Storageアクセスを構成する
Azureポータルで、データベース監査ログを保存するために使用するコンテナを作成します。
Azure ポータルの左側のナビゲーション ウィンドウで、 [ストレージ アカウント]をクリックし、データベース監査ログを保存するストレージアカウントをクリックします。
選択したストレージアカウントのナビゲーション ウィンドウで、 [データストレージ] > [コンテナー]をクリックし、 [+ コンテナー]をクリックして[新しいコンテナー]ウィンドウを開きます。
「新しいコンテナ」ペインで、新しいコンテナの名前を入力し、匿名アクセスレベル(推奨レベルは「プライベート」 (匿名アクセスなし))を設定して、 「作成」をクリックします。数秒以内に新しいコンテナが作成され、コンテナリストに表示されます。
ターゲット コンテナの URL を取得します。
- コンテナー リストで、対象のコンテナーを選択し、コンテナーの[...]をクリックして、 [コンテナーのプロパティ]を選択します。
- 表示されたプロパティ ページで、後で使用するためにURL値をコピーし、コンテナー リストに戻ります。
ターゲット コンテナーの SAS トークンを生成します。
コンテナー リストで、ターゲット コンテナーを選択し、コンテナーの[...]をクリックして、 [SAS の生成]を選択します。
表示された「SAS の生成」ペインで、署名方法として「アカウント キー」を選択します。
[権限]ドロップダウン リストで、 [読み取り] 、 [書き込み] 、 [作成]を選択して、監査ログ ファイルの書き込みを許可します。
[開始] フィールドと[有効期限]フィールドで、SAS トークンの有効期間を指定します。
許可されたプロトコルについては、安全なアクセスを確保するためにHTTPS のみを選択します。
[SAS トークンと URL の生成] をクリックし、表示されるBLOB SAS トークンを後で使用するためにコピーします。
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[設定] > [DB 監査ログ]をクリックします。
DB 監査ログページで、右上隅の[有効化]をクリックします。
データベース監査ログストレージ設定ダイアログで、 ステップ2. Azure BLOBアクセスを構成するから取得した BLOB URL と SAS トークンを指定します。
- 「Blob URL」フィールドに、監査ログが保存されるコンテナの URL を入力します。
- SAS トークンフィールドに、コンテナーにアクセスするための SAS トークンを入力します。
「接続をテストして次へ」をクリックして、TiDB Cloud がコンテナにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。
データベース監査ログ設定を構成する
クラウドプロバイダーのストレージを構成した後、データベース監査ログ設定のステップを完了します。
ログファイルのローテーションポリシーを設定します。
ファイルサイズまたは時間間隔に基づいて監査ログファイルをローテーションできます。いずれかの条件が満たされると、TiDB Cloud は新しい監査ログファイルを生成します。
ログの秘匿化を構成します。
ログの秘匿化はデフォルトで有効になっています。有効にすると、SQL テキスト内の機密情報は監査ログで
?に置き換えられます。Save and Enable をクリックして設定を適用し、監査ログを有効にします。
監査フィルタルールを指定する
監査ログを有効にした後、監査フィルタルールを指定して、どのユーザーアクセスイベントをキャプチャし、監査ログに書き込むかを制御する必要があります。フィルタルールが指定されていない場合、 TiDB Cloudは何もログに記録しません。
クラスターの監査フィルター ルールを指定するには、次の手順を実行します。
「DB 監査ログ」ページで、 「監査フィルター」セクションの「フィルタ ルールの追加」をクリックして、監査フィルタ ルールを追加します。
「フィルタ ルールの追加」ダイアログで、次の項目を設定します。
- フィルタ名: フィルタルールの名前を入力します。
- SQL ユーザー:
<user>@<host>形式で SQL ユーザーを入力します。ユーザー名とホスト名では、任意の値に一致させるために%、任意の 1 文字に一致させるために_を使用できます。@記号と<host>は省略可能です。 - フィルタイベント: ログに記録するイベントを選択します。サポートされているフィルタイベントについては、監査フィルタイベントを参照してください。
「確認」をクリックしてフィルタルールを追加します。
監査ログを確認する
デフォルトでは、 TiDB Cloud はデータベース監査ログ ファイルをストレージサービスに保存するため、ストレージサービスから監査ログにアクセスする必要があります。
TiDB Cloud監査ログは、クラスター ID、ノード ID、およびログ作成日が完全修飾ファイルパスに組み込まれた読み取り可能なテキスト ファイルです。
たとえば、 13796619446086334065/tidb-0/tidb-audit-2022-04-21T18-16-29.529.log 。この例では、 13796619446086334065クラスター ID を示し、 tidb-0ノード ID を示します。
監査ログを無効にする
クラスターの監査が不要になった場合は、次の手順を実行します。
- TiDB Cloudコンソールで My TiDB ページに移動し、ターゲットの TiDB Cloud Dedicated クラスターの名前をクリックします。
- 左側のナビゲーション ペインで、Settings > DB Audit Logging をクリックします。
- Database Audit Logging セクションで、Settings の横にある ... をクリックし、Disable をクリックします。
監査フィルタイベント
次の表は、データベース監査ログのすべてのイベントクラスを示しています。
監査ログフィールド
監査ログ内の各データベースイベントレコードに対して、TiDB Cloud は次のフィールドを提供します。
一般情報
すべてのクラスの監査ログには、次の情報が含まれます。
SQL 文情報
イベントクラスが QUERY または QUERY のサブクラスである場合、監査ログには次の情報が含まれます。
接続情報
イベントクラスが CONNECTION または CONNECTION のサブクラスである場合、監査ログには次の情報が含まれます。
監査操作情報
イベントクラスが AUDIT または AUDIT のサブクラスである場合、監査ログには次の情報が含まれます。
監査ログの制限事項
TiDB Cloud Dedicated では、監査ログが時系列順に書き込まれることは保証されません。つまり、最新のイベントを見つけるにはすべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、監査ログの TIME フィールドを使用できます。
データベース監査ログ(レガシー)のリファレンス
現在レガシー監査ログプラグインを利用している場合は、Database Audit Logging (Legacy) を参照してください。