すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:SQL エクスプローラーと監査の使用

最終更新日:Aug 19, 2026

SQL エクスプローラーと監査は、お使いの ApsaraDB RDS for MySQL インスタンスで実行されるすべての SQL ステートメント (アカウント、ソース IP アドレス、実行詳細を含む) をキャプチャし、監査ログとして保存します。このデータは、以下の目的で利用できます:

  • 保持: セキュリティコンプライアンスのために、すべてのデータクエリ言語 (DQL)、データ操作言語 (DML)、およびデータ定義言語 (DDL) 操作の完全な監査証跡を保持します

  • 調査: パフォーマンスの問題、異常なセッション、SQL の健全性を調査します

  • 復旧: データの損失または破損後に、記録された SQL ステートメントを再生してデータ復旧を行います

重要

SQL エクスプローラーと監査は、少量の CPU リソースを使用してデータベースカーネルから直接データをキャプチャします。この機能を有効にしても、インスタンスのパフォーマンスへの影響は最小限に抑えられます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください:

RAM ユーザーが [SQL ステートメント検索] 機能を使用する必要がある場合は、その RAM ユーザーに [AliyunRDSReadOnlyWithSQLLogArchiveAccess] ポリシーをアタッチします。詳細については、「RAM を使用した ApsaraDB RDS 権限の管理」か、検索機能とエクスポート機能をカバーするカスタムポリシーを扱う「カスタムポリシーを使用した権限付与」をご参照ください。

ApsaraDB RDS コンソールでは、現在のリージョンでサポートされている最新バージョンの DAS Enterprise Edition が提供する SQL エクスプローラーと監査機能のみを有効にできます。

サポート対象リージョン

中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深圳)、中国 (河源)、中国 (広州)、中国 (成都)、中国 (香港)、シンガポール、日本 (東京)、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、米国 (シリコンバレー)、英国 (ロンドン)、米国 (バージニア)、ドイツ (フランクフルト)

機能

機能

説明

検索 (監査)

データベース、ステータス、実行時間など、SQL ステートメントの実行記録をクエリおよびエクスポートします

[SQL Explorer]

SQL の健全性を診断し、パフォーマンスの問題をトラブルシューティングし、ビジネストラフィックを分析します

セキュリティ監査

リスクの特定: 高リスクの SQL ステートメント、SQL インジェクション攻撃、新しいアクセスソース

トラフィック再生とストレステスト

実際のトラフィックを再生して、インスタンスのスケールアウトが必要かどうかを検証します

SQL 分析

指定した時間範囲の SQL ステートメントを分析して、異常なクエリを検出し、パフォーマンスボトルネックを特定します

この機能は、以下のような場合に適しています:

  • 金融、セキュリティ、証券、公共サービス、保険など、高いデータセキュリティが求められる分野

  • トラブルシューティング、SQL パフォーマンス分析、異常セッションの特定

  • この機能で記録された SQL ステートメントを使った、データの損失または破損からの復旧

課金

課金は、この機能をいつ、どのように有効にしたかによって異なります。

SQL エクスプローラーと監査にアップグレードされる前に、元の SQL Explorer 機能を有効にしていた場合、料金は ApsaraDB RDS の請求書に含まれます。価格はインスタンスのリージョンに基づいており、GB/時単位で課金されます:

料金

リージョン

0.0012 米ドル / GB / 時

中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (深圳)、中国 (河源)、中国 (広州)、中国 (成都)

0.0015 米ドル / GB / 時

中国 (香港)、米国 (シリコンバレー)、米国 (バージニア)

0.0018 米ドル / GB / 時

シンガポール、日本 (東京)、ドイツ (フランクフルト)、UAE (ドバイ)、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、英国 (ロンドン)

SQL Explorer から SQL Explorer と監査にアップグレードするには、ApsaraDB RDS コンソールにログインし、[SQL Explorer] タブに移動して、ダイアログボックスで [ワンクリックアップグレード] をクリックします。アップグレード後、請求は DAS の請求に移行されます。

アップグレード後に SQL エクスプローラーと監査を有効にした場合、料金は DAS の請求書に含まれます。サポートされるリージョンと料金は DAS Enterprise Edition のバージョンによって異なります。詳細については、「DAS のエディションとサポートされる機能」および「課金」をご参照ください。

制限事項

オンラインクエリの制限

  • 時間範囲: 各クエリは最大 24 時間のウィンドウを対象とします。24 時間を超えるレコードをクエリするには、Simple Log Service (SLS) を使用して SQL Explorer のログにアクセスします。詳細については、「RDS SQL 監査ログの収集」をご参照ください。

  • クエリ方法: 複数のフィルター条件を組み合わせます。あいまい一致はサポートされていません。各キーワードには 4 文字以上を含める必要があります。

