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

PolarDB:ブラックリストルールの設定

最終更新日:Jun 04, 2024

PolarDBコンソールで、クラスターのブラックリストルールを作成、削除、有効化、無効化、または変更できます。 このトピックでは、ブラックリストルールとは何か、およびブラックリストルールを設定する方法について説明します。

ブラックリストルール

PolarProxyを使用すると、指定した種類のSQL文または特定のSQL文をブロックするブラックリストルールを設定できます。

ブラックリストルールは、次のいずれかの方法で設定できます。

  • 固定ルールモード: PolarDBコンソールで共通のブラックリストルールを設定できます。 各ルールは、Alibaba Cloudアカウントまたはクラスターで有効になるように設定できます。 一般的なブラックリストルールの詳細については、「ブラックリストルールの追加」をご参照ください。

  • カスタムパラメーター化SQLモード: データベースで実行するSQL文のすべての変数をパラメーター化し、パラメーター化されたテンプレートを生成し、テンプレートをデータベースに記録できます。 PolarProxyは、パラメーター化されたテンプレートと一致するSQL文をブロックします。

  • カスタムSQLモード: ステートメントの変数をパラメータ化する必要なく、ブロックするSQLステートメントを指定できます。 他のパラメーターを使用するSQL文はブロックされません。

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

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

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

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

  4. 左側のナビゲーションウィンドウで、設定と管理 > セキュリティ管理.

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

  6. では、ルールの作成ダイアログボックスで、選択したモードに基づいて必要なパラメーターを設定します。

    • 固定ルールモード

      1. 固定ルールモードを選択した場合は、次の表に示すパラメーターを設定します。

        表 1 ブラックリストルールのパラメーター

        パラメーター

        必須

        説明

        基本情報

        ルール名

        ルールの名前を設定します。 名前の条件は次のとおりです。

        • 数字と文字を含めることができます。

        • 長さは最大30文字です。

        説明

        任意

        ルールの説明。

        説明

        説明の長さは最大64文字です。

        Endpoint

        現在のルールが適用されるエンドポイント。

        設定

        ルールタイプ

        ルールのタイプ。 [ブラックリストルール] を選択します。

        現在のモード

        任意

        ルールのモード。 値を保護モードに設定します。 PolarProxyは、ブラックリストルールに一致するSQLステートメントをブロックします。

        データベースアカウント名

        任意

        ルールが適用されるデータベースアカウントの名前。 有効な値:

        • すべてのアカウント: このルールは、クラスター内のすべてのデータベースアカウントに適用されます。 ALL Accountsオプションの右側のフィールドは空のままにすることができます。

        • 含む: このルールは、指定されたデータベースアカウントにのみ適用されます。 [含める] オプションの右側のフィールドに、少なくとも1つのデータベースアカウント名を入力する必要があります。 複数のデータベースアカウント名はコンマ (,) で区切ります。

        • 含まない: このルールは、指定されたデータベースアカウントを除くクラスター内のすべてのデータベースアカウントに適用されます。 除外オプションの右側のフィールドに、少なくとも1つのデータベースアカウント名を入力する必要があります。 複数のデータベースアカウント名はコンマ (,) で区切ります。

        説明

        データベースアカウント名は、次のいずれかの形式である必要があります。

        • ユーザー名。 例: user

        • ユーザー名 @ IPアドレス。 例: user@10.0.0.0

        アスタリスク付きブロックSQL (*)

        任意

        アスタリスク (*) を含むSQL文をブロックするかどうかを指定します。 有効な値:

        • Enable: アスタリスク (*) を含むSQL文をブロックします。

        • 無効: アスタリスク (*) を含むSQL文はブロックされません。

        特定タイプのブロックSQL

        任意

        特定の型のSQL文をブロックするかどうかを指定します。 有効な値:

        • Enable: 特定の型のSQL文をブロックします。 [特定の型のブロックSQL] パラメーターを [有効] に設定した場合、少なくとも1つの型のSQL文を選択します。 次の種類のSQL文がサポートされています。

          • 作成

          • ドロップ

          • ALTER

          • トランケート

          • RENAME

          • インサート

          • 更新

          • 選択

          • 削除

        • 無効: 特定の型のSQL文をブロックしません。

        WHEREなしのブロックSQL

        任意

        WHERE句を含まないSQL文をブロックするかどうかを指定します。 有効な値:

        • Enable: WHERE句を含まない特定の型のSQL文をブロックします。 WHEREを使用しないブロックSQLパラメーターをEnableに設定した場合、少なくとも1種類のSQL文を選択します。 次の種類のSQL文がサポートされています。

          • 更新

          • 選択

          • 削除

        • Disable: WHERE句を含まない特定の型のSQL文をブロックしません。

        説明

        このパラメーターは、少なくとも1つのテーブル名を含むSELECTUPDATE、およびDELETEステートメントに対してのみ有効です。 PolarProxyはSELECT 1; ステートメントをブロックしません。

        特定の列を持つブロックSQL

        任意

        特定の列名を含むSQLステートメントをブロックするかどうかを指定します。 有効な値:

        • Enable: 特定の列名を含むSQL文をブロックします。 [特定の列でSQLをブロックする] パラメーターを [有効] に設定すると、次のオプションがサポートされます。

          • すべて: このルールは、クラスター内のすべての列名に適用されます。 [すべて] オプションの右側のフィールドは空のままにすることができます。

          • Include: ルールは、指定された列名にのみ適用されます。 [含める] オプションの右側のフィールドに、少なくとも1つのデータベース列名を入力する必要があります。 複数の列名はコンマ (,) で区切ります。

          • 除外: このルールは、指定された列名を除くクラスター内のすべての列名に適用されます。 除外オプションの右側のフィールドに少なくとも1つの列名を入力する必要があります。 複数の列名はコンマ (,) で区切ります。

        • 無効: 特定の列名を含むSQL文はブロックされません。

        特定の関数を持つブロックSQL

        任意

        特定の関数を含むSQL文をブロックするかどうかを指定します。 有効な値:

        • Enable: 特定の関数を含むSQL文をブロックします。 [特定の関数を持つブロックSQL] パラメーターを [有効] に設定すると、次のオプションがサポートされます。

          • すべて: このルールは、クラスター内のすべての関数に適用されます。 [すべて] オプションの右側のフィールドは空のままにすることができます。

          • Include: ルールは指定された関数にのみ適用されます。 Includeオプションの右側のフィールドに少なくとも1つの関数を入力する必要があります。 複数の関数はコンマ (,) で区切ります。

          • 除外: このルールは、指定された関数を除くクラスター内のすべての関数に適用されます。 除外オプションの右側のフィールドに少なくとも1つの関数を入力する必要があります。 複数の関数はコンマ (,) で区切ります。

        • Disable: 特定の関数を含むSQL文をブロックしません。

        特定の列と特定の関数を持つブロックSQL

        任意

        特定の関数と特定の列名を含むSQLステートメントをブロックするかどうかを指定します。 有効な値:

        • Enable: 特定の関数と特定の列名を含むSQL文をブロックします。 [特定の列と特定の関数でSQLをブロックする] パラメーターを [有効] に設定した場合、右側のフィールドに少なくとも1つの関数と1つの列名を入力する必要があります。

          • [Function Name] パラメーターを [Include] に設定し、[Column Name] パラメーターを [Include] に設定した場合、特定の関数と特定の列名を含むSQL文でルールが有効になります。

          • [関数名] パラメーターを [含める] に設定し、[列名] パラメーターを [除外] に設定した場合、特定の関数を含み、特定の列名を含まないSQL文でルールが有効になります。

          • [関数名] パラメーターを [除外] に設定し、[列名] パラメーターを [含める] に設定した場合、特定の関数を含まず、特定の列名を含むSQL文でルールが有効になります。

          • [関数名] パラメーターを [除外] に設定し、[列名] パラメーターを [除外] に設定した場合、特定の関数または特定の列名を含まないSQL文でルールが有効になります。

        • Disable: 特定の関数と特定の列名を含むSQL文はブロックされません。

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

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

      1. [カスタムパラメーター化SQLモード] を選択した場合、必要なパラメーターを設定します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。

        説明

        [カスタムパラメーター化SQLモード] を選択した場合、表1に示す [設定] パラメーターのすべてのブラックリストルールを無効にできます。

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

      3. 事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。 SQL文の前にhint(/* store_to_blacklist */) というhintコマンドを追加して、ブロックするSQL文を指定できます。 たとえば、select id from sqlblack_test where id = 1; ステートメントをブロックするには、次のコマンドを実行します。

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

        パラメータ化されたテンプレート:

        select id from sqlblack_test where id = ?

        テンプレートの疑問符 (?) は任意の値を示します。

        5秒待ちます。 アカウントを使用して、指定したクラスターで前述のパラメーター化されたテンプレートと一致するSQLステートメントを実行すると、PolarProxyはステートメントをブロックします。 SQL文がブロックされると、次の情報が表示されます。

        ERROR 1141 (HY000): このSQLはSQLファイアウォールによって拒否されます。 ユーザー 'xxx' @ 'x.x.x 'からデータベース 'xzh' へのアクセスが拒否されました: このSQLはbl_testブラックリストにあります。

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

      説明
      • MySQLコマンドラインを使用する場合は、-cオプションを追加する必要があります。 それ以外の場合、hintコマンドは有効になりません。

      • パラメータ化されたSQL文は5秒後に有効になります。

    • カスタムSQLモード

      1. カスタムSQLモードを選択した場合、必要なパラメーターを設定します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。

        説明

        [カスタムSQLモード] を選択した場合、表1に示す [設定] パラメーターのすべてのオプションを無効にできます。

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

      3. 事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。 ブロックするSQL文を指定するには、SQL文の前にhintコマンドhint(/* orginal_store_to_blacklist */) を追加します。 たとえば、update t set k = 2 where id = 2; ステートメントをブロックするには、次のコマンドを実行します。

        /* orginal_store_to_blacklist */ update t set k = 2ここでid = 2;

        5秒待ちます。 アカウントを使用して指定されたクラスターでupdate t set k = 2 where id = 2; ステートメントを実行すると、PolarProxyはそのステートメントをブロックします。 ただし、他のパラメーターを使用するSQL文はブロックされません。 SQL文がブロックされると、次の情報が表示されます。

        ERROR 1141 (HY000): このSQLはSQLファイアウォールによって拒否されます。 ユーザー 'xxx' @ 'x.x.x 'からデータベース 'xzh' へのアクセスが拒否されました: このSQLはbl_testブラックリストにあります。

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

      説明
      • MySQLコマンドラインを使用する場合は、-cオプションを追加する必要があります。 それ以外の場合、hintコマンドは有効になりません。

      • パラメータ化されたSQL文は5秒後に有効になります。

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

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

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

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

  4. 左側のナビゲーションウィンドウで、設定と管理 > セキュリティ管理.

  5. On theSQLファイアウォールタブで、管理するルールを見つけてオンにする有効化 /無効化.

    説明

    ルールリストで複数のルールを選択し、[有効化] または [無効化] をクリックして、ルールを一括有効化または無効化できます。

  6. では、有効化または無効にするメッセージ, クリックOK.

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

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

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

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

  4. 左側のナビゲーションウィンドウで、設定と管理 > セキュリティ管理.

  5. [SQLファイアウォール] タブで、管理するルールを見つけ、[操作] 列の [変更] をクリックします。 [ルールの変更] ダイアログボックスで、ビジネス要件に基づいてパラメーターを変更します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。

    説明

    ルールを変更するとき、ルール名を変更することはできません。

  6. クリックOK.

説明

PolarDBコンソールで、カスタムパラメータ化SQLモードで作成されたルールのパラメータ化SQL文とカスタムSQLモードで作成されたルールのSQL文を変更することはできません。 テーブルからSQL文を削除してから、再度文を追加する必要があります。

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

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

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

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

  4. 左側のナビゲーションウィンドウで、設定と管理 > セキュリティ管理.

  5. On theSQLファイアウォールタブで、管理するルールを見つけて、をクリックします。削除で、アクション列を作成します。

    説明

    ルールリストで複数のルールを選択し、[削除] をクリックしてルールを一括削除できます。

  6. では、削除メッセージ, クリックOK.

カスタムパラメータ化SQLまたはカスタムSQLモードで作成されたブラックリストルールをキャンセルする

  • カスタムパラメータ化SQLモードで作成されたブラックリストルールをキャンセルする

    次のいずれかの方法を使用して、カスタムパラメーター化SQLモードで作成されたブラックリストルールをキャンセルできます。

    • このトピックのブラックリストルールの有効化または無効化またはブラックリストルールの削除を参照してください。

      説明

      PolarDBコンソールでのみカスタムパラメータ化SQLモードで作成されたブラックリストルールを無効にし、proxy_auditing.sql_listテーブルからパラメータ化SQLステートメントを削除しない場合、PolarDBコンソールでブラックリストルールを再度有効にすると、同じアカウントのルールが引き続き有効になります。

    • スーパー管理者アカウントを使用してクラスターのプライマリノードに接続し、proxy_auditing.sql_listテーブルからSQL文を削除します。 パラメータ化されたSQL文は、5秒後にブロックされなくなります。

      説明

      proxy_auditing.sql_listテーブルからSQL文を削除する場合は、DROP文を実行してテーブルを削除しないでください。

  • カスタムSQLモードで作成されたブラックリストルールをキャンセルする

    次のいずれかの方法を使用して、カスタムSQLモードで作成されたブラックリストルールをキャンセルできます。

    • このトピックのブラックリストルールの有効化または無効化またはブラックリストルールの削除を参照してください。

      説明

      PolarDBコンソールでのみカスタムパラメータ化SQLモードで作成されたブラックリストルールを無効にし、proxy_auditing.org_sql_listテーブルからパラメータ化SQLステートメントを削除しない場合、PolarDBコンソールでブラックリストルールを再度有効にすると、同じアカウントのルールが有効になります。

    • スーパー管理者アカウントを使用してクラスターのプライマリノードに接続し、proxy_auditing.org_sql_listテーブルからSQL文を削除します。 5秒後にSQL文がブロックされなくなります。

      説明

      proxy_auditing.org_sql_listテーブルからSQL文を削除する場合は、DROP文を実行してテーブルを削除しないでください。