Рубрика:
Базы данных /
HowTo
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Аудит в MySQL
Для обеспечения соответствия нормативным требованиям стандартов безопасности (SOX, HIPAA, PCI-DSS и т.д.) предприятия внедряют различные технологии мониторинга и аудит данных. Одним из пунктов, который предстоит выполнить, является детальное протоколирование доступа к серверам и таблицам баз данных
В популярной СУБД MySQL разработчики предлагают соответствующий API, позволяющий производить аудит. Но штатный плагин audit_log доступен только для коммерческой версии Enterprise (http://dev.mysql.com/doc/refman/5.5/en/audit-log-plugin.html).
Для GPL, которые используют на многих ресурсах, он не предлагается. Но среди форков MySQL доступны бесплатные и совместимые альтернативы, которые можно использовать для аудита MySQL:
Например, MariaDB Audit Plugin позволяет отслеживать доступ пользователей к данным – время, узел (клиент и сервер), запрос, код ошибки и т.д. Совместим с MariaDB 5.5+, MySQL 5.5+ и Percona Server. Распространяется по лицензии GNU GPL.
Для подключения потребуется всего пара минут. При этом перезагрузка сервера не потребуется.
Скачиваем архив server_audit с сайта проекта (https://mariadb.com/products/connectors-plugins).
$ wget -c https://downloads.skysql.com/enterprise/MariaDB-Audit-Plugin/server_audit-1.1.7.tar.gz
Архив содержит файлы под 32- и 64-разрядные версии Windows и Linux. Распаковываем и копируем модуль server_audit.so под свою версию ОС в папку плагинов (в Ubuntu /usr/lib/mysql/plugin/), проверив права доступа. Нужный каталог в других дистрибутивах можно узнать, просмотрев значение переменной plugin_dir.
mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
Плагин следует загрузить через переменную plugin-load в my.cnf или SQL-команду:
mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Плагин будет зарегистрирован и в последующем станет загружаться при перезапуске сервера. Проверить правильность работы можно, просмотрев информацию о плагине:
mysql> SELECT * from information_schema.plugins where plugin_name='server_audit';
Плагин работает, но пока ничего не делает. Необходимо его настроить.
Смотрим текущую конфигурацию:
mysql> SHOW GLOBAL VARIABLES LIKE 'server_audit%';
Рисунок 1. Просмотр конфигурации плагина MariaDB Audit Plugin for MySQL
Пока будет создан файл журнала server_audit.log в каталоге данных (в Ubuntu /var/lib/mysql), который станет перезаписываться при достижении размера 1 000 000 байт. При этом сохраняется девять предыдущих файлов.
Чтобы включить журналирование, следует установить переменную server_audit_logging variable в ON.
mysql> SET GLOBAL server_audit_logging='ON';
Плагин может регистрировать успех и ошибку трех типов событий: CONNECTION (подключения, отключения), QUERY (запросы и результат) и TABLE (таблицы, которые были затронуты запросом).
Выбираем нужные и включаем:
mysql> SET GLOBAL server_audit_events='CONNECT,QUERY,TABLE';
Теперь файл server_audit.log начнет заполняться информацией.
Рисунок 2. Файл server_audit.log
Единственное, что осталось, – после перезагрузки сервера все настройки будут сброшены, поэтому следует их прописать в my.cnf:
[mysqld]
...
server_audit_logging=on
server_audit_events=connect,query
По умолчанию регистрируется активность всех пользователей, но при желании можно указать учетные записи, которые необходимо отслеживать или, наоборот, исключить ненужные. За это отвечают две переменные – server_audit_incl_users и server_audit_excl_users.
[mysqld]
...
server_audit_excl_users=test
Подготовил Сергей Яремчук
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|