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コンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。
DB Audit Loggingページで、右上隅のEnableをクリックします。
Database Audit Log Storage Configurationダイアログで、 AWS IAM Policy Settingsセクションを見つけて、後で使用するためにTiDB Cloud Account IDとTiDB Cloud External IDを記録します。
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/*"に設定する必要があります。
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を入力します。
IAM > Access Management > Rolesで、前の手順のロール名をクリックしてSummaryページに移動し、次の手順を実行します。
- Permissionsタブで、書き込み専用権限
s3:PutObjectを持つ記録済みのポリシーがロールにアタッチされているかどうかを確認します。アタッチされていない場合は、 Attach Policiesを選択し、必要なポリシーを検索してAttach Policyをクリックします。 - Summaryページに戻り、Role ARN値をクリップボードにコピーします。
- Permissionsタブで、書き込み専用権限
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、 TiDB Cloudアカウント ID と外部 ID 値を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。
Bucket URIフィールドに、監査ログファイルが書き込まれる S3 バケットの URI を入力します。
Bucket Regionドロップダウンリストで、バケットが配置されている AWS リージョンを選択します。
Role ARNフィールドに、 ステップ2. Amazon S3アクセスを構成するでコピーしたロール ARN 値を入力します。
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アクセスを構成する
監査ログを有効にする TiDB クラスタの Google Cloud サービス アカウント ID を取得します。
TiDB Cloudコンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。
DB Audit Loggingページで、右上隅のEnableをクリックします。
[データベース監査ログストレージ設定]ダイアログで、 [Google Cloud Service アカウント ID]セクションを見つけて、後で使用するためにService Account IDを記録します。
Google Cloud consoleで、 IAM & Admin > Rolesに移動し、ストレージバケット内のオブジェクトに対する次の書き込み専用権限を持つロールが存在するかどうかを確認します。
- storage.objects.create
- storage.objects.delete
はいの場合は、後で使用するためにTiDBクラスターの一致したロールを記録してください。いいえの場合は、 IAM & Admin > Roles > CREATE ROLEに移動して、TiDBクラスターのロールを定義してください。
[Cloud Storage] > [ブラウザ]に移動し、 TiDB Cloudがアクセスする GCS バケットを選択して、 SHOW INFO PANELをクリックします。
パネルが表示されます。
パネルで、 ADD PRINCIPALをクリックします。
プリンシパルを追加するためのダイアログ ボックスが表示されます。
ダイアログ ボックスで、次の手順を実行します。
- New Principalsフィールドに、TiDB クラスタの Google Cloud サービス アカウント ID を貼り付けます。
- Roleドロップダウン リストで、ターゲット TiDB クラスターのロールを選択します。
- SAVEをクリックします。
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、 Google Cloud サービス アカウント ID を取得した[データベース監査ログストレージ設定]ダイアログ ボックスに戻り、次の手順を実行します。
Bucket URIフィールドに、完全な GCS バケット名を入力します。
Bucket Regionフィールドで、バケットが配置されている GCS リージョンを選択します。
Test Connection and Nextをクリックして、 TiDB Cloud がバケットにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。
Azureの監査ログを有効にする
Azure の監査ログを有効にするには、次の手順を実行します。
ステップ1. Azureストレージアカウントを作成する
TiDB Cloudがデータベース監査ログを書き込む宛先として、組織の Azure サブスクリプションに Azureストレージアカウントを作成します。
詳細については、Azure ドキュメントのAzureストレージアカウントを作成するを参照してください。
ステップ2. Azure Blob Storageアクセスを構成する
Azureポータルで、データベース監査ログを保存するために使用するコンテナを作成します。
Azure ポータルの左側のナビゲーション ウィンドウで、 Storage Accountsをクリックし、データベース監査ログを保存するストレージアカウントをクリックします。
選択したストレージアカウントのナビゲーション ウィンドウで、 Data storage > Containersをクリックし、 + ContainerをクリックしてNew containerウィンドウを開きます。
New containerペインで、新しいコンテナの名前を入力し、匿名アクセスレベル(推奨レベルはPrivate (匿名アクセスなし))を設定して、 Createをクリックします。数秒以内に新しいコンテナが作成され、コンテナリストに表示されます。
ターゲット コンテナの URL を取得します。
- コンテナー リストで、対象のコンテナーを選択し、コンテナーの[...]をクリックして、 Container propertiesを選択します。
- 表示されたプロパティ ページで、後で使用するためにURL値をコピーし、コンテナー リストに戻ります。
ターゲット コンテナーの SAS トークンを生成します。
コンテナー リストで、ターゲット コンテナーを選択し、コンテナーの[...]をクリックして、 Generate SASを選択します。
表示されたGenerate SASペインで、Signing methodとしてAccount keyを選択します。
Permissionsドロップダウン リストで、 Read 、 Write 、 Createを選択して、監査ログ ファイルの書き込みを許可します。
[開始] フィールドと[有効期限]フィールドで、SAS トークンの有効期間を指定します。
Allowed protocolsについては、安全なアクセスを確保するためにHTTPS onlyを選択します。
[SAS トークンと URL の生成]をクリックし、表示されるBlob SAS tokenを後で使用するためにコピーします。
ステップ3. 監査ログを有効にする
TiDB Cloudコンソールで、プロジェクトのクラスターページに移動します。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインでSettings > DB Audit Loggingをクリックします。
DB Audit Loggingページで、右上隅のEnableをクリックします。
Database Audit Log Storage Configurationダイアログで、 ステップ2. Azure BLOBアクセスを構成するから取得した BLOB URL と SAS トークンを指定します。
- Blob URLフィールドに、監査ログが保存されるコンテナの URL を入力します。
- SAS Tokenフィールドに、コンテナーにアクセスするための SAS トークンを入力します。
Test Connection and Nextをクリックして、TiDB Cloud がコンテナにアクセスして書き込むことができるかどうかを確認します。接続に成功すると、ダイアログはデータベース監査ログ設定の次のステップに進みます。
データベース監査ログ設定を構成する
クラウドプロバイダーのストレージを構成した後、データベース監査ログ設定のステップを完了します。
ログファイルのローテーションポリシーを設定します。
ファイルサイズまたは時間間隔に基づいて監査ログファイルをローテーションできます。いずれかの条件が満たされると、TiDB Cloud は新しい監査ログファイルを生成します。
ログの秘匿化を構成します。
ログの秘匿化はデフォルトで有効になっています。有効にすると、SQL テキスト内の機密情報は監査ログで
?に置き換えられます。Save and Enable をクリックして設定を適用し、監査ログを有効にします。
監査フィルタルールを指定する
監査ログを有効にした後、監査フィルタルールを指定して、どのユーザーアクセスイベントをキャプチャし、監査ログに書き込むかを制御する必要があります。フィルタルールが指定されていない場合、 TiDB Cloudは何もログに記録しません。
クラスターの監査フィルター ルールを指定するには、次の手順を実行します。
DB Audit Loggingページで、 Audit FiltersセクションのAdd Filter Ruleをクリックして、監査フィルタ ルールを追加します。
Add Filter Ruleダイアログで、次の項目を設定します。
- Filter Name: フィルタルールの名前を入力します。
- SQL User:
<user>@<host>形式で SQL ユーザーを入力します。ユーザー名とホスト名では、0 文字以上に一致させるために%、ちょうど 1 文字に一致させるために_を使用できます。@記号と<host>は省略可能です。 - Filter Events: ログに記録するイベントを選択します。サポートされているフィルタイベントについては、監査フィルタイベントを参照してください。
Confirmをクリックしてフィルタルールを追加します。
監査ログを確認する
デフォルトでは、 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) を参照してください。