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

PolarDB:ホワイトリストルールの設定

最終更新日:Mar 29, 2026

SQL ファイアウォールを使用すると、ご利用の PolarDB クラスターに対して実行できる SQL ステートメントを制御できます。ホワイトリストルールを設定すると、PolarProxy はホワイトリストにない SQL ステートメントをブロックまたはアラートを発し、不正または意図しないクエリからデータベースアカウントを保護します。

仕組み

PolarProxy は、ホワイトリストルールごとに 3 つのモードのいずれかで動作します。

モードPolarProxy の動作
トレーニングモードSQL ステートメントをサイレントに収集します。ブロックもアラートの生成も行いません。
検出モードホワイトリストにない SQL ステートメントを検出した際に記録します。ブロックはしません。
保護モードホワイトリストにない SQL ステートメントを検出した際に記録し、ブロックします。

PolarProxy がトレーニングモードで SQL ステートメントを収集する際、リテラルテキストではなく、各ステートメントの *パラメータ化された* 形式を保存します。例:

SQL テキスト
実行するステートメントupdate t set k = 2 where id = 2;
保存されるパラメータ化された形式update t set k = ? where id = ?

? は任意の値を表します。これは、トレーニングされた 1 つのステートメントが、使用される特定の値に関係なく、構造的に同一のすべてのクエリをカバーすることを意味します。考えられるすべてのパラメータの組み合わせをトレーニングする必要はありません。

複数のホワイトリストルールを設定して、関心事を分離します。各ルールのトレーニングには専用のデータベースアカウントを使用し、検出モードまたは保護モードに切り替える際に、各ルールが適用されるアカウントを指定します。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • PolarDB for MySQL クラスター

  • PolarDB コンソールへのアクセス

  • ルールに関連付けるデータベースアカウントが少なくとも 1 つあること

ホワイトリストルールの作成

  1. PolarDB コンソールにログインします。

  2. コンソールの左上隅で、クラスターがデプロイされているリージョンを選択します。

  3. クラスターを見つけて、クラスター ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ管理] を選択します。

  5. [SQL ファイアウォール] タブの左上隅にある [追加] をクリックします。

  6. [ルールの作成] ダイアログボックスで、次のパラメーターを設定します。[データベースアカウント名] のオプション:アカウント名は、次のいずれかの形式に従う必要があります。

    • username — 例:user

    • username@IP address — 例:user@10.0.0.0

    基本情報

    パラメーター必須説明
    ルール名はいルールの名前。数字と文字を含めることができます。最大 30 文字です。
    説明いいえルールの説明。最大 64 文字です。
    エンドポイントはいこのルールが適用されるエンドポイント。

    設定

    パラメーター必須説明
    ルールタイプはい[ホワイトリスト ルール] を選択します。
    現在のモードいいえ動作モード:[トレーニングモード][検出モード]、または [保護モード]
    データベースアカウント名いいえルールが適用されるデータベースアカウント。以下のオプションをご参照ください。
    オプション動作
    すべてのアカウントすべてのデータベースアカウントに適用されます。右側のフィールドは空白のままにします。
    含める指定したアカウントにのみ適用されます。少なくとも 1 つのアカウント名を入力し、コンマ (,) で区切ります。
    除外する指定したアカウントを除くすべてのアカウントに適用されます。少なくとも 1 つのアカウント名を入力し、コンマ (,) で区切ります。
  7. [OK] をクリックします。

  8. 選択したモードに基づいて、次のステップを実行します。

    • [トレーニングモード]:ルールで定義されたデータベースアカウントを使用して、指定されたエンドポイントに接続します。ホワイトリストに登録したい業務関連の SQL ステートメントを実行します。PolarProxy は各ステートメントをパラメータ化し、ルールに保存します。

      ステートメントを実行せずに手動でホワイトリストに追加するには、ステートメントの前に次のヒントワードを付けます。

      sql hint(/* store_to_whitelist */)
      重要:業務を更新するたびに、すべての新しい SQL ステートメントを再トレーニングしてください。保護モードでは、PolarProxy はトレーニングされていないステートメントをブロックします。

      トレーニングが完了したら、ルールを検出モードまたは保護モードに切り替えて、ホワイトリストの適用を開始します。

    • [検出モード]:定義されたデータベースアカウントを使用して、指定されたエンドポイントに接続します。業務の SQL ステートメントを通常どおり実行します。PolarProxy は、ホワイトリストにないステートメントを記録し、通過させます。ホワイトリストにないステートメントの場合、結果は次のようになります。

       Query OK, 0 rows affected (0.03 sec) Rows matched:1 Changed: 0 Warnings:0 
    • [保護モード]:定義されたデータベースアカウントを使用して、指定されたエンドポイントに接続します。業務の SQL ステートメントを実行します。PolarProxy は、ホワイトリストにないステートメントを記録してブロックします。ブロックされたステートメントの場合、エラーは次のようになります。

       ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xzh'@'x.x.x.x' to database 'xzh': This SQL is not in whitelist wl_test. 

ホワイトリストルールの有効化または無効化

  1. PolarDB コンソールにログインします。

  2. コンソールの左上隅で、クラスターがデプロイされているリージョンを選択します。

  3. クラスターを見つけて、クラスター ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ管理] を選択します。

  5. [SQL ファイアウォール] タブでルールを見つけ、[有効化/無効化] を切り替えます。

  6. 確認メッセージで [OK] をクリックします。

一度に複数のルールを有効化または無効化するには、ルールテーブルでそれらを選択し、[有効化] または [無効化] をクリックします。

ホワイトリストルールの変更

  1. PolarDB コンソールにログインします。

  2. コンソールの左上隅で、クラスターがデプロイされているリージョンを選択します。

  3. クラスターを見つけて、クラスター ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ管理] を選択します。

  5. [SQL ファイアウォール] タブでルールを見つけ、[操作] 列の [変更] をクリックします。

  6. [ルールの変更] ダイアログボックスで、パラメーターを更新し、[OK] をクリックします。

ルール名は、ルール作成後に変更することはできません。
PolarDB コンソールでは、ルール内のパラメータ化された SQL 文を変更することはできません。パラメータ化された SQL 文を更新するには、proxy_auditing.sql_list テーブルから削除して再トレーニングします。

ホワイトリストルールの削除

  1. PolarDB コンソールにログインします。

  2. コンソールの左上隅で、クラスターがデプロイされているリージョンを選択します。

  3. クラスターを見つけて、クラスター ID をクリックします。

  4. 左側のナビゲーションウィンドウで、[設定と管理] > [セキュリティ管理] を選択します。

  5. [SQL ファイアウォール] タブでルールを見つけ、[操作] 列の [削除] をクリックします。

  6. [削除] メッセージで [OK] をクリックします。

一度に複数のルールを削除するには、ルールリストでそれらを選択し、[削除] をクリックします。