SQL エクスプローラーと監査の制限

  • 保存場所: 監査ログは DAS によって個別に保存され、RDS インスタンスのローカルディスクスペースを消費しません。SQL エクスプローラーと監査を有効にしても、インスタンスのディスク使用量は増加しません。

  • ログイン記録: ApsaraDB RDS for MySQL は、デフォルトではログインイベントを記録しません。ログインイベントは、SQL Explorer and Audit を有効にした後にのみ記録され、LOGIN 操作タイプを使用してログイン記録を追跡できます。この機能を有効にする前に発生したログインは保持されず、後から取得することもできません。

  • SQL ステートメントの最大長: 最大 8,192 バイトです。この制限は、loose_rds_audit_max_sql_size (MySQL 5.6 および 5.7) または loose_rds_audit_log_event_buffer_size (MySQL 8.0) によって制御されます (2 つのパラメーターのうち最小値が適用されます)。データ収集中にプレフィックスが追加されるため、有効な制限は 8,192 バイトまたは設定した値よりわずかに小さくなります。

  • トランザクション ID によるクエリ: loose_rds_audit_log_version パラメーターを MYSQL_V3 に設定し、マイナーエンジンバージョンが要件を満たしていることを確認します。MySQL 8.0 ではバージョン 20210930 以降、MySQL 5.7 ではバージョン 20210630 以降が必要です。詳細については、「MySQL 8.0 を実行する ApsaraDB RDS インスタンスでサポートされているパラメーター」および「マイナーエンジンバージョンのアップグレード」をご参照ください。

  • SQL Explorer Trial Edition: DescribeSQLLogRecords API と DescribeSQLLogFiles API は使用できません。詳細については、「DescribeSQLLogRecords」および「DescribeSQLLogFiles」をご参照ください。

  • ロック待ち時間: SQL Explorer のログには記録されますが、スロークエリログには記録されません。

  • Prepare メソッド:SQL Explorer は、各プリペアドステートメントに対し、疑問符 (?) プレースホルダーを含むステートメントと、実際の値を含むステートメントの 2 つを記録します。

その他の考慮事項

  • トランザクションレベルの接続プールを持つデータベースプロキシ: トランザクションレベルの接続プールが有効になっている場合、接続が再利用されることがあります。SQL Explorer のログにある IP アドレスとポートは、SHOW PROCESSLIST が返すものとは異なる場合があります。詳細については、「データベースプロキシとは」をご参照ください。

  • PolarDB-X 1.0 にアタッチされたインスタンス: PolarDB-X 1.0 にアタッチされた RDS インスタンスで実行される SQL ステートメントは、水平シャーディングのために複数の SQL Explorer ログエントリを生成します。

SQL エクスプローラーと監査の有効化

Simple Log Service (SLS) の CloudLens for RDS アプリケーションで RDS インスタンスの監査ログ収集機能を有効にすると、SQL エクスプローラーと監査が自動的に有効になります。詳細については、「CloudLens for RDS」をご参照ください。
SQL エクスプローラーと監査が無効になっており、SQL 実行記録を表示する必要がある場合は、バイナリログを確認してください。バイナリログには、バックアップ保持期間内の追加、削除、変更操作のみが含まれます。ソース IP アドレスとアカウントは利用できません。詳細については、「バイナリログファイルの管理」をご参照ください。
  1. [インスタンス] ページに移動します。上部メニューで、RDS インスタンスが存在するリージョンを選択します。インスタンスを見つけて、その ID をクリックします。

  2. 左側メニューで、[自律サービス] > [SQL エクスプローラーと監査] を選択します。

  3. [DAS エンタープライズ版 V3 を有効化] をクリックします。image

  4. 有効にするサブ機能を選択し、[送信] をクリックします。

保存期間の変更

警告

保存期間を短縮すると、新しい期間を超える監査ログは直ちに削除されます。保存期間を短縮する前に、ログをエクスポートして保存してください。

  1. [インスタンス] ページに移動します。リージョンを選択し、インスタンスを見つけて、その ID をクリックします。

  2. 左側メニューで、[自律サービス] > [SQL エクスプローラーと監査] を選択します。

  3. [サービス設定] をクリックします。

  4. [サービス設定] パネルで、保存期間を変更し、[送信] をクリックします。

SQL エクスプローラーと監査の無効化

警告

SQL エクスプローラーと監査を無効にすると、すべての監査ログが完全に削除されます。この機能を無効にする前に、ログをエクスポートしてください。後で機能を再度有効にした場合、ログは再有効化した時点から記録されます。以前のログは復元されません。

  1. [インスタンス] ページに移動します。リージョンを選択し、インスタンスを見つけて、その ID をクリックします。

  2. 左側メニューで、[自律サービス] > [SQL エクスプローラーと監査] を選択します。

  3. [検索] タブの [ログ] セクションで、[エクスポート] をクリックします。

    各エクスポートは、7 日間のウィンドウ内で最大 1,000 万件のレコードを対象とします。より広い時間範囲のログをエクスポートするには、[エクスポート時間範囲] パラメーターを使用してください。
  4. ダイアログボックスで、[エクスポートフィールド][エクスポート期間] を設定し、[OK] をクリックします。

  5. エクスポートされたログファイルをダウンロードし、ローカルに保存します。

  6. [サービス設定] をクリックして機能を無効化します。DAS Enterprise V3 が有効化されている場合は、SQL Explorer と監査モジュールのすべての機能をクリアし、[送信] をクリックします。

    SQL エクスプローラーと監査のデータが占有していたストレージスペースは、機能が無効化されてから 1 時間後に解放されます。

DAS Enterprise Edition バージョン間のデータ移行

警告

データ移行は停止またはロールバックできません。続行する前に、移行手順を注意深くお読みください。

お使いの RDS インスタンスが DAS Enterprise Edition V3 をサポートしている場合は、コストを削減するために V1 または V2 から V3 にデータを移行できます。移行手順については、「DAS Enterprise Edition のバージョン間でデータを移行する方法」をご参照ください。

各バージョンでは、異なるストレージアーキテクチャが使用されています:

  • V1:従来のストレージアーキテクチャ

  • V2:ホットデータとコールドデータのハイブリッドストレージ — V1 よりも低コストで高いパフォーマンス

  • V3:機能ごとの課金を伴うホットデータとコールドデータのハイブリッドストレージ — V2 よりも柔軟

FAQ

[リクエスト統計 (フル)] の logout! ステートメントは何を示しますか?

logout! は切断イベントを示します。 表示される実行期間は、最後のインタラクションと切断の間のアイドル時間です。 ステータスコード [1158] はネットワーク切断を意味します。これは、以下の原因で発生することがあります。

  • クライアント接続がタイムアウトした

  • サーバーが切断した

  • 接続が interactive_timeout または wait_timeout の値を超過しました

[ソース統計] タブの [アクセスソース] 列にパーセント記号 (%) が表示されるのはなぜですか?

[アクセス元] 列に % が表示される場合、ストアドプロシージャが関与しています。これは、ストアドプロシージャが、ホストとして % を含む DEFINER で定義されているためです。たとえば、 CREATE DEFINER=test_user@% PROCEDURE das() のようになります。

この動作を再現するには:

  1. ApsaraDB RDS コンソールで、データベースと標準アカウントを作成し、そのアカウントにデータベースの権限を付与します。詳細については、「アカウントとデータベースの作成」をご参照ください。

  2. CLI を使用して test_user アカウントでインスタンスに接続します。 詳細については、「データベースクライアントまたは CLI を使用して ApsaraDB RDS for MySQL インスタンスに接続する」をご参照ください。

  3. testdb データベースに切り替えて、ストアドプロシージャを作成します:

    -- testdb に切り替え
    USE testdb;
    
    -- ストアドプロシージャの作成
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `das` $$
    CREATE DEFINER=`test_user`@`%` PROCEDURE `das`()
    BEGIN
    SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID();
    END $$
    DELIMITER;
  4. 権限のあるアカウントを使用してインスタンスに接続します。詳細については、「データベースクライアントまたは CLI を使用した ApsaraDB RDS for MySQL インスタンスへの接続」をご参照ください。

  5. ストアドプロシージャを呼び出します:

    -- testdb に切り替え
    USE testdb;
    
    -- ストアドプロシージャの呼び出し
    CALL das();

    期待される出力:

    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | ID     | USER      | HOST   | DB     | COMMAND | TIME | STATE     | INFO                                                                    |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | 487818 | test_user | %:2065 | testdb | Query   |    0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+

結果を返すクエリを実行した後、[ログ] セクションにスキャンされた行数がゼロと表示されます。なぜですか?

高速クエリキャッシュ機能が有効になっているためです。同じクエリがキャッシュにヒットすると、MySQL は InnoDB をスキャンせずにキャッシュされた結果を直接返すため、スキャンされた行数はゼロになります。詳細については、「高速クエリキャッシュ」をご参照ください。

SQL Explorer のログとバイナリログの違いは何ですか?

どちらのログタイプも RDS インスタンスへの増分変更をキャプチャしますが、対象範囲とユースケースが異なります:

SQL Explorer ログ

バイナリログ

対象範囲

すべての DQL、DML、DDL 操作

追加、削除、変更操作のみ

完全性

高負荷時には少数のレコードが失われる可能性があります

バックアップ保持期間内は正確です

可用性

リアルタイム

リアルタイムでは生成されません。定期的に Object Storage Service (OSS) に転送され、7 日間保持されます

ソース IP とアカウントを含む

はい

いいえ

最適な用途

コンプライアンス監査、トラブルシューティング、完全なアクティビティ分析

正確な増分データを使用したデータ復旧

現在書き込み中のバイナリログファイルは OSS に転送できません。その結果、[Binlog のアップロード] 機能を使用すると、一部のファイルのアップロードに失敗する場合があります。詳細については、「ApsaraDB RDS for MySQL インスタンスのバイナリログファイルをリモートで取得して解析する方法」をご参照ください。

コンソールから SQL Explorer のエントリポイントが消えました。なぜですか?

SQL エクスプローラーと監査は、SQL Explorer の更新版だからです。エントリポイントは現在、[SQL エクスプローラーと監査] と表示されます。

元の SQL Explorer 機能を有効にできますか?

いいえ。RDS インスタンスでは、最新バージョンの SQL エクスプローラーと監査のみを有効にできます。

SQL 監査レコードは、エクスポートした後にシステムから削除されますか?

いいえ。監査レコードをエクスポートしても、システムから削除されることはありません。

SQL エクスプローラーと監査は、データベースアカウントレベルでのアラート設定をサポートしていますか (たとえば、特定のアカウントをアラート通知から除外するなど)?

いいえ。SQL エクスプローラーと監査のアラートおよび監査設定はインスタンスレベルで適用され、個々のデータベースアカウントごとに区別することはできません。たとえば、「ユーザー A はアラートを受信しない」や「ユーザー B の操作のみを監査する」といった設定はできません。ユーザーごとにアラート通知を管理するには、アプリケーションレイヤーまたは Cloud Monitor の通知ポリシーを使用してフィルタリングしてください。

監査ログを使用してデータ削除のソースを追跡するにはどうすればよいですか?

テーブルデータが誤ってまたは悪意を持って削除された場合、SQL エクスプローラーと監査を使用して、削除を実行したアカウントと IP アドレスを特定できます:

  1. ApsaraDB RDS コンソールにログインします。インスタンスを見つけて、その ID をクリックします。

  2. 左側メニューで、自律型サービス > SQL Explorer and Audit を選択します。

  3. Audit タブの Logs セクションで、削除が発生した期間をカバーするように時間範囲を設定し、オプションでデータベース名でフィルタリングします。

  4. SQL キーワード検索ボックスに DELETE と入力し、検索アイコンをクリックします。

  5. 結果の中から DELETE 操作のレコードを見つけてクリックすると、アカウント名やクライアント IP アドレスなどの詳細が表示されます。

説明

監査ログに記録される IP アドレス (HostAddress) は、実際のクライアント IP アドレスではなく、RDS プロキシの IP アドレスである場合があります。操作の実際のソースを確認するには、VPC ネットワーク設定を照合するか、クライアント側の接続ログを確認してください。

エラーログのフィールドを組み合わせて監査レコードをフィルタリングするにはどうすればよいですか?

データベース名やクライアント IP アドレスなどのエラーログのフィールドを、SQL エクスプローラーと監査のフィルター条件として使用して、異常な接続を特定できます。手順は次のとおりです:

  1. ApsaraDB RDS コンソールにログインし、インスタンス詳細ページに移動します。左側メニューで、自律型サービス > SQL Explorer and Audit を選択します。

  2. Audit タブで、Enable Advanced Query をクリックして、高度なフィルター条件を展開します。

  3. データベース フィールドに、データベース名 (例: battery) を入力します。

  4. [クライアント IP] フィールドに、エラーログのホスト、たとえば 172.25.244.207 を入力します。

  5. 時間範囲 を、異常な接続が発生した期間が含まれるように設定します。

  6. クエリ をクリックして、組み合わせたフィルタークエリを実行します。

説明

クライアント IP フィルター条件は、Enable Advanced Query をクリックすると表示されます。デフォルトでは、時間範囲、キーワード、ユーザー、データベース、および操作タイプのフィルター条件のみが表示されます。

インスタンスのログイン履歴をクエリするにはどうすればよいですか?

操作タイプによって[検索 (監査)] の結果を絞り込むことができます。SQL Explorer and Audit ページで、[検索] タブを開き、[操作タイプ] フィルターを LOGIN に設定すると、インスタンスのログオン履歴を照会できます。結果リストには、[ユーザー] (ログオンアカウント) 列と [クライアント IP] 列が含まれており、誰がどこからログオンしたかを特定するのに役立ちます。

特定の行のステータスを変更した SQL ステートメントが見つからない場合はどうすればよいですか?

SQL Explorer and Audit は SQL 文レベルで操作を記録しますが、フィールドレベルでの変更前後の値の比較は提供しません。 status のような特定のフィールドの変更前後の値を確認するには、Data Management (DMS) のデータ追跡機能を使用して、変更の発生源を特定してください。