TiDB Cloudプレミアムデータベース監査ログ
TiDB Cloudは、実行されたSQLステートメントなど、データベースへのユーザーアクセスアクティビティを記録する監査ログ機能を提供します。
組織のユーザーアクセスポリシーやその他の情報セキュリティ対策の有効性を評価するには、データベース監査ログを定期的に分析することがセキュリティ上のベストプラクティスです。
監査ログ機能はデフォルトでは無効になっています。TiDB TiDB Cloud Premiumインスタンスを監査するには、まず監査ログを有効にしてから、監査フィルタルールを設定する必要があります。
注記:
監査ログはインスタンスのリソースを消費するため、インスタンスの監査を行うかどうかは慎重に検討してください。
前提条件
あなたはTiDB Cloud Premiumインスタンスを使用しています。
注記:
- TiDB Cloud Starterでは、データベース監査ログは利用できません。
- TiDB Cloud Essentialについては、 TiDB Cloud Essentialのデータベース監査ログ機能 (ベータ版)を参照してください。
- TiDB Cloud Dedicatedについては、 TiDB Cloud Dedicatedデータベース監査ログ参照してください。
組織内で
Organization Ownerロールが付与されている必要があります。付与されていない場合、 TiDB Cloudコンソールでデータベース監査関連のオプションは表示されません。
監査ログを有効にする
TiDB Cloudは、 TiDB Cloud Premiumインスタンスの監査ログをクラウドstorageサービスに記録することをサポートしています。データベース監査ログを有効にする前に、インスタンスが配置されているクラウドプロバイダーでクラウドstorageサービスを設定してください。
AWS 上の TiDB の監査ログを有効にする
AWSの監査ログを有効にするには、以下の手順を実行してください。
ステップ1. Amazon S3バケットを作成する
TiDB Cloudが監査ログを書き込む宛先として、組織が所有するAWSアカウント内のAmazon S3バケットを指定してください。
注記:
AWS S3バケットでオブジェクトロックを有効にしないでください。オブジェクトロックを有効にすると、 TiDB Cloudが監査ログファイルをS3にプッシュできなくなります。
詳細については、AWS ユーザーガイドの汎用バケットの作成参照してください。
ステップ2. Amazon S3へのアクセスを設定する
監査ログを有効にするTiDB Cloud PremiumインスタンスのTiDB CloudアカウントIDと外部IDを取得してください。
TiDB Cloudコンソールで、私のTiDBページに移動します。
対象インスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「設定」 > 「DB監査ログ」をクリックします。
DB監査ログのページで、右上隅にある「有効にする」をクリックします。
データベース監査ログストレージコンフィグレーションダイアログで、 AWS IAMポリシー設定セクションを探し、後で使用するためにTiDB CloudアカウントIDとTiDB Cloud外部IDを記録してください。
AWS マネジメント コンソールで、 [IAM] > [アクセス管理] > [ポリシー]に移動し、
s3:PutObject書き込み専用権限を持つstorageバケット ポリシーが存在するかどうかを確認します。はいの場合、後で使用するために、一致したstorageバケットポリシーを記録してください。
そうでない場合は、 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リージョンを選択します。
[Role ARN]フィールドに、ステップ2. Amazon S3へのアクセスを設定する。
「接続テスト」をクリックし、「次へ」をクリックして、 TiDB Cloudがバケットにアクセスして書き込みできるかどうかを確認します。
接続が成功した場合は、「接続成功」と表示されます。そうでない場合は、アクセス設定を確認してください。
インスタンスの監査ログを有効にするには、 「有効にする」をクリックしてください。
TiDB Cloudは、指定されたインスタンスの監査ログをAmazon S3バケットに書き込む準備ができています。
注記:
- 監査ログを有効にした後、バケットURI、場所、またはARNに変更を加えた場合は、 TiDB Cloudがバケットに接続できることを確認するために、再度「接続テスト」をクリックする必要があります。その後、 「有効にする」をクリックして変更を適用してください。
- TiDB CloudによるAmazon S3へのアクセス権を削除するには、AWSマネジメントコンソールでこのインスタンスに付与されている信頼ポリシーを削除するだけです。
監査フィルタルールを指定します
監査ログを有効にした後、どのユーザーアクセスイベントをキャプチャして監査ログに書き込むかを制御するために、監査フィルタルールを指定する必要があります。フィルタルールが指定されていない場合、 TiDB Cloudは何もログに記録しません。
インスタンスの監査フィルタルールを指定するには、次の手順を実行します。
DB監査ログページで、 「ログフィルタルール」セクションの「フィルタルールの追加」をクリックして、監査フィルタルールを追加します。
監査ルールは一度に1つずつ追加できます。各ルールでは、ユーザー式、データベース式、テーブル式、およびアクセスタイプを指定します。監査要件に合わせて、複数の監査ルールを追加できます。
ログフィルタルールのセクションで、 >をクリックして展開し、追加した監査ルールの一覧を表示します。
注記:
- フィルタルールは正規表現であり、大文字と小文字を区別します。ワイルドカードルール
.*を使用すると、インスタンス内のすべてのユーザー、データベース、またはテーブルイベントがログに記録されます。- 監査ログはインスタンスのリソースを消費するため、フィルタルールを指定する際には注意が必要です。リソース消費を最小限に抑えるには、可能な限り、監査ログの対象を特定のデータベースオブジェクト、ユーザー、およびアクションに限定するフィルタルールを指定することをお勧めします。
監査ログをビュー
TiDB Cloudはデフォルトではデータベース監査ログファイルをstorageサービスに保存するため、storageサービスから監査ログ情報を読み取る必要があります。
TiDB Cloudの監査ログは、インスタンスID、内部ID、およびログ作成日が完全修飾ファイル名に組み込まれた読み取り可能なテキストファイルです。
例えば、 13796619446086334065/tidb-5m5z34/tidb-audit-2022-04-21T18-16-29.529.logのようになります。この例では、 13796619446086334065はインスタンス ID を示し、 tidb-5m5z34は内部 ID を示します。
監査ログを無効にする
インスタンスの監査を停止したい場合は、インスタンスのページに移動し、 [設定] > [監査設定]をクリックして、右上隅の監査設定を[無効]に切り替えます。
注記:
ログファイルのサイズが10MiBに達するたびに、ログファイルはクラウドstorageバケットにプッシュされます。そのため、監査ログを無効にした後は、サイズが10MiB未満のログファイルは自動的にクラウドstorageバケットにプッシュされません。この状況でログファイルを取得するには、 TiDB Cloudサポートにお問い合わせください。
監査ログフィールド
TiDB Cloudは、監査ログ内の各データベースイベントレコードに対して、以下のフィールドを提供します。
一般情報
すべての監査ログレコードには、以下のフィールドが含まれています。
SQLステートメント情報
イベントクラスがQUERYまたはQUERYのサブクラスである場合、監査ログには次のフィールドが含まれます。
接続情報
イベントクラスがCONNECTIONまたはCONNECTIONのサブクラスである場合、監査ログには次のフィールドが含まれます。
注記:
トラフィックの可視性を向上させるため、
CLIENT_IP、ロードバランサーの IP アドレスではなく、AWS PrivateLink を経由する接続の実際のクライアント IP アドレスが表示されます。この機能はベータ版であり、AWS リージョンFrankfurt (eu-central-1)でのみ利用可能です。
監査操作情報
イベントクラスがAUDITまたはAUDITのサブクラスである場合、監査ログには次のフィールドが含まれます。
監査ログの制限
TiDB Cloud Premium では、監査ログが時系列順に書き込まれることを保証していません。最新のイベントを確認するには、すべてのログファイルを確認する必要がある場合があります。ログを時系列順に並べ替えるには、各監査レコードのTIMEフィールドを使用してください。