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

PolarDB:概要

最終更新日:May 28, 2024

PolarDB PolarProxyは、SQLファイアウォール機能を提供します。 この機能では、ブラックリストとホワイトリストのルールを設定した後に許可およびブロックされるSQL文を識別できます。 このトピックでは、SQLファイアウォール機能について説明します。

背景情報

データベースに不正にアクセスすると、攻撃者はデータベース内のすべてのデータを取得する可能性があります。 通常のO&M操作でも、WHERE句を含まないDELETEステートメントを実行すると、データベース内のテーブルが誤って削除されることがあります。

このようなリスクの高い操作を防ぐために、PolarProxyにはSQLファイアウォール機能があります。これにより、ブラックリストとホワイトリストのルールを設定して、SQLステートメントを許可およびブロックできます。 次の図は、SQLファイアウォール機能の動作を示しています。

image

前提条件

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文のみが許可されます。 詳細については、「ホワイトリストルールの設定」をご参照ください。