このページは機械翻訳したものです。
次の各セクションでは、MySQL Enterprise Firewall 要素のリファレンスを示します:
MySQL Enterprise Firewall では、アカウントごとおよびグループごとにプロファイル情報が保持されます。 mysql システムデータベース内のテーブルを永続記憶域に使用し、INFORMATION_SCHEMA テーブルまたは「パフォーマンススキーマ」テーブルを使用してメモリー内にキャッシュされたデータを表示します。 有効にすると、ファイアウォールはキャッシュされたデータに基づいて操作上の決定を行います。
ファイアウォールアカウントプロファイルテーブル
MySQL Enterprise Firewall では、永続記憶域の mysql システムデータベースのテーブルおよび INFORMATION_SCHEMA テーブルを使用してアカウントプロファイル情報を保持し、メモリー内にキャッシュされたデータのビューを提供します。
各 mysql システムデータベーステーブルにアクセスできるのは、そのテーブルに対する SELECT 権限を持つアカウントのみです。 INFORMATION_SCHEMA テーブルには、誰でもアクセスできます。
mysql.firewall_users テーブルには、登録済ファイアウォールアカウントプロファイルの名前と操作モードがリストされます。 テーブルには次のカラムがあります (対応する INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS テーブルには類似したカラムがありますが、必ずしも同一ではありません):
-
USERHOSTアカウントプロファイル名。 各アカウント名の形式は
です。user_name@host_name -
MODEプロファイルの現在の操作モード。 許可されるモード値は、
OFF,DETECTING,PROTECTING,RECORDINGおよびRESETです。 意味の詳細は、ファイアウォール操作の概念 を参照してください。
mysql.firewall_whitelist テーブルには、登録済ファイアウォールアカウントプロファイルの許可リストルールがリストされます。 テーブルには次のカラムがあります (対応する INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST テーブルには類似したカラムがありますが、必ずしも同一ではありません):
-
USERHOSTアカウントプロファイル名。 各アカウント名の形式は
です。user_name@host_name -
RULEプロファイルの許容可能なステートメントパターンを示す正規化されたステートメント。 プロファイル許可リストは、そのルールの和集合です。
-
IDテーブルの主キーである整数カラム。 このカラムは、MySQL 8.0.12 で追加されました。
ファイアウォールグループプロファイルテーブル
MySQL 8.0.23 の時点では、MySQL Enterprise Firewall は、永続記憶域用の mysql システムデータベースのテーブルおよび「パフォーマンススキーマ」テーブルを使用してグループプロファイル情報を保持し、メモリー内にキャッシュされたデータへのビューを提供します。
各システムおよび「パフォーマンススキーマ」テーブルには、そのシステムおよび「パフォーマンススキーマ」テーブルに対する SELECT 権限を持つアカウントのみがアクセスできます。
mysql.firewall_groups テーブルには、登録されているファイアウォールグループプロファイルの名前と動作モードが一覧表示されます。 テーブルには次のカラムがあります (対応するパフォーマンススキーマ firewall_groups テーブルには類似していますが、必ずしも同一ではありません):
-
NAMEグループプロファイル名。
-
MODEプロファイルの現在の操作モード。 許可されるモード値は、
OFF,DETECTING,PROTECTINGおよびRECORDINGです。 意味の詳細は、ファイアウォール操作の概念 を参照してください。 -
USERHOSTプロファイルが
RECORDINGモードの場合に使用される、グループプロファイルのトレーニングアカウント。 値は、NULLまたは形式のuser_name@host_nameNULL以外のアカウントです:値が
NULLの場合、ファイアウォールはグループのメンバーであるアカウントから受信したステートメントの許可リストルールを記録します。値が
NULL以外の場合、ファイアウォールは、指定されたアカウント (グループのメンバーである必要があります) から受信したステートメントの許可リストルールのみを記録します。
mysql.firewall_group_allowlist テーブルには、登録されているファイアウォールグループプロファイルの許可リストルールが一覧表示されます。 テーブルには次のカラムがあります (対応するパフォーマンススキーマ firewall_group_allowlist テーブルには類似していますが、必ずしも同一ではありません):
-
NAMEグループプロファイル名。
-
RULEプロファイルの許容可能なステートメントパターンを示す正規化されたステートメント。 プロファイル許可リストは、そのルールの和集合です。
-
IDテーブルの主キーである整数カラム。
mysql.firewall_membership テーブルには、登録済のファイアウォールグループプロファイルのメンバー (アカウント) がリストされます。 テーブルには次のカラムがあります (対応するパフォーマンススキーマ firewall_membership テーブルには類似していますが、必ずしも同一ではありません):
-
GROUP_IDグループプロファイル名。
-
MEMBER_IDプロファイルのメンバーであるアカウントの名前。
MySQL Enterprise Firewall ストアドプロシージャは、ファイアウォールへのプロファイルの登録、操作モードの確立、キャッシュと永続記憶域間のファイアウォールデータの転送の管理などのタスクを実行します。 これらのプロシージャは、下位レベルのタスク用の API を提供するユーザー定義関数 (UDF) を起動します。
ファイアウォールストアドプロシージャは、mysql システムデータベースに作成されます。 ファイアウォールストアドプロシージャを起動するには、mysql がデフォルトのデータベースである間に起動するか、プロシージャ名をデータベース名で修飾します。 例:
CALL mysql.sp_set_firewall_mode(user, mode);
ファイアウォールアカウントプロファイルのストアドプロシージャー
次のストアドプロシージャは、ファイアウォールアカウントプロファイルに対して管理操作を実行します:
-
sp_reload_firewall_rules(user)このストアドプロシージャは、個々のアカウントプロファイルのファイアウォール操作を制御します。 この手順では、ファイアウォール UDF を使用して、
mysql.firewall_whitelistテーブルに格納されているルールからアカウントプロファイルのメモリー内ルールをリロードします。引数:
user: 影響を受けるアカウントプロファイルの名前 (形式の文字列)。user_name@host_name
例:
CALL mysql.sp_reload_firewall_rules('fwuser@localhost');警告このプロシージャは、永続ストレージからリロードする前にアカウントプロファイルのインメモリー許可リストルールをクリアし、プロファイルモードを
OFFに設定します。sp_reload_firewall_rules()コールの前にプロファイルモードがOFFでなかった場合は、ルールのリロード後にsp_set_firewall_mode()を使用して以前のモードをリストアします。 たとえば、プロファイルがPROTECTINGモードであった場合、sp_reload_firewall_rules()をコールした後で true でなくなり、それを明示的にPROTECTINGに再度設定する必要があります。 -
sp_set_firewall_mode(user,mode)このストアドプロシージャは、ファイアウォールにプロファイルを登録した後 (まだ登録されていない場合)、ファイアウォールアカウントプロファイルの操作モードを確立します。 この手順では、必要に応じてファイアウォール UDF を呼び出して、キャッシュと永続ストレージの間でファイアウォールデータを転送することもできます。 このプロシージャは、
mysql_firewall_modeシステム変数がOFFの場合でもコールできますが、プロファイルのモードを設定しても、ファイアウォールが有効になるまで操作上の影響はありません。引数:
user: 影響を受けるアカウントプロファイルの名前 (形式の文字列)。user_name@host_namemode: 文字列としてのプロファイルの操作モード。 許可されるモード値は、OFF,DETECTING,PROTECTING,RECORDINGおよびRESETです。 意味の詳細は、ファイアウォール操作の概念 を参照してください。
アカウントプロファイルを任意のモードに切り替えますが、
RECORDINGはファイアウォールキャッシュデータを、基礎となる永続的な記憶域を提供するmysqlシステムデータベーステーブルと同期します。 モードをOFFからRECORDINGに切り替えると、mysql.firewall_whitelistテーブルからキャッシュに allowlist がリロードされます。アカウントプロファイルに空の許可リストがある場合、そのモードは
PROTECTINGに設定できません。これは、プロファイルがすべてのステートメントを拒否し、効果的にアカウントによるステートメントの実行を禁止するためです。 このようなモード設定の試行に応じて、ファイアウォールは SQL エラーとしてではなく結果セットとして返される診断メッセージを生成します:mysql> CALL mysql.sp_set_firewall_mode('a@b','PROTECTING'); +----------------------------------------------------------------------+ | set_firewall_mode(arg_userhost, arg_mode) | +----------------------------------------------------------------------+ | ERROR: PROTECTING mode requested for a@b but the whitelist is empty. | +----------------------------------------------------------------------+
ファイアウォールグループプロファイルのストアドプロシージャ
これらのストアドプロシージャーは、ファイアウォールグループプロファイルに対して管理操作を実行します:
-
sp_firewall_group_delist(group,user)このストアドプロシージャは、ファイアウォールグループプロファイルからアカウントを削除します。
コールが成功した場合、グループメンバーシップの変更は、インメモリーキャッシュと永続記憶域の両方に対して行われます。
引数:
group: 影響を受けるグループプロファイルの名前。user: 削除するアカウント (形式の文字列)。user_name@host_name
例:
CALL sp_firewall_group_delist('g', 'fwuser@localhost');このプロシージャは、MySQL 8.0.23 で追加されました。
-
sp_firewall_group_enlist(group,user)このストアドプロシージャは、ファイアウォールグループプロファイルにアカウントを追加します。 アカウントをグループに追加する前に、アカウント自体をファイアウォールに登録する必要はありません。
コールが成功した場合、グループメンバーシップの変更は、インメモリーキャッシュと永続記憶域の両方に対して行われます。
引数:
group: 影響を受けるグループプロファイルの名前。user:形式の文字列として追加するアカウント。user_name@host_name
例:
CALL sp_firewall_group_enlist('g', 'fwuser@localhost');このプロシージャは、MySQL 8.0.23 で追加されました。
-
sp_reload_firewall_group_rules(group)このストアドプロシージャは、個々のグループプロファイルのファイアウォール操作を制御します。 この手順では、ファイアウォール UDF を使用して、
mysql.firewall_group_allowlistテーブルに格納されているルールからグループプロファイルのインメモリールールをリロードします。引数:
group: 影響を受けるグループプロファイルの名前。
例:
CALL sp_reload_firewall_group_rules('myapp');警告このプロシージャは、永続記憶域からリロードする前にグループプロファイルインメモリー許可リストルールをクリアし、プロファイルモードを
OFFに設定します。sp_reload_firewall_group_rules()コールの前にプロファイルモードがOFFでなかった場合は、ルールのリロード後にsp_set_firewall_group_mode()を使用して以前のモードをリストアします。 たとえば、プロファイルがPROTECTINGモードであった場合、sp_reload_firewall_group_rules()をコールした後で true でなくなり、それを明示的にPROTECTINGに再度設定する必要があります。このプロシージャは、MySQL 8.0.23 で追加されました。
-
sp_set_firewall_group_mode(group,mode)このストアドプロシージャは、ファイアウォールにプロファイルを登録した後、ファイアウォールグループプロファイルの動作モードを確立します (まだ登録されていない場合)。 この手順では、必要に応じてファイアウォール UDF を呼び出して、キャッシュと永続ストレージの間でファイアウォールデータを転送することもできます。 このプロシージャは、
mysql_firewall_modeシステム変数がOFFの場合でもコールできますが、プロファイルのモードを設定しても、ファイアウォールが有効になるまで操作上の影響はありません。プロファイルが以前に存在していた場合、その記録制限は変更されません。 制限を設定またはクリアするには、かわりに
sp_set_firewall_group_mode_and_user()をコールします。引数:
group: 影響を受けるグループプロファイルの名前。mode: 文字列としてのプロファイルの操作モード。 許可されるモード値は、OFF,DETECTING,PROTECTINGおよびRECORDINGです。 意味の詳細は、ファイアウォール操作の概念 を参照してください。
例:
CALL sp_set_firewall_group_mode('myapp', 'PROTECTING');このプロシージャは、MySQL 8.0.23 で追加されました。
-
sp_set_firewall_group_mode_and_user(group,mode,user)このストアドプロシージャは、
sp_set_firewall_group_mode()と同様に、グループをファイアウォールに登録し、その操作モードを確立しますが、グループがRECORDINGモードの場合に使用するトレーニングアカウントも指定します。引数:
group: 影響を受けるグループプロファイルの名前。mode: 文字列としてのプロファイルの操作モード。 許可されるモード値は、OFF,DETECTING,PROTECTINGおよびRECORDINGです。 意味の詳細は、ファイアウォール操作の概念 を参照してください。-
user: プロファイルがRECORDINGモードの場合に使用される、グループプロファイルのトレーニングアカウント。 値は、NULLまたは形式のuser_name@host_nameNULL以外のアカウントです:値が
NULLの場合、ファイアウォールはグループのメンバーであるアカウントから受信したステートメントの許可リストルールを記録します。値が
NULL以外の場合、ファイアウォールは、指定されたアカウント (グループのメンバーである必要があります) から受信したステートメントの許可リストルールのみを記録します。
例:
CALL sp_set_firewall_group_mode_and_user('myapp', 'RECORDING', 'myapp_user1@localhost');このプロシージャは、MySQL 8.0.23 で追加されました。
MySQL Enterprise Firewall ユーザー定義関数 (UDF) は、ファイアウォールキャッシュを基礎となるシステムテーブルと同期化するなどの下位レベルのタスク用の API を提供します。
通常の操作では、これらの UDF はユーザーによって直接ではなく、ファイアウォールストアドプロシージャによって起動されます。 そのため、これらの UDF の説明には、引数や戻り型に関する情報など、通常の詳細は含まれません。
ファイアウォールアカウントプロファイルのユーザー定義関数
次の UDF は、ファイアウォールアカウントプロファイルに対する管理操作を実行します:
-
read_firewall_users(user,mode)この集計 UDF は、
mysql.firewall_usersテーブルのSELECTステートメントを使用してファイアウォールアカウントプロファイルキャッシュを更新します。FIREWALL_ADMIN権限または非推奨のSUPER権限が必要です。例:
SELECT read_firewall_users('fwuser@localhost', 'RECORDING') FROM mysql.firewall_users; -
read_firewall_whitelist(user,rule)この集計 UDF は、
mysql.firewall_whitelistテーブルのSELECTステートメントを使用して、指定されたアカウントプロファイルの記録済ステートメントキャッシュを更新します。FIREWALL_ADMIN権限または非推奨のSUPER権限が必要です。例:
SELECT read_firewall_whitelist('fwuser@localhost', fw.rule) FROM mysql.firewall_whitelist AS fw WHERE USERHOST = 'fwuser@localhost'; -
この UDF は、アカウントプロファイルキャッシュを管理し、プロファイル操作モードを確立します。
FIREWALL_ADMIN権限または非推奨のSUPER権限が必要です。例:
SELECT set_firewall_mode('fwuser@localhost', 'RECORDING');
ファイアウォールグループプロファイルのユーザー定義関数
これらの UDF は、ファイアウォールグループプロファイルに対して管理操作を実行します:
-
firewall_group_delist(group,user)この UDF は、グループプロファイルからアカウントを削除します。
FIREWALL_ADMIN権限が必要です。例:
SELECT firewall_group_delist('g', 'fwuser@localhost');この関数は、MySQL 8.0.23 で追加されました。
-
firewall_group_enlist(group,user)この UDF は、アカウントをグループプロファイルに追加します。
FIREWALL_ADMIN権限が必要です。アカウントをグループに追加する前に、アカウント自体をファイアウォールに登録する必要はありません。
例:
SELECT firewall_group_enlist('g', 'fwuser@localhost');この関数は、MySQL 8.0.23 で追加されました。
-
read_firewall_group_allowlist(group,rule)この集計 UDF は、
mysql.firewall_group_allowlistテーブルのSELECTステートメントを介して、指定されたグループプロファイルの記録されたステートメントキャッシュを更新します。FIREWALL_ADMIN権限が必要です。例:
SELECT read_firewall_group_allowlist('my_fw_group', fgw.rule) FROM mysql.firewall_group_allowlist AS fgw WHERE NAME = 'my_fw_group';この関数は、MySQL 8.0.23 で追加されました。
-
read_firewall_groups(group,mode,user)この集計 UDF は、
mysql.firewall_groupsテーブルのSELECTステートメントを介してファイアウォールグループプロファイルキャッシュを更新します。FIREWALL_ADMIN権限が必要です。例:
SELECT read_firewall_groups('g', 'RECORDING', 'fwuser@localhost') FROM mysql.firewall_groups;この関数は、MySQL 8.0.23 で追加されました。
-
set_firewall_group_mode(group,mode[,user])この UDF は、グループプロファイルキャッシュを管理し、プロファイル操作モードを確立し、オプションでプロファイルトレーニングアカウントを指定します。
FIREWALL_ADMIN権限が必要です。オプションの
user引数が指定されていない場合、プロファイルの以前のuser設定は変更されません。 設定を変更するには、3 番目の引数を指定して UDF を呼び出します。オプションの
user引数が指定されている場合は、プロファイルがRECORDINGモードのときに使用される、グループプロファイルのトレーニングアカウントを指定します。 値は、NULLまたは形式のuser_name@host_nameNULL以外のアカウントです:値が
NULLの場合、ファイアウォールはグループのメンバーであるアカウントから受信したステートメントの許可リストルールを記録します。値が
NULL以外の場合、ファイアウォールは、指定されたアカウント (グループのメンバーである必要があります) から受信したステートメントの許可リストルールのみを記録します。
例:
SELECT set_firewall_group_mode('g', 'DETECTING');この関数は、MySQL 8.0.23 で追加されました。
ファイアウォールのその他のユーザー定義関数
次の UDF は、その他のファイアウォール操作を実行します:
-
この UDF は、いくつかのファイアウォールステータス変数を 0 にリセットします:
Firewall_access_deniedFirewall_access_grantedFirewall_access_suspicious
この UDF には、
FIREWALL_ADMIN権限または非推奨のSUPER権限が必要です。例:
SELECT mysql_firewall_flush_status(); -
この UDF は、SQL ステートメントを許可リストルールに使用されるダイジェストフォームに正規化します。
FIREWALL_ADMIN権限または非推奨のSUPER権限が必要です。例:
SELECT normalize_statement('SELECT * FROM t1 WHERE c1 > 2');注記STATEMENT_DIGEST_TEXT()SQL 関数を使用して、ファイアウォールコンテキストの外部で同じダイジェスト機能を使用できます。
MySQL Enterprise Firewall は、次のシステム変数をサポートしています。 これらを使用してファイアウォール操作を構成します。 これらの変数は、ファイアウォールがインストールされていないかぎり使用できません (セクション6.4.7.2「MySQL Enterprise Firewall のインストールまたはアンインストール」 を参照)。
-
コマンド行形式 --mysql-firewall-mode[={OFF|ON}]システム変数 mysql_firewall_modeスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONMySQL Enterprise Firewall が有効 (デフォルト) か無効か。
-
コマンド行形式 --mysql-firewall-trace[={OFF|ON}]システム変数 mysql_firewall_traceスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFMySQL Enterprise Firewall トレースが有効か無効か (デフォルト)。
mysql_firewall_traceが有効な場合、PROTECTINGモードでは、ファイアウォールは拒否されたステートメントをエラーログに書き込みます。
MySQL Enterprise Firewall では、次のステータス変数がサポートされます。 これらを使用して、ファイアウォールの操作ステータスに関する情報を取得します。 これらの変数は、ファイアウォールがインストールされていないかぎり使用できません (セクション6.4.7.2「MySQL Enterprise Firewall のインストールまたはアンインストール」 を参照)。 MYSQL_FIREWALL プラグインがインストールされるか、サーバーが起動されるたびに、ファイアウォールステータス変数は 0 に設定されます。 これらの多くは、mysql_firewall_flush_status() UDF によってゼロにリセットされます (MySQL Enterprise Firewall のユーザー定義関数 を参照)。