PolarDBコンソールで、クラスターのブラックリストルールを作成、削除、有効化、無効化、または変更できます。 このトピックでは、ブラックリストルールとは何か、およびブラックリストルールを設定する方法について説明します。
ブラックリストルール
PolarProxyを使用すると、指定した種類のSQL文または特定のSQL文をブロックするブラックリストルールを設定できます。
ブラックリストルールは、次のいずれかの方法で設定できます。
固定ルールモード: PolarDBコンソールで共通のブラックリストルールを設定できます。 各ルールは、Alibaba Cloudアカウントまたはクラスターで有効になるように設定できます。 一般的なブラックリストルールの詳細については、「ブラックリストルールの追加」をご参照ください。
カスタムパラメーター化SQLモード: データベースで実行するSQL文のすべての変数をパラメーター化し、パラメーター化されたテンプレートを生成し、テンプレートをデータベースに記録できます。 PolarProxyは、パラメーター化されたテンプレートと一致するSQL文をブロックします。
カスタムSQLモード: ステートメントの変数をパラメータ化する必要なく、ブロックするSQLステートメントを指定できます。 他のパラメーターを使用するSQL文はブロックされません。
ブラックリストルールの作成
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
の左上隅にSQLファイアウォールタブをクリックします。追加.
では、ルールの作成ダイアログボックスで、選択したモードに基づいて必要なパラメーターを設定します。
固定ルールモード
固定ルールモードを選択した場合は、次の表に示すパラメーターを設定します。
表 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つのテーブル名を含む
SELECT
、UPDATE
、および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文はブロックされません。
OK をクリックします。
カスタムパラメータ化SQLモード
[カスタムパラメーター化SQLモード] を選択した場合、必要なパラメーターを設定します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。
説明[カスタムパラメーター化SQLモード] を選択した場合、表1に示す [設定] パラメーターのすべてのブラックリストルールを無効にできます。
OK をクリックします。
事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。 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モード
カスタムSQLモードを選択した場合、必要なパラメーターを設定します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。
説明[カスタムSQLモード] を選択した場合、表1に示す [設定] パラメーターのすべてのオプションを無効にできます。
OK をクリックします。
事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。 ブロックする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秒後に有効になります。
ブラックリストルールの有効化または無効化
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSQLファイアウォールタブで、管理するルールを見つけてオンにする有効化 /無効化.
説明ルールリストで複数のルールを選択し、[有効化] または [無効化] をクリックして、ルールを一括有効化または無効化できます。
では、有効化または無効にするメッセージ, クリックOK.
ブラックリストルールの変更
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
[SQLファイアウォール] タブで、管理するルールを見つけ、[操作] 列の [変更] をクリックします。 [ルールの変更] ダイアログボックスで、ビジネス要件に基づいてパラメーターを変更します。 パラメーターの詳細については、「ブラックリストルールの追加」をご参照ください。
説明ルールを変更するとき、ルール名を変更することはできません。
クリックOK.
PolarDBコンソールで、カスタムパラメータ化SQLモードで作成されたルールのパラメータ化SQL文とカスタムSQLモードで作成されたルールのSQL文を変更することはできません。 テーブルからSQL文を削除してから、再度文を追加する必要があります。
ブラックリストルールの削除
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSQLファイアウォールタブで、管理するルールを見つけて、をクリックします。削除で、アクション列を作成します。
説明ルールリストで複数のルールを選択し、[削除] をクリックしてルールを一括削除できます。
では、削除メッセージ, クリック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
文を実行してテーブルを削除しないでください。