PolarDBコンソールで、クラスターのホワイトリストルールを作成、削除、有効化、無効化、または変更できます。 このトピックでは、ホワイトリストルールとホワイトリストルールの設定方法について説明します。
ホワイトリストルール
ホワイトリストルールを設定すると、ホワイトリストルールに追加されていないSQL文はブロックまたは警告されます。 これにより、ビジネスのアカウントを保護できます。 このアカウントはビジネス関連のSQL文のみを実行し、ビジネスに関係のないSQL文は実行しません。 実際の業務では複数のSQL文が使用される場合があり、1つのSQL文を入力するには一定の時間が必要です。 効率とユーザーエクスペリエンスを向上させるために、PolarProxyには次のホワイトリストモードがあります。
トレーニングモード: PolarProxyはSQL文のみを収集し、SQL文をブロックしたりアラートを生成したりしません。
検出モード: PolarProxyは、ステートメントを検出したときにホワイトリストルールに追加されないSQLステートメントを記録します。 ただし、PolarProxyはこのようなSQL文をブロックしません。
保護モード: PolarProxyがステートメントを検出したときにホワイトリストルールに追加されないSQLステートメントを記録およびブロックします。
PolarDBコンソールで複数のホワイトリストルールを設定することもできます。 個別のアカウントを使用して、各ホワイトリストルールをトレーニングできます。 検出モードまたは保護モードを有効にした後、各ホワイトリストルールが適用されるアカウントを指定することもできます。
ホワイトリストルールの作成
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
の左上隅にSQLファイアウォールタブをクリックします。追加.
では、ルールの作成選択したモードに基づいて、次の表に示すパラメーターを設定します。
表 1 ホワイトリストルールのパラメーター
パラメーター
必須
説明
基本情報
ルール名
可
ルールの名前を設定します。 名前の条件は次のとおりです。
数字と文字を含めることができます。
長さは最大30文字です。
説明
任意
ルールの説明。
説明説明の長さは最大64文字です。
Endpoint
可
現在のルールが適用されるエンドポイント。
設定
ルールタイプ
可
ルールのタイプ。 [ホワイトリストルール] を選択します。
現在のモード
任意
ルールのモード。 有効な値:
トレーニングモード: SQL文を収集しますが、SQL文をブロックしたり、アラートを生成したりしません。
検出モード: 検出されたときにホワイトリストルールに追加されないSQL文を記録しますが、そのようなSQL文はブロックしません。
保護モード: ステートメントが検出されたときにホワイトリストルールに追加されないSQLステートメントを記録およびブロックします。
データベースアカウント名
任意
ルールが適用されるデータベースアカウントの名前。 有効な値:
すべてのアカウント: このルールは、クラスター内のすべてのデータベースアカウントに適用されます。 [すべてのアカウント] オプションの右側のフィールドは空のままにすることができます。
含む: このルールは、指定されたデータベースアカウントにのみ適用されます。 [含める] オプションの右側のフィールドに、少なくとも1つのデータベースアカウント名を入力する必要があります。 複数のデータベースアカウント名はコンマ (,) で区切ります。
含まない: このルールは、指定されたデータベースアカウントを除くクラスター内のすべてのデータベースアカウントに適用されます。 除外オプションの右側のフィールドに、少なくとも1つのデータベースアカウント名を入力する必要があります。 複数のデータベースアカウント名はコンマ (,) で区切ります。
説明データベースアカウント名は、次のいずれかの形式である必要があります。
ユーザー名
。 例:user
。ユーザー名 @ IPアドレス
。 例:user@10.0.0.0
。
クリックOK.
選択したルールのモードに基づいて手順を実行します。
[現在のモード] パラメーターを [トレーニングモード] に設定した場合、次の手順を実行します。
事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。
このアカウントを使用して、ホワイトリストルールに追加されたビジネス関連のSQL文を実行します。 PolarProxyはSQL文をパラメータ化し、データベースのホワイトリストルールに文を保存します。 例:
update t set k = 2ここでid = 2;
パラメータ化されたSQL文:
更新t set k = ? どこid = ?
ステートメント内の疑問符 (
?
) は任意の値を示します。 パラメータ化されたSQL文は、t set k = ? を更新ます。 どこid = ?
はホワイトリストルールに保存されます。
説明ビジネス関連のSQLステートメントの前に、次の
hint
コマンドを追加して、ステートメントをパラメーター化し、パラメーター化されたステートメントをホワイトリストルールに追加することもできます。hint(/* store_to_whitelist */)
[現在のモード] パラメーターを [検出モード] に設定した場合、次の手順を実行します。
事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。
このアカウントを使用して、ビジネス関連のSQL文を実行します。 PolarProxyは、ホワイトリストルールに追加されていないSQL文をチェックします。 例:
update t set k = 2ここでk = 2
SQL文がホワイトリストルールに追加されていない場合、PolarProxyはSQL文を許可して記録します。 次の結果が表示されます。
クエリOK、影響を受ける0行 (0.03秒) 一致した行: 1変更: 0警告: 0
[現在のモード] パラメーターを [保護モード] に設定した場合、次の手順を実行します。
事前に定義したデータベースアカウント名を使用して、指定したデータベースエンドポイントに接続します。
このアカウントを使用して、ビジネス関連のSQL文を実行します。 例:
select id from t where id = 1;
SQL文がホワイトリストルールに追加されていない場合、PolarProxyはSQL文を記録およびブロックします。 次の結果が表示されます。
ERROR 1141 (HY000): このSQLはSQLファイアウォールによって拒否されます。 ユーザー 'xzh' @ 'x.x.x' からデータベース 'xzh' へのアクセスが拒否されました: このSQLはホワイトリストwl_testにありません。
ビジネスを更新するたびに、ビジネス関連のSQL文をトレーニングする必要があります。 それ以外の場合、SQL文は実行できません。
PolarDBコンソールで複数のホワイトリストルールを作成することもできます。 個別のアカウントを使用して、各ホワイトリストルールをトレーニングできます。 検出モードまたは保護モードを有効にした後、各ホワイトリストルールが適用されるアカウントを指定することもできます。
ホワイトリストルールの有効化または無効化
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSQLファイアウォールタブで、管理するルールを見つけてオンにする有効化 /無効化.
説明ルールリストで複数のルールを選択し、[有効化] または [無効化] をクリックして、ルールを一括有効化または無効化できます。
では、有効化または無効にするメッセージ, クリックOK.
ホワイトリストのルールの変更
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
[SQLファイアウォール] タブで、管理するルールを見つけ、[操作] 列の [変更] をクリックします。 [ルールの変更] ダイアログボックスで、ビジネス要件に基づいてパラメーターを変更します。 パラメーターの詳細については、「ホワイトリストルールの追加」をご参照ください。
説明ルールを変更するとき、ルール名を変更することはできません。
クリックOK.
PolarDBコンソールのデータベースのルールでパラメータ化されたSQL文を変更することはできません。 proxy_auditing.sql_list
テーブルからパラメーター化されたSQLステートメントを削除してから、ステートメントを再度追加する必要があります。
ホワイトリストルールの削除
にログインします。PolarDBコンソール.
左上隅で、クラスターがデプロイされているリージョンを選択します。
クラスターを見つけて、そのIDをクリックします。
左側のナビゲーションウィンドウで、 .
On theSQLファイアウォールタブで、管理するルールを見つけて、をクリックします。削除で、アクション列を作成します。
説明ルールリストで複数のルールを選択し、[削除] をクリックしてルールを一括削除できます。
では、削除メッセージ, クリックOK.