Spec-Zone.ru › MySQL 5.7

6.4.6.4 Справочник по брандмауэру MySQL Enterprise

В следующих разделах приведены справочные данные по элементам брандмауэра MySQL Enterprise:

  • Таблицы брандмауэра MySQL Enterprise

  • Хранимые процедуры брандмауэра MySQL Enterprise

  • Административные функции брандмауэра MySQL Enterprise

  • Системные переменные брандмауэра 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_name.

    • mode: Режим работы профиля в виде строки. Разрешенные значения режима: 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)
    
END_OF_DOCUMENT_MARKER
Административные функции брандмауэра 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';
    
  • set_firewall_mode(user, mode)

    Эта функция управляет кэшем профиля учетной записи и устанавливает режим работы профиля. Требуется привилегия SUPER.

    Пример:

    SELECT set_firewall_mode('fwuser@localhost', 'RECORDING');
    
Разнообразные функции брандмауэра

Эти функции выполняют различные операции брандмауэра:

  • mysql_firewall_flush_status()

    Эта функция сбрасывает несколько переменных состояния брандмауэра до 0:

    • Firewall_access_denied

    • Firewall_access_granted

    • Firewall_access_suspicious

    Эта функция требует привилегии SUPER.

    Пример:

    SELECT mysql_firewall_flush_status();
    
  • normalize_statement(stmt)

    Эта функция нормализует оператор 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

    Формат командной строки --mysql-firewall-mode[={OFF|ON}]
    Системная переменная mysql_firewall_mode
    Область действия Глобальная
    Динамическая Да
    Тип Булево
    Значение по умолчанию ON

    Включен ли брандмауэр MySQL Enterprise (по умолчанию) или отключен.

  • mysql_firewall_trace

    Формат командной строки --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).

  • Firewall_access_denied

    Количество операторов, отклоненных брандмауэром MySQL Enterprise.

  • Firewall_access_granted

    Количество операторов, принятых брандмауэром MySQL Enterprise.

  • Firewall_access_suspicious

    Количество операторов, залогированных брандмауэром MySQL Enterprise как подозрительные для пользователей в режиме DETECTING.

  • Firewall_cached_entries

    Количество операторов, записанных брандмауэром MySQL Enterprise, включая дубликаты.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/firewall-reference.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API