PolarDB PolarProxyは、SQLファイアウォール機能を提供します。 この機能では、ブラックリストとホワイトリストのルールを設定した後に許可およびブロックされるSQL文を識別できます。 このトピックでは、SQLファイアウォール機能について説明します。
背景情報
データベースに不正にアクセスすると、攻撃者はデータベース内のすべてのデータを取得する可能性があります。 通常のO&M操作でも、WHERE
句を含まないDELETEステートメントを実行すると、データベース内のテーブルが誤って削除されることがあります。
このようなリスクの高い操作を防ぐために、PolarProxyにはSQLファイアウォール機能があります。これにより、ブラックリストとホワイトリストのルールを設定して、SQLステートメントを許可およびブロックできます。 次の図は、SQLファイアウォール機能の動作を示しています。
前提条件
PolarDB PolarProxyはV2.5.1以降です。 PolarProxyの現在のバージョンを表示してアップグレードする方法の詳細については、「マイナーバージョンの更新」をご参照ください。
制限事項
SQLファイアウォール機能を有効にすると、現在のクラスターに
database:proxy_auditing
という名前のデータベースと、sql_list
およびorg_sql_list
という名前の2つのテーブルが作成されます。 sql_listテーブルはパラメータ化されたSQL文をブラックリストとホワイトリストのルールに保存し、org_sql_listテーブルはSQL文をブラックリストのルールに保存します。 各テーブルには、最大500,000のSQL文を保存できます。初めてルールを作成するときは、新しい接続にのみルールが適用されます。 ルールが変更されると、5秒後に既存の接続に有効になります。
カスタムパラメータ化SQLモードまたはカスタムSQLモードで作成されたブラックリストまたはホワイトリストルールのSQL文は、ルールの作成時にブロックされませんが、ルールの作成後にブロックされます。
同じアカウントとエンドポイントでは、ブラックリストルールとホワイトリストルールの両方を有効にすることはできません。
複数文はサポートされていません。 すべての複数文がブロックされます。
PolarProxyで解析できないSQL文はファイアウォール監査ログに記録されますが、ブロックされません。 たとえば、SELECTステートメントに構文エラーが含まれている場合、そのステートメントはブロックされません。
カスタムパラメータ化SQLモードまたはカスタムSQLモードで作成されたブラックリストまたはホワイトリストルールのSQL文は、ブラックリストまたはホワイトリストルールが無効または削除されても保持されます。 ブラックリストまたはホワイトリストルールが再び有効になっている場合でも、ルールは同じアカウントに適用されます。 ブラックリストまたはホワイトリストルールを完全に削除する場合は、スーパー管理者アカウントを使用してクラスターのプライマリノードに接続し、SQLステートメントを削除できます。
ブラックリストとホワイトリストのルールは、一般的なSQLコマンド (3) またはPREPAREコマンド (22) のみをブロックできます。 他のコマンドはブロックされません。 たとえば、MySQLコマンドラインを使用してクラスターに接続した後、MySQLコマンドラインによってUSE db; ステートメントがCOM_INIT_DB(1) コマンドに変換されます。 このコマンドはブロックされません。
パフォーマンスへの影響
ブラックリストルール機能を有効にすると、10% 未満のパフォーマンスオーバーヘッドが発生します。
ホワイトリストルール機能が有効になっていて、アラートログが生成されない場合、約10% のパフォーマンスオーバーヘッドが発生します。
実行されたすべてのSQL文に対してアラートログが生成されると、通常のビジネス条件ではリクエストレートが20% 30% に減少します。 ただし、すべてのSQL文がアラートログをトリガーできるわけではありません。 一部のSQL文のみがアラートログをトリガーできます。 したがって、通常のビジネス条件では、ブラックリストまたはホワイトリストルール機能はリクエスト率に大きな影響を与えません。
ブラックリストまたはホワイトリストのルール機能
ブラックリストルール機能: ブラックリストルールを設定して、指定した種類のSQL文または特定のSQL文をブロックできます。 ブラックリストルールに追加されたSQL文が実行されると、PolarProxyはSQL文をブロックします。 詳細については、「」をご参照ください。
ホワイトリストルール機能: ビジネス関連のSQL文は、ホワイトリストルールで許可される前にトレーニングされます。 保護モードを有効にすると、ホワイトリストルールに追加されたSQL文のみが許可されます。 詳細については、「ホワイトリストルールの設定」をご参照ください。