6.4.6.4 Справочник по брандмауэру MySQL Enterprise
В следующих разделах приведены справочные данные по элементам брандмауэра MySQL Enterprise:
Таблицы брандмауэра MySQL Enterprise
Брандмауэр MySQL Enterprise сохраняет информацию о профилях, используя таблицы в базе данных системы 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 5.7.23.
Хранимые процедуры брандмауэра MySQL Enterprise
Хранимые процедуры брандмауэра MySQL Enterprise выполняют задачи, такие как регистрация профилей в брандмауэре, установление их режима работы и управление передачей данных брандмауэра между кэшем и постоянным хранилищем. Эти процедуры вызывают административные функции, предоставляющие API для задач более низкого уровня.
Хранимые процедуры брандмауэра создаются в базе данных системы mysql. Для вызова хранимой процедуры брандмауэра выполните её, используя mysql в качестве базы данных по умолчанию, или укажите имя процедуры с именем базы данных. Например:
CALL mysql.sp_set_firewall_mode(user, mode);
В следующем списке описывается каждая хранимая процедура брандмауэра:
-
sp_reload_firewall_rules(user)Эта хранимая процедура предоставляет контроль над работой брандмауэра для отдельных профилей учетных записей. Процедура использует административные функции брандмауэра для перезагрузки правил в кэше для профиля учетной записи из правил, хранящихся в таблице
mysql.firewall_whitelist.Аргументы:
user: Имя затронутого профиля учетной записи в формате.user_name@host_name
Пример:
CALL mysql.sp_reload_firewall_rules('fwuser@localhost');ПредупреждениеЭта процедура очищает правила белого списка в кэше профиля учетной записи перед перезагрузкой их из постоянного хранилища и устанавливает режим профиля в
OFF. Если режим профиля не былOFFперед вызовомsp_reload_firewall_rules(), используйтеsp_set_firewall_mode()для восстановления его предыдущего режима после перезагрузки правил. Например, если профиль был в режимеPROTECTING, то после вызоваsp_reload_firewall_rules()это больше не так, и вам необходимо установить его вPROTECTINGснова явно. -
sp_set_firewall_mode(user,mode)Эта хранимая процедура устанавливает режим работы для профиля учетной записи брандмауэра после регистрации профиля в брандмауэре, если он ещё не был зарегистрирован. Процедура также вызывает административные функции брандмауэра при необходимости, чтобы передать данные брандмауэра между кэшем и постоянным хранилищем. Эту процедуру можно вызывать даже если системная переменная
mysql_firewall_modeимеет значениеOFF, хотя установка режима для профиля не оказывает операционного влияния, пока брандмауэр не включён.Аргументы:
user: Имя затронутого профиля учетной записи в формате.user_name@host_namemode: Режим работы профиля в виде строки. Разрешенные значения режима:OFF,DETECTING,PROTECTING,RECORDINGиRESET. Подробности см. в разделе Концепции брандмауэра.
Переключение профиля учетной записи на любой режим, кроме
RECORDING, синхронизирует данные кэша брандмауэра с таблицами базы данных системыmysql, которые обеспечивают постоянное хранение. Переключение режима сOFFнаRECORDINGперезагружает белый список из таблицыmysql.firewall_whitelistв кэш.Если у профиля учетной записи пустой белый список, его режим нельзя установить в
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. | +----------------------------------------------------------------------+ 1 row in set (0.02 sec) Query OK, 0 rows affected (0.02 sec)
Административные функции брандмауэра MySQL Enterprise
Административные функции брандмауэра MySQL Enterprise предоставляют API для задач низкого уровня, таких как синхронизация кэша брандмауэра с базовыми системными таблицами.
В нормальном режиме эти функции вызываются хранимыми процедурами брандмауэра, а не напрямую пользователями. По этой причине описания этих функций не содержат подробностей, таких как информация об аргументах и типах возвращаемых значений.
Функции профиля учетной записи брандмауэра
Эти функции выполняют операции управления профилями учетных записей брандмауэра:
-
read_firewall_users(user,mode)Эта агрегатная функция обновляет кэш профиля учетной записи брандмауэра с помощью оператора
SELECTв таблицеmysql.firewall_users. Требуется привилегияSUPER.Пример:
SELECT read_firewall_users('fwuser@localhost', 'RECORDING') FROM mysql.firewall_users; -
read_firewall_whitelist(user,rule)Эта агрегатная функция обновляет кэш записываемых операторов для указанного профиля учетной записи с помощью оператора
SELECTв таблицеmysql.firewall_whitelist. Требуется привилегияSUPER.Пример:
SELECT read_firewall_whitelist('fwuser@localhost', fw.rule) FROM mysql.firewall_whitelist AS fw WHERE USERHOST = 'fwuser@localhost'; -
Эта функция управляет кэшем профиля учетной записи и устанавливает режим работы профиля. Требуется привилегия
SUPER.Пример:
SELECT set_firewall_mode('fwuser@localhost', 'RECORDING');
Разнообразные функции брандмауэра
Эти функции выполняют различные операции брандмауэра:
-
Эта функция сбрасывает несколько переменных состояния брандмауэра до 0:
Эта функция требует привилегии
SUPER.Пример:
SELECT mysql_firewall_flush_status();
-
Эта функция нормализует оператор SQL в форму дайджеста, используемую для правил allowlist. Требуется привилегия
SUPER.Пример:
SELECT normalize_statement('SELECT * FROM t1 WHERE c1 > 2');
Системные переменные брандмауэра MySQL Enterprise
Брандмауэр MySQL Enterprise поддерживает следующие системные переменные. Используйте их для настройки работы брандмауэра. Эти переменные недоступны, если брандмауэр не установлен (см. Раздел 6.4.6.2, «Установка или удаление брандмауэра MySQL Enterprise»).
-
Формат командной строки --mysql-firewall-mode[={OFF|ON}]Системная переменная mysql_firewall_modeОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию ONВключен ли брандмауэр MySQL Enterprise (по умолчанию) или отключен.
-
Формат командной строки --mysql-firewall-trace[={OFF|ON}]Системная переменная mysql_firewall_traceОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFВключен ли трассировка брандмауэра MySQL Enterprise или отключен (по умолчанию). Когда
mysql_firewall_traceвключен, для режимаPROTECTINGбрандмауэр записывает отклоненные операторы в журнал ошибок.
Переменные состояния брандмауэра MySQL Enterprise
Брандмауэр MySQL Enterprise поддерживает следующие переменные состояния. Используйте их для получения информации о состоянии работы брандмауэра. Эти переменные недоступны, если брандмауэр не установлен (см. Раздел 6.4.6.2, «Установка или удаление брандмауэра MySQL Enterprise»). Переменные состояния брандмауэра устанавливаются в 0 всякий раз, когда плагин MYSQL_FIREWALL установлен или сервер запущен. Многие из них сбрасываются в ноль функцией mysql_firewall_flush_status() (см. Административные функции брандмауэра MySQL Enterprise).
-
Количество операторов, отклоненных брандмауэром MySQL Enterprise.
-
Количество операторов, принятых брандмауэром MySQL Enterprise.
-
Количество операторов, залогированных брандмауэром MySQL Enterprise как подозрительные для пользователей в режиме
DETECTING. -
Количество операторов, записанных брандмауэром MySQL Enterprise, включая дубликаты.
© 2025 Oracle
Licensed under the GPLv2 License.