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_name
NULL
以外のアカウントです:
値が 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_name
NULL
以外のアカウントです:
値が 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_name
NULL
以外のアカウントです:
値が 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 のユーザー定義関数 を参照)。