TiDB Cloud Premiumデータベース監査ログ
TiDB Cloudは、実行されたSQL文など、データベースへのユーザーアクセスアクティビティを記録する監査ログ機能を提供します。
組織のユーザーアクセスポリシーやその他の情報セキュリティ対策の有効性を評価するには、データベース監査ログを定期的に分析することがセキュリティ上のベストプラクティスです。
監査ログ機能はデフォルトでは無効になっています。TiDB Cloud Premiumインスタンスを監査するには、まず監査ログを有効にしてから、監査フィルタールールを設定する必要があります。
前提条件
あなたはTiDB Cloud Premiumインスタンスを使用しています。
組織内で
Organization Ownerロールが付与されている必要があります。付与されていない場合、 TiDB Cloudコンソールでデータベース監査関連のオプションは表示されません。
監査ログを有効にする
TiDB Cloudは、 TiDB Cloud Premiumインスタンスの監査ログをクラウドストレージサービスに記録することをサポートしています。データベース監査ログを有効にする前に、インスタンスが配置されているクラウドプロバイダーでクラウドストレージサービスを設定してください。
AWS 上の TiDB の監査ログを有効にする
AWSの監査ログを有効にするには、以下の手順を実行してください。
ステップ1. Amazon S3バケットを作成する
TiDB Cloudが監査ログを書き込む宛先として、組織が所有するAWSアカウント内のAmazon S3バケットを指定してください。
詳細については、AWS ユーザーガイドの汎用バケットの作成を参照してください。
ステップ2. Amazon S3へのアクセスを設定する
監査ログを有効にするTiDB Cloud PremiumインスタンスのTiDB CloudアカウントIDと外部IDを取得してください。
TiDB Cloudコンソールで、My TiDBページに移動します。
対象インスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで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 マネジメントコンソールで、 IAM > Access Management > Policiesに移動し、
s3:PutObject書き込み専用権限を持つストレージバケット ポリシーが存在するかどうかを確認します。はいの場合、後で使用するために、一致したストレージバケットポリシーを記録してください。
そうでない場合は、 IAM > Access Management > Policies > Create Policyに移動し、次のポリシー テンプレートに従ってバケット ポリシーを定義します。
{ "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の値を取得したDatabase Audit Log Storage Configurationダイアログに戻り、以下の手順を実行します。
Bucket URIフィールドに、監査ログファイルが書き込まれるS3バケットのURIを入力してください。
Bucket Regionドロップダウンリストから、バケットが配置されているAWSリージョンを選択します。
[Role ARN]フィールドに、ステップ2. Amazon S3へのアクセスを設定する。
Test Connection and Nextをクリックして、 TiDB Cloudがバケットにアクセスして書き込みできるかどうかを確認します。
The connection is successfulと表示されます。そうでない場合は、アクセス設定を確認してください。
インスタンスの監査ログを有効にするには、 Enableをクリックしてください。
TiDB Cloudは、指定されたインスタンスの監査ログをAmazon S3バケットに書き込む準備ができています。
データベース監査ログ設定を構成する
クラウドプロバイダーのストレージを設定した後、データベース監査ログ設定の手順を完了します。
ログファイルのローテーションポリシーを設定します。
ファイルサイズまたは時間間隔に基づいて監査ログファイルをローテーションできます。いずれかの条件が満たされると、TiDB Cloud は新しい監査ログファイルを生成します。
ログのリダクションを設定します。
ログのリダクションはデフォルトで有効になっています。有効にすると、SQL テキスト内の機密情報は監査ログで
?に置き換えられます。Save and Enable をクリックして、設定を適用し、監査ログを有効にします。
監査フィルタルールを指定します
監査ログを有効にした後、どのユーザーアクセスイベントをキャプチャして監査ログに書き込むかを制御するために、監査フィルタルールを指定する必要があります。フィルタルールが指定されていない場合、 TiDB Cloudは何もログに記録しません。
インスタンスの監査フィルタルールを指定するには、次の手順を実行します。
DB Audit Loggingページで、 Log Filter RulesセクションのAdd Filter Ruleをクリックして、監査フィルタルールを追加します。
Add Filter Rule ダイアログで、次の項目を設定します:
- Filter Name: フィルタルールの名前を入力します。
- SQL User: SQL ユーザーを
<user>@<host>形式で入力します。ユーザー名とホスト名では、%を使用して 0 文字以上の任意の文字に一致させることができ、_を使用してちょうど 1 文字に一致させることができます。@記号と<host>は省略可能です。 - Filter Events: ログに記録するイベントを選択します。サポートされているフィルタイベントについては、監査フィルタイベント を参照してください。
Confirm をクリックしてフィルタルールを追加します。
監査ログを確認する
TiDB Cloudはデフォルトではデータベース監査ログファイルをストレージサービスに保存するため、ストレージサービスから監査ログ情報を読み取る必要があります。
TiDB Cloudの監査ログは、インスタンスID、内部ID、およびログ作成日が完全修飾ファイル名に組み込まれた読み取り可能なテキストファイルです。
例えば、 13796619446086334065/tidb-5m5z34/tidb-audit-2022-04-21T18-16-29.529.logのようになります。この例では、 13796619446086334065はインスタンス ID を示し、 tidb-5m5z34は内部 ID を示します。
監査ログを無効にする
インスタンスの監査を停止したい場合は、インスタンスのページに移動し、 Settings > Audit Settingsをクリックして、右上隅の監査設定をDisableに切り替えます。
監査フィルタイベント
次の表は、データベース監査ログのすべてのイベントクラスを示しています。
監査ログフィールド
TiDB Cloudは、監査ログ内の各データベースイベントレコードに対して、以下のフィールドを提供します。
一般情報
すべての監査ログレコードには、以下のフィールドが含まれています。
SQL文情報
イベントクラスがQUERYまたはQUERYのサブクラスである場合、監査ログには次のフィールドが含まれます。
接続情報
イベントクラスがCONNECTIONまたはCONNECTIONのサブクラスである場合、監査ログには次のフィールドが含まれます。
監査操作情報
イベントクラスがAUDITまたはAUDITのサブクラスである場合、監査ログには次のフィールドが含まれます。
監査ログの制限
TiDB Cloud Premium では、監査ログが時系列順に書き込まれることを保証していません。最新のイベントを確認するには、すべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、各監査レコードのTIMEフィールドを使用してください。