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

PolarDB:Configure a blacklist rule

最終更新日:Mar 29, 2026

PolarProxy の SQL Firewall を使用すると、PolarDB for MySQL クラスターに到達する前に、特定の SQL ステートメントまたはステートメントタイプをブロックできます。ブラックリストルールを使用すると、意図しないデータ操作や不正なデータ操作 (無制限の DELETE または UPDATE ステートメント、DDL コマンド、セキュリティインシデント中に特定された特定の SQL パターンなど) を防止できます。

仕組み

PolarProxy は、プロキシレイヤーで SQL ステートメントをインターセプトし、設定されたブラックリストルールと比較します。ルールに一致するステートメントはエラーで拒否され、その他のすべてのステートメントは通常どおり通過します。

3 つのルールモードが利用可能です。

モードブロックパターンを定義する方法最適な用途
固定ルールモードコンソールで組み込みの条件 (ステートメントタイプ、WHERE 句の欠落、特定の列または関数、ワイルドカードアスタリスク) を選択します。クラスターまたはアカウント全体でリスクの高い広範なカテゴリのステートメントをブロックする場合
カスタムパラメーター化 SQL モード特殊なヒントを使用して PolarProxy 経由でターゲットステートメントを実行します。PolarProxy は、変数位置の任意の値に一致するパラメーター化されたテンプレートを生成します。リテラル値に関係なく、構造的に同一のステートメントのファミリーをブロックする場合
カスタム SQL モード異なるヒントを使用して PolarProxy 経由で正確なステートメントを実行します。特定の 1 つのステートメントをブロックする場合。値が異なるステートメントは影響を受けません。

前提条件

開始する前に、以下を確認してください。

ブラックリストルールの作成

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

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

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

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

  5. [SQL Firewall] タブで、左上隅の [追加] をクリックします。

  6. [Create A Rule]」ダイアログボックスで、モードを選択し、パラメーターを設定します。

固定ルールモード

以下の表に記載されているパラメーターを設定し、次に、[OK] をクリックします。

基本情報

パラメーター必須説明
ルール名はいルール名。数字と文字のみを含み、30 文字以内である必要があります。
説明いいえルールの説明。64 文字以内です。
エンドポイントはいルールが適用されるエンドポイント。

設定

パラメーター必須説明
ルールタイプはいブラックリストルール を選択します。
現在のモードいいえ保護モード に設定します。PolarProxy は、このルールに一致する SQL ステートメントをブロックします。
データベースアカウント名いいえこのルールを適用するデータベースアカウントです。選択肢は以下のとおりです:すべてのアカウント(すべてのアカウントに適用;隣接するフィールドは空欄のままにしてください)、含める(指定したアカウントのみに適用;少なくとも 1 つのアカウント名を入力してください)、または 除外(指定したアカウントを除くすべてのアカウントに適用;少なくとも 1 つのアカウント名を入力してください)。アカウント名は、次のいずれかの形式に従う必要があります:Username(例:user)または Username@IP アドレス(例:user@10.0.0.0)。複数のアカウント名はカンマ(,)で区切ります。
**アスタリスク (*) を含む SQL のブロック**いいえ有効 に設定すると、アスタリスク(*)を含む SQL ステートメントがブロックされます。
特定の種類の SQL のブロックいいえ有効 に設定すると、特定の種類の SQL ステートメントがブロックされます。有効化後は、少なくとも 1 つの種類を選択してください:CREATEDROPALTERTRUNCATERENAMEINSERTUPDATESELECT、または DELETE
WHERE 句のない SQL のブロックいいえ有効 に設定すると、WHERE 句を含まない UPDATESELECT、または DELETE ステートメントがブロックされます。有効化後は、少なくとも 1 つの種類を選択してください。この設定は、少なくとも 1 つのテーブル名を参照するステートメントにのみ適用されます。たとえば、SELECT 1; はブロックされません。
特定のカラムを参照する SQL のブロックいいえ有効 に設定すると、特定のカラムを参照する SQL ステートメントがブロックされます。有効化後は、すべて(すべてのカラム)、含める(指定したカラムのみ;少なくとも 1 つを入力してください)、または 除外(指定したカラムを除くすべてのカラム;少なくとも 1 つを入力してください)から選択します。
特定の関数を呼び出す SQL のブロックいいえ有効 に設定すると、特定の関数を呼び出す SQL ステートメントがブロックされます。有効化後は、すべて(すべての関数)、含める(指定した関数のみ;少なくとも 1 つを入力してください)、または 除外(指定した関数を除くすべての関数;少なくとも 1 つを入力してください)から選択します。
特定のカラムおよび特定の関数を組み合わせた SQL のブロックいいえ有効 に設定すると、カラムと関数の両方の条件に一致する SQL ステートメントがブロックされます。関数名とカラム名のそれぞれについて、少なくとも 1 つずつ入力してください。関数名 および カラム名 の各パラメーターでは、含める または 除外 のいずれかを選択できます。下記の表に、これらの組み合わせの動作を示します。

関数名と列名の組み合わせ

関数名列名ブロックされるステートメント
含める含める指定された関数と指定された列の両方を含むステートメント
含める除外する指定された関数を含み、指定された列を含まないステートメント
除外する含める指定された関数を含まず、指定された列を含むステートメント
除外する除外する指定された関数も指定された列も含まないステートメント

カスタムパラメーター化 SQL モード

カスタムパラメーター化 SQL モードでは、PolarProxy は、提供された実際の SQL ステートメントからパラメーター化されたテンプレートを生成します。テンプレートは、すべてのリテラル値を ? プレースホルダーに置き換え、PolarProxy は、使用される実際の値に関係なく、テンプレート構造に一致する将来のすべてのステートメントをブロックします。

例: select id from sqlblack_test where id = 1; をブラックリストに追加すると、PolarProxy はテンプレート select id from sqlblack_test where id = ? を生成します。テンプレート内の疑問符 (?) は任意の値を示します。

  1. ルールの作成]ダイアログボックスで、[カスタムパラメーター化SQLモード]を選択します。必須パラメーターを設定します。[設定]セクションでは、すべてのオプションを無効化できます。

  2. [OK]」をクリックします。

  3. 指定されたエンドポイントに、ルールで定義された[データベースアカウント名]を使用して接続します。

  4. ブロックする SQL ステートメントの前に /* store_to_blacklist */ ヒントを付けて実行します。

    /* store_to_blacklist */ select id from sqlblack_test where id = 1;

    PolarProxy は、パラメーター化されたテンプレート select id from sqlblack_test where id = ?proxy_auditing.sql_list テーブルに保存します。

  5. 5 秒間待ちます。その後、テンプレートに一致するすべてのステートメントがブロックされます。PolarProxy は次のエラーを返します。

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

    bl_test はブラックリストルールテーブルの名前です。

MySQL コマンドラインを使用する場合は、接続時に -c オプションを追加します。-c がないと、MySQL クライアントはステートメントをサーバーに送信する前にコメント形式のヒントを削除するため、/* store_to_blacklist */ は効果がありません。

カスタム SQL モード

カスタム SQL モードでは、PolarProxy は、提供された正確なステートメント (特定のパラメーター値を含む) のみをブロックします。値が異なるステートメントはブロックされません。

  1. [ルールの作成] ダイアログボックスで、[カスタム SQL モード] を選択します。 必須パラメーターを設定します。 [設定] セクションでは、すべてのオプションを無効にすることができます。

  2. [OK] をクリックします。

  3. 指定されたエンドポイントに、ルールで定義された[データベースアカウント名]を使用して接続します。

  4. ブロックするステートメントの前に /* orginal_store_to_blacklist */ ヒントを付けて実行します。

    /* orginal_store_to_blacklist */ update t set k = 2 where id = 2;

    PolarProxy は、この正確なステートメントを proxy_auditing.org_sql_list テーブルに保存します。

  5. 5 秒間待ちます。その後、そのクラスターで update t set k = 2 where id = 2; を実行するとブロックされます。たとえば update t set k = 3 where id = 5; のように値が異なるステートメントは影響を受けません。一致したステートメントがブロックされると、PolarProxy は次のエラーを返します。

    ERROR 1141 (HY000): This SQL is rejected by SQL Firewall. Access denied for user 'xxx'@'x.x.x.x' to database 'xzh': This SQL is in blacklist bl_test.
MySQL コマンドラインを使用する場合は、接続時に -c オプションを追加します。-c がないと、MySQL クライアントはステートメントをサーバーに送信する前にコメント形式のヒントを削除するため、/* orginal_store_to_blacklist */ は効果がありません。

ブラックリストルールの有効化または無効化

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

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

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

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

  5. [SQL Firewall] タブで、該当するルールを見つけ、[有効化/無効化] を切り替えます。

  6. 確認ダイアログで、[OK] をクリックします。

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

ブラックリストルールの変更

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

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

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

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

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

  6. [ルールの変更]」ダイアログボックスで、必要に応じてパラメーターを更新し、その後[OK]をクリックします。

ルール名は作成後に変更できません。カスタムパラメーター化 SQL モードルールまたはカスタム SQL モードルールに保存されている SQL ステートメントを更新するには、基になるテーブルから直接ステートメントを削除し、再度追加する必要があります。これはコンソールからは実行できません。

ブラックリストルールの削除

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

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

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

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

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

  6. 確認ダイアログで、[OK] をクリックします。

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

カスタムルールから保存された SQL ステートメントを削除する

コンソールでルールを無効にするか削除しても、保存された SQL ステートメントは基になるテーブルに残ります。後でルールを再度有効にすると、PolarProxy はそれらの保存されたステートメントに基づいてブロックを再開します。

保存されたステートメントを完全に削除するには、スーパー管理者アカウントを使用してプライマリノードに接続し、テーブルから関連する行を直接削除します。

警告

これらのテーブルに対して DROP ステートメントを実行しないでください。削除したい特定の行のみを削除してください。

カスタムパラメーター化 SQL モード

保存されたステートメントは proxy_auditing.sql_list テーブルにあります。このテーブルから関連する行を削除します。テンプレートは 5 秒以内に一致しなくなります。

カスタム SQL モード

保存されたステートメントは proxy_auditing.org_sql_list テーブルにあります。このテーブルから関連する行を削除します。ブロックは 5 秒以内に適用されなくなります。