8.4.7.4 Справочник по брандмауэру MySQL Enterprise
В следующих разделах приведены сведения о компонентах брандмауэра MySQL Enterprise.
Таблицы брандмауэра MySQL Enterprise
Брандмауэр MySQL Enterprise сохраняет информацию о профилях на основе группы и учетной записи. Он использует таблицы в базе данных брандмауэра для постоянного хранения и INFORMATION_SCHEMA или таблицы Performance Schema для предоставления представлений в кэшированной памяти. При включении брандмауэр основывает операционные решения на данных кэша. База данных брандмауэра может быть mysql системной базой данных или настраиваемой схемой (см. Установка брандмауэра MySQL Enterprise).
Таблицы профилей групп брандмауэра
Брандмауэр MySQL Enterprise сохраняет информацию о профилях групп, используя таблицы в базе данных брандмауэра (mysql или настраиваемой) для постоянного хранения и таблицы Performance Schema для предоставления представлений в кэшированной памяти.
К каждой системной и таблице Performance Schema могут получить доступ только учетные записи, имеющие для нее право SELECT.
Таблица перечисляет имена и режимы работы зарегистрированных профилей групп брандмауэра. Таблица содержит следующие столбцы (соответствующие таблице Performance Schema default-database.firewall_groupsfirewall_groups имеют похожие, но необязательно идентичные столбцы):
-
NAMEИмя профиля группы.
-
MODEТекущий режим работы для профиля. Разрешенные значения режимов —
OFF,DETECTING,PROTECTINGиRECORDING. Подробности о их значении см. в Концепции брандмауэра. -
USERHOSTУчетная запись обучения для профиля группы, используемая, когда профиль находится в режиме
RECORDING. Значение равноNULLили неNULLучетной записи, имеющей формат:user_name@host_nameЕсли значение
NULL, брандмауэр записывает правила разрешенного списка для заявок, полученных от любой учетной записи, являющейся членом группы.Если значение не
NULL, брандмауэр записывает правила разрешенного списка только для заявок, полученных от указанной учетной записи (которая должна быть членом группы).
Таблица перечисляет правила разрешенного списка зарегистрированных профилей групп брандмауэра. Таблица содержит следующие столбцы (соответствующие таблице Performance Schema default-database.firewall_group_allowlistfirewall_group_allowlist имеют похожие, но необязательно идентичные столбцы):
-
NAMEИмя профиля группы.
-
RULEНормализованная заявка, указывающая допустимый шаблон заявки для профиля. Список разрешенных профилей является объединением его правил.
-
IDЦелочисленный столбец, являющийся первичным ключом таблицы.
Таблица перечисляет членов (учетных записей) зарегистрированных профилей групп брандмауэра. Таблица содержит следующие столбцы (соответствующие таблице Performance Schema default-database.firewall_membershipfirewall_membership имеют похожие, но необязательно идентичные столбцы):
-
GROUP_IDИмя профиля группы.
-
MEMBER_IDИмя учетной записи, являющейся членом профиля.
Таблицы профилей учетных записей брандмауэра
Брандмауэр MySQL Enterprise сохраняет информацию о профилях учетных записей, используя таблицы в базе данных брандмауэра для постоянного хранения и INFORMATION_SCHEMA таблиц для предоставления представлений в кэшированной памяти. База данных брандмауэра может быть mysql системной базой данных или настраиваемой схемой (см. Установка брандмауэра MySQL Enterprise).
Каждая таблица по умолчанию доступна только для учетных записей, имеющих право SELECT для нее. Таблицы INFORMATION_SCHEMA доступны всем.
Эти таблицы устарели и могут быть удалены в будущих версиях MySQL. См. Миграция профилей учетных записей на профили групп.
Таблица перечисляет имена и режимы работы зарегистрированных профилей учетных записей брандмауэра. Таблица содержит следующие столбцы (соответствующие default-database.firewall_usersMYSQL_FIREWALL_USERS таблице имеют похожие, но необязательно идентичные столбцы):
-
USERHOSTИмя профиля учетной записи. Каждое имя учетной записи имеет формат
.user_name@host_name -
MODEТекущий режим работы для профиля. Разрешенные значения режимов —
OFF,DETECTING,PROTECTING,RECORDINGиRESET. Подробности о их значении см. в Концепции брандмауэра.
Таблица перечисляет правила разрешенного списка зарегистрированных профилей учетных записей брандмауэра. Таблица содержит следующие столбцы (соответствующие firewall-database.firewall_whitelistMYSQL_FIREWALL_WHITELIST таблице имеют похожие, но необязательно идентичные столбцы):
-
USERHOSTИмя профиля учетной записи. Каждое имя учетной записи имеет формат
.user_name@host_name -
RULEНормализованная заявка, указывающая допустимый шаблон заявки для профиля. Список разрешенных профилей является объединением его правил.
-
IDЦелочисленный столбец, являющийся первичным ключом таблицы.
Хранимые процедуры MySQL Enterprise Firewall
Хранимые процедуры MySQL Enterprise Firewall выполняют такие задачи, как регистрация профилей в брандмауэре, установка их режима работы и управление передачей данных брандмауэра между кэшем и постоянным хранилищем. Эти процедуры вызывают административные функции, которые предоставляют API для задач низкого уровня.
Хранимые процедуры брандмауэра создаются в базе данных брандмауэра. База данных брандмауэра может быть системной базой данных mysql или пользовательской схемой (см. Установка MySQL Enterprise Firewall).
Чтобы вызвать хранимую процедуру брандмауэра, сделайте это, когда указанная база данных брандмауэра является базой данных по умолчанию, или укажите имя процедуры с именем базы данных. Например, если mysql является базой данных брандмауэра:
CALL mysql.sp_set_firewall_group_mode(group, mode);
В MySQL 8.4 хранимые процедуры брандмауэра являются транзакционными; если во время выполнения хранимой процедуры брандмауэра возникает ошибка, все изменения, внесенные ею до этого момента, отменяются, и сообщается об ошибке.
Если вы установили MySQL Enterprise Firewall в пользовательской схеме, внесите соответствующие изменения для вашей системы. Например, если брандмауэр установлен в схеме fwdb, то выполняйте хранимые процедуры следующим образом:
CALL fwdb.sp_set_firewall_group_mode(group, mode);
Хранимые процедуры профиля группы брандмауэра
Эти хранимые процедуры выполняют операции управления профилями групп брандмауэра:
-
sp_firewall_group_delist(group,user)Эта хранимая процедура удаляет учетную запись из профиля группы брандмауэра.
Если вызов завершается успешно, изменение в членстве группы вносится как в кэш в памяти, так и в постоянное хранилище.
Аргументы:
group: Имя затрагиваемого профиля группы.user: Учетная запись для удаления, как строка в формате.user_name@host_name
Пример:
CALL mysql.sp_firewall_group_delist('g', 'fwuser@localhost'); -
sp_firewall_group_enlist(group,user)Эта хранимая процедура добавляет учетную запись в профиль группы брандмауэра. Необязательно регистрировать саму учетную запись в брандмауэре перед добавлением учетной записи в группу.
Если вызов завершается успешно, изменение в членстве группы вносится как в кэш в памяти, так и в постоянное хранилище.
Аргументы:
group: Имя затрагиваемого профиля группы.user: Учетная запись для добавления, как строка в формате.user_name@host_name
Пример:
CALL mysql.sp_firewall_group_enlist('g', 'fwuser@localhost'); -
sp_reload_firewall_group_rules(group)Эта хранимая процедура обеспечивает управление работой брандмауэра для отдельных профилей групп. Процедура использует административные функции брандмауэра для перезагрузки правил в памяти для профиля группы из правил, хранящихся в таблице
.firewall-database.firewall_group_allowlistАргументы:
group: Имя затрагиваемого профиля группы.
Пример:
CALL mysql.sp_reload_firewall_group_rules('myapp');ПредупреждениеЭта процедура очищает правила разрешенного списка в памяти профиля группы перед их перезагрузкой из постоянного хранилища и устанавливает режим профиля в
OFF. Если режим профиля не былOFFдо вызоваsp_reload_firewall_group_rules(), используйтеsp_set_firewall_group_mode()для восстановления его предыдущего режима после перезагрузки правил. Например, если профиль был в режимеPROTECTING, это больше не так после вызоваsp_reload_firewall_group_rules(), и вы должны явно установить его вPROTECTING. -
sp_set_firewall_group_mode(group,mode)Эта хранимая процедура устанавливает режим работы для профиля группы брандмауэра после регистрации профиля в брандмауэре, если он еще не был зарегистрирован. Процедура также вызывает административные функции брандмауэра по мере необходимости для передачи данных брандмауэра между кэшем и постоянным хранилищем. Эта процедура может вызываться даже если системная переменная
mysql_firewall_modeимеет значениеOFF, хотя установка режима для профиля не оказывает никакого оперативного эффекта, пока брандмауэр не включен.Если профиль существовал ранее, любое ограничение записи для него остается неизменным. Чтобы установить или очистить ограничение, вместо этого вызовите
sp_set_firewall_group_mode_and_user().Аргументы:
group: Имя затрагиваемого профиля группы.mode: Режим работы для профиля, как строка. Допустимые значения режима:OFF,DETECTING,PROTECTINGиRECORDING. Для получения подробной информации об их значениях см. Основные понятия брандмауэра.
Пример:
CALL mysql.sp_set_firewall_group_mode('myapp', 'PROTECTING'); -
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или учетной записи, отличной отNULL, имеющей формат:user_name@host_nameЕсли значение равно
NULL, брандмауэр записывает правила разрешенного списка для инструкций, полученных от любой учетной записи, которая является членом группы.Если значение не
NULL, брандмауэр записывает правила разрешенного списка только для инструкций, полученных от указанной учетной записи (которая должна быть членом группы).
Пример:
CALL mysql.sp_set_firewall_group_mode_and_user('myapp', 'RECORDING', 'myapp_user1@localhost');
Хранимые процедуры профиля учетной записи брандмауэра
Эти хранимые процедуры выполняют операции управления профилями учетных записей брандмауэра:
-
sp_reload_firewall_rules(user)Эта хранимая процедура предоставляет управление работой брандмауэра для отдельных профилей учетных записей. Процедура использует функции администрирования брандмауэра для перезагрузки правил в оперативной памяти для профиля учетной записи из правил, сохраненных в таблице
.firewall-database.firewall_whitelistАргументы:
user: Имя затронутого профиля учетной записи, как строка в формате.user_name@host_name
Пример:
CALL sp_reload_firewall_rules('fwuser@localhost');ПредупреждениеЭта процедура очищает правила разрешения профиля учетной записи в оперативной памяти перед перезагрузкой их из постоянного хранилища и устанавливает режим профиля в
OFF. Если режим профиля не былOFFперед вызовомsp_reload_firewall_rules(), используйтеsp_set_firewall_mode()для восстановления его предыдущего режима после перезагрузки правил. Например, если профиль был в режимеPROTECTING, то это больше не так после вызоваsp_reload_firewall_rules(), и вы должны явно установить его вPROTECTING.Эта процедура устарела и может быть удалена в будущей версии MySQL. См. Миграция профилей учетных записей на профили групп.
-
sp_set_firewall_mode(user,mode)Эта хранимая процедура устанавливает рабочий режим профиля учетной записи брандмауэра после регистрации профиля в брандмауэре, если он еще не был зарегистрирован. Процедура также вызывает функции администрирования брандмауэра по мере необходимости для передачи данных брандмауэра между кэшем и постоянным хранилищем. Эту процедуру можно вызвать даже если системная переменная
mysql_firewall_modeимеет значениеOFF, хотя установка режима для профиля не оказывает никакого оперативного воздействия до включения брандмауэра.Аргументы:
user: Имя затронутого профиля учетной записи, как строка в формате.user_name@host_namemode: Рабочий режим профиля, как строка. Разрешенные значения режима —OFF,DETECTING,PROTECTING,RECORDINGиRESET. Подробное описание их значений см. в Концепции брандмауэра.
Переключение профиля учетной записи на любой режим, кроме
RECORDING, синхронизирует данные кэша брандмауэра с таблицами базы данных брандмауэра, обеспечивающими постоянное хранилище (mysqlили пользовательское). Переключение режима сOFFнаRECORDINGперезагружает список разрешенных запросов из таблицыв кэш.firewall-database.firewall_whitelistЕсли у профиля учетной записи пустой список разрешений, его режим нельзя установить на
PROTECTING, так как профиль будет отклонять все инструкции, фактически запрещая учетной записи выполнять инструкции. В ответ на попытку установки такого режима брандмауэр выводит диагностическое сообщение, которое возвращается как набор результатов, а не как ошибка SQL:mysql>
CALL sp_set_firewall_mode('a@b','PROTECTING');+----------------------------------------------------------------------+ | set_firewall_mode(arg_userhost, arg_mode) | +----------------------------------------------------------------------+ | ERROR: PROTECTING mode requested for a@b but the allowlist is empty. | +----------------------------------------------------------------------+Эта процедура устарела и может быть удалена в будущей версии MySQL. См. Миграция профилей учетных записей на профили групп.
Разные хранимые процедуры брандмауэра
Эти хранимые процедуры выполняют различные операции управления брандмауэром.
-
sp_migrate_firewall_user_to_group(user,group)Хранимая процедура
sp_migrate_firewall_user_to_group()преобразует профиль учетной записи брандмауэра в профиль группы с учетной записью в качестве единственного зарегистрированного члена. Запустите скриптfirewall_profile_migration.sqlдля его установки. Процедура преобразования описана в Миграции профилей учетных записей на профили групп.Для этой процедуры требуется привилегия
FIREWALL_ADMIN.Аргументы:
user: Имя профиля учетной записи, преобразуемого в профиль группы, как строка в формате. Профиль учетной записи должен существовать и в настоящее время не должен находиться в режимеuser_name@host_nameRECORDING.group: Имя нового профиля группы, который еще не должен существовать. Новый профиль группы имеет указанную учетную запись в качестве единственного зарегистрированного члена, и этот член устанавливается как учетная запись обучения группы. Режим работы профиля группы берется из режима работы профиля учетной записи.
Пример:
CALL sp_migrate_firewall_user_to_group('fwuser@localhost', 'mygroup);
Администрирование функций брандмауэра MySQL Enterprise
Функции администрирования брандмауэра MySQL Enterprise предоставляют API для задач низкого уровня, таких как синхронизация кэша брандмауэра с базовыми системными таблицами.
В обычном режиме работы эти функции вызываются процедурами брандмауэра, а не напрямую пользователями. По этой причине описания функций не содержат подробностей, таких как информация об аргументах и типах возвращаемых значений.
Функции профилей групп брандмауэра
Эти функции выполняют операции управления профилями групп брандмауэра:
-
firewall_group_delist(group,user)Эта функция удаляет учетную запись из профиля группы. Она требует привилегия
FIREWALL_ADMIN.Пример:
SELECT firewall_group_delist('g', 'fwuser@localhost'); -
firewall_group_enlist(group,user)Эта функция добавляет учетную запись в профиль группы. Она требует привилегия
FIREWALL_ADMIN.Необязательно регистрировать саму учетную запись в брандмауэре перед добавлением её в группу.
Пример:
SELECT firewall_group_enlist('g', 'fwuser@localhost'); -
read_firewall_group_allowlist(group,rule)Эта агрегатная функция обновляет кэш записанных утверждений для указанного профиля группы через оператор
SELECTв таблице. Она требует привилегияfirewall-database.firewall_group_allowlistFIREWALL_ADMIN.Пример:
SELECT read_firewall_group_allowlist('my_fw_group', fgw.rule) FROM mysql.firewall_group_allowlist AS fgw WHERE NAME = 'my_fw_group'; -
read_firewall_groups(group,mode,user)Эта агрегатная функция обновляет кэш профилей групп брандмауэра через оператор
SELECTв таблице. Она требует привилегияfirewall-database.firewall_groupsFIREWALL_ADMIN.Пример:
SELECT read_firewall_groups('g', 'RECORDING', 'fwuser@localhost') FROM mysql.firewall_groups; -
set_firewall_group_mode(group,mode[,user])Эта функция управляет кэшем профилей групп, устанавливает режим работы профиля и необязательно указывает учетную запись обучения профиля. Она требует привилегия
FIREWALL_ADMIN.Если необязательный аргумент
userне задан, предыдущее значениеuserдля профиля остается неизменным. Чтобы изменить значение, вызовите функцию с третьим аргументом.Если необязательный аргумент
userзадан, он определяет учебную учетную запись для профиля группы, которая используется, когда профиль находится в режимеRECORDING. Значение равноNULLили учетной записи, не являющейсяNULL, с форматом:user_name@host_nameЕсли значение равно
NULL, брандмауэр записывает правила allowlist для утверждений, полученных от любой учетной записи, являющейся членом группы.Если значение не равно
NULL, брандмауэр записывает правила allowlist только для утверждений, полученных от указанной учетной записи (которая должна быть членом группы).
Пример:
SELECT set_firewall_group_mode('g', 'DETECTING');
Функции профилей учетных записей брандмауэра
Эти функции выполняют операции управления профилями учетных записей брандмауэра:
-
read_firewall_users(user,mode)Эта агрегатная функция обновляет кэш профилей учетных записей брандмауэра с помощью оператора
SELECTв таблице. Она требует привилегиюfirewall-database.firewall_usersFIREWALL_ADMINили устаревшую привилегиюSUPER.Пример:
SELECT read_firewall_users('fwuser@localhost', 'RECORDING') FROM mysql.firewall_users;Эта функция устарела и может быть удалена в будущих версиях MySQL. См. Миграция профилей учетных записей на профили групп.
-
read_firewall_whitelist(user,rule)Эта агрегатная функция обновляет кэш записанных утверждений для указанного профиля учетной записи с помощью оператора
SELECTв таблице. Она требует привилегиюfirewall-database.firewall_whitelistFIREWALL_ADMINили устаревшую привилегиюSUPER.Пример:
SELECT read_firewall_whitelist('fwuser@localhost', fw.rule) FROM mysql.firewall_whitelist AS fw WHERE USERHOST = 'fwuser@localhost';Эта функция устарела и может быть удалена в будущих версиях MySQL. См. Миграция профилей учетных записей на профили групп.
-
Эта функция управляет кэшем профилей учетных записей и устанавливает режим работы профиля. Она требует привилегию
FIREWALL_ADMINили устаревшую привилегиюSUPER.Пример:
SELECT set_firewall_mode('fwuser@localhost', 'RECORDING');Эта функция устарела и может быть удалена в будущих версиях MySQL. См. Миграция профилей учетных записей на профили групп.
Разные функции брандмауэра
Эти функции выполняют различные операции брандмауэра:
-
Эта функция сбрасывает несколько переменных состояния брандмауэра в 0:
Эта функция требует привилегию
FIREWALL_ADMINили устаревшую привилегиюSUPER.Пример:
SELECT mysql_firewall_flush_status();
-
Эта функция нормализует SQL-утверждение в форму, используемую для правил allowlist. Она требует привилегию
FIREWALL_ADMINили устаревшую привилегиюSUPER.Пример:
SELECT normalize_statement('SELECT * FROM t1 WHERE c1 > 2');ПримечаниеТа же функциональность дайджеста доступна вне контекста брандмауэра с помощью SQL-функции
STATEMENT_DIGEST_TEXT().
Переменные системы межсетевого экрана MySQL Enterprise
Межсетевой экран MySQL Enterprise поддерживает следующие системные переменные. Используйте их для настройки работы межсетевого экрана. Эти переменные недоступны, если межсетевой экран не установлен (см. Раздел 8.4.7.2, «Установка или удаление межсетевого экрана MySQL Enterprise»).
-
Формат командной строки --mysql-firewall-database[=value]Системная переменная mysql_firewall_databaseОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Строка Значение по умолчанию mysqlУказывает базу данных, из которой межсетевой экран MySQL Enterprise считывает данные. Обычно плагин на стороне сервера
MYSQL_FIREWALLхранит свои внутренние данные (таблицы, хранимые процедуры и функции) в системе баз данныхmysql, но вы можете создать и использовать пользовательскую схему вместо неё (см. Установка межсетевого экрана MySQL Enterprise). Эта переменная позволяет указать альтернативное имя базы данных при запуске. -
Формат командной строки --mysql-firewall-mode[={OFF|ON}]Системная переменная mysql_firewall_modeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию ONВключен ли межсетевой экран MySQL Enterprise (по умолчанию) или выключен.
-
mysql_firewall_reload_interval_secondsФормат командной строки --mysql-firewall-reload-interval-seconds[=value]Системная переменная mysql_firewall_reload_interval_secondsОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Целое Значение по умолчанию 0Минимальное значение 60 (unless 0: OFF)Максимальное значение INT_MAXЕдиница измерения секунд Указывает интервал (в секундах), который плагин на стороне сервера использует для перезагрузки своего внутреннего кэша из таблиц межсетевого экрана. Когда
mysql_firewall_reload_interval_secondsимеет значение ноль (по умолчанию), периодическая перезагрузка данных из таблиц во время выполнения не происходит. Значения от0до60(1 до 59) не распознаются плагином. Вместо этого эти значения автоматически корректируются до60.Эта переменная требует включения компонента
scheduler(ON). Дополнительная информация приведена в Планирование перезагрузки кэша межсетевого экрана. -
Формат командной строки --mysql-firewall-trace[={OFF|ON}]Системная переменная mysql_firewall_traceОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFВключено или выключено (по умолчанию) отслеживание межсетевого экрана MySQL Enterprise. Когда
mysql_firewall_traceвключено, для режимаPROTECTINGмежсетевой экран записывает отклоненные операторы в журнал ошибок.
Переменные состояния межсетевого экрана MySQL Enterprise
Межсетевой экран MySQL Enterprise поддерживает следующие переменные состояния. Используйте их для получения информации о состоянии работы межсетевого экрана. Эти переменные недоступны, если межсетевой экран не установлен (см. Раздел 8.4.7.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.