MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
次の各セクションでは、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_name
mode: 文字列としてのプロファイルの操作モード。 許可されるモード値は、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_denied
Firewall_access_granted
Firewall_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 |
| デフォルト値 | ON |
MySQL Enterprise Firewall が有効 (デフォルト) か無効か。
| コマンド行形式 | --mysql-firewall-trace[={OFF|ON}] |
|---|---|
| システム変数 | mysql_firewall_trace |
| スコープ | グローバル |
| 動的 | はい |
SET_VAR ヒントの適用 |
いいえ |
| 型 | Boolean |
| デフォルト値 | OFF |
MySQL 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 のユーザー定義関数 を参照)。