PolarDB コンソールでは、ホワイトリストルールの追加、有効化、無効化が可能です。 また、既存のルールを変更または削除することもできます。 このトピックでは、ホワイトリストルールとその管理手順について説明します。
ホワイトリストルール
ホワイトリストルールを設定すると、ホワイトリストにない SQL ステートメントはブロックされるか、アラートがトリガーされます。このモードは、主要な業務で使用されるアカウントを保護します。これにより、これらのアカウントは業務で使用される SQL ステートメントのみを実行でき、他のすべての SQL ステートメントはブロックされます。業務では多くの SQL ステートメントが使用される場合があり、それらを個別に入力するのは時間がかかることがあります。効率を向上させるために、プロキシは次の 3 つのホワイトリストモードを提供します。
-
[トレーニングモード]:プロキシは SQL ステートメントを収集しますが、記録もブロックもしません。
-
[検出モード]:ホワイトリストにない SQL ステートメントが検出されると、プロキシはそれを記録しますが、ブロックはしません。
-
[保護モード]:ホワイトリストにない SQL ステートメントが検出されると、プロキシはそれをブロックして記録します。
また、コンソールで複数のホワイトリストを設定することもできます。各ホワイトリストは、異なるアカウントを使用してトレーニングを行うことができます。[検出モード]と[保護モード]を有効にした後、各ホワイトリストが適用されるアカウントを指定することもできます。
ホワイトリストルールの追加
- PolarDB コンソールにログインします。
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
-
左側メニューで、 を選択します。
-
SQL ファイアウォール タブで、左側にある 追加 をクリックします。
-
ルールの作成 ダイアログボックスで、使用するホワイトリストモードに応じてパラメータを設定します。
表 1. SQL ファイアウォールルールのパラメータ
パラメータ名
必須
説明
[基本情報]
[ルール名]
はい
SQL ファイアウォールルールの名前。名前は次の要件を満たす必要があります。
-
英数字で構成する必要があります。
-
30 文字以内にする必要があります。
[説明]
いいえ
ルールを管理しやすくするための説明です。
説明64 文字以内にする必要があります。
[エンドポイント]
はい
ルールが適用されるエンドポイントです。
[設定]
[ルールタイプ]
はい
追加するルールのタイプです。ホワイトリストルール を選択します。
[現在のモード]
いいえ
SQL ファイアウォールルールのモードです。有効な値は次のとおりです。
-
[トレーニングモード]:SQL ステートメントを収集しますが、記録もブロックもしません。
-
[検出モード]:ホワイトリストにない SQL ステートメントが検出された場合、記録はされますがブロックはされません。
-
[保護モード]:ホワイトリストにない SQL ステートメントが検出された場合、記録され、ブロックされます。
[データベースアカウント名]
いいえ
ルールを適用するデータベースアカウントです。次のオプションがサポートされています。
-
すべてのアカウント:ルールはクラスター内のすべてのデータベースアカウントに適用されます。右側のテキストボックスに何も入力する必要はありません。
-
含む:ルールは指定されたデータベースアカウントにのみ適用されます。右側のテキストボックスに 1 つ以上のデータベースアカウント名を入力する必要があります。複数のアカウントはコンマ (,) で区切ります。
-
含まない:ルールは、指定されたものを除くクラスター内のすべてのデータベースアカウントに適用されます。右側のテキストボックスに 1 つ以上のデータベースアカウント名を入力する必要があります。複数のアカウントはコンマ (,) で区切ります。
説明テキストボックスに入力するデータベースアカウント名は、次のいずれかの形式で入力する必要があります。
-
例:
account_name。user。 -
例:
account_name@full_IP_address。user@10.0.0.0。
-
-
ルールを設定した後、OK をクリックします。
-
選択したモードの手順に従います。
-
現在のモード が トレーニングモード に設定されている場合は、次の手順を実行します。
-
前の手順で指定した データベースアカウント名 を使用して、データベースのエンドポイントに接続します。
-
アカウントを使用して、ホワイトリストに追加する業務 SQL ステートメントを実行します。プロキシは SQL ステートメントをパラメータ化し、データベースのホワイトリストに保存します。例:
update t set k = 2 where id = 2;パラメータ化された SQL 文は次のようになります。
update t set k = ? where id = ??は任意の値を表します。パラメータ化された SQL 文update t set k = ? where id = ?が収集され、ホワイトリストに追加されます。
説明また、任意のホワイトリストモードで、業務 SQL ステートメントの前に
ヒントコマンドhint(/* store_to_whitelist */)を追加することもできます。このコマンドは SQL ステートメントをパラメータ化し、ホワイトリストに追加します。 -
-
現在のモード が 検出モード に設定されている場合は、次の手順を実行します。
-
前の手順で指定した データベースアカウント名 を使用して、データベースのエンドポイントに接続します。
-
アカウントを使用して業務 SQL ステートメントを実行し、まだホワイトリストに追加されていないステートメントがあるかどうかを確認します。例:
update t set k = 2 where k = 2この SQL ステートメントがホワイトリストにない場合、プロキシは実行を許可し、それを記録します。実行結果は次のとおりです。
Query OK, 0 rows affected (0.03 sec) Rows matched:1 Changed: 0 Warnings:0
-
-
現在のモード が 保護モード に設定されている場合は、次の手順を実行します。
-
前の手順で指定した データベースアカウント名 を使用して、データベースのエンドポイントに接続します。
-
アカウントを使用して業務 SQL ステートメントを実行します。例:
select id from t where id = 1;この SQL ステートメントがホワイトリストにない場合、プロキシはそれを記録してブロックします。実行結果は次のとおりです:
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.
-
-
-
業務を更新するたびに SQL ステートメントをトレーニングする必要があります。そうしないと、新しい業務 SQL ステートメントは実行できません。
-
コンソールで複数のホワイトリストを追加できます。各ホワイトリストは、異なるアカウントを使用してトレーニングを行うことができます。検出モード と 保護モード を有効にした後、各ホワイトリストが適用されるアカウントを指定することもできます。
ホワイトリストルールの有効化または無効化
- PolarDB コンソールにログインします。
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
-
左側メニューで、 を選択します。
-
[SQL ファイアウォール] タブで、有効化または無効化するルールを見つけ、有効化/無効化 スイッチをクリックします。
説明リストで複数のルールを選択し、リストの下部にある 有効化 または 無効 をクリックして、一括で有効化または無効化することもできます。
-
表示される 有効化 または 無効 ダイアログボックスで、確定 をクリックします。
ホワイトリストルールの変更
- PolarDB コンソールにログインします。
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
-
左側メニューで、 を選択します。
-
SQL ファイアウォール タブで、変更するルールを探し、操作 列の Modify をクリックします。表示された ルールの変更 ダイアログボックスで、必要に応じてルールパラメータを変更します。パラメータの詳細については、「ホワイトリストルールの追加」をご参照ください。
説明ルールを変更する際、ルール名 は変更できません。
-
ルールを変更した後、OK をクリックします。
コンソールでは、パラメータ化された SQL 文を変更することはできません。proxy_auditing.sql_list データベーステーブルからパラメータ化された SQL 文を削除し、再度追加することしかできません。
ホワイトリストルールの削除
- PolarDB コンソールにログインします。
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
-
左側メニューで、 を選択します。
-
SQL ファイアウォール タブで、削除するルールを探し、操作 列の 削除 をクリックします。
説明ルールリストで複数の対象ルールを選択し、リストの下にある 削除 をクリックして、ルールを一括で削除することもできます。
-
表示される 削除 ダイアログボックスで、OK をクリックします。