Просмотров: 3984

MySQL: Безопасность и аудит. Часть 5


Продолжаем ранее начатое рассмотрение Securich.

Я думаю, что повседневная работа любого администратора БД очень плотно связана с настройкой и выделением прав/привилегий пользователям и системным объектам самой БД. С другой стороны — это один из самых ответственных участков работы, ошибки в котором, особенно в условиях интенсивного совместного использования сервера между множеством пользователей и в открытой сетевой среде, может приводить к его компрометации и утечке хранимых на нем данных.

MySQL ЬнЫЙД ,tpjgfcyjcnm Безопасность security защита рецепты решения укрепление  Openark Kit хакеры взлом роли SQL база данных СУБД мускул запрос инъекция sql injection блокировка пользователи Securich

В связи с этим, концепции групп и ролей могут значительно упростить и стандартизировать раздачу привилегий. Первоначально реализацию ролей разработчики MySQL обещали в 5-ой версии, но после её выхода, поддержку этой важной особенности в очередной раз перенесли в планы на реализацию в будущую 7-ую.

Что же делать в ситуации, когда эти возможности остро нужны уже здесь и сейчас?

Управление ролями через Securich

Расширенное управление аккаунтами MySQL — только один аспект возможностей Securich, сейчас мы рассмотрим его возможности по созданию ролей и контролю над правами пользователей БД, для чего сначала приведем список всех команд, ответственных за это:

  • create_update_role() — запуск этой процедуры приведет к созданию (или обновлению уже имеющейся) роли, drop_role() — удаляет роль;
  • show_privileges_in_role() — показ всех привилегий присвоенных указанной роли;
  • show_roles() — выдать список всех ролей доступных в системе;
  • show_users_with_privilege() — показ списка пользователей, имеющих любые права доступа к указанной в аргументах таблице и/или базе данных;
  • show_user_entries() — выдает список всех ролей для указанного пользователя со всеми деталями: в каких базах данных и хостах эти привилегии имеют силу на текущем сервере;
  • grant_privileges() — используется для задания привилегий для указанного пользователя, в том числе через регулярные выражения (например, для выделения диапазона таблиц, к которым получит доступ пользователь). Попытка дать права на несуществующие таблицы/БД приведет к их автоматическому созданию перед применением всех установок;
  • rename_user() — переименовывает логин пользователя сохраняя все его текущие привилегии и роли, при этом также дается возможность сменить его пароль и контактный e-mail;
  • password_check() — внутренняя проверка согласованности данных о паролях между служебными таблицами securich и mysql ;
  • mysql_reconciliation() — используется совместно с аналогичной командой grant_privileges_reverse_reconciliation () для принудительной синхронизации всех данных по привилегиям между таблицами mysql и securich (вторая команда — выполняет такую же синхронизацию, но в обратном направлении);
  • sеt_pаssword_expirable() — присвоение паролю уже существующего, указанного в аргументах пользователя статуса «ограниченный по времени действия» (или его отмена);
  • sеt_passwоrd() — изменение своего пароля пользователем (или принудительная установка root`ом). Автоматически анализируется история, и запрещаются предыдущие 5 вариантов, также сохраняет дату и время всех проводимых операций. Позволяет автоматически проверять структуру и сложность создаваемого пароля по маске значений задаваемых в таблице sec_cоnfig :
    • Проверка минимальной и/или максимальной разрешенной длины пароля;
    • Проверка пароля по словарю из слов;
    • Контроль наличия разных регистров;
    • Контроль наличия цифр в пароле;
    • Контроль наличия специальных символов;
    • Контроль совпадения или модификаций пароля, коррелирующего с именем пользователя (например, пароль получен путем написания логина задом наперед).

Показать исчерпывающие примеры использования всех упомянутых команд в короткой обзорной статье просто нереально, поэтому приведу типичный сеанс работы с использованием некоторых упомянутых выше команд, чтобы составить общее впечатление о Securich:

<code>$ mysql -u savgor -p -h 127.0.0.1 -P 3306
mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema | 
| securich           | 
+--------------------+
mysql> use securich; 
Database changed
mysql> call my_privileges('test'); 
+-----------+
| PRIVILEGE |
+-----------+
| DELETE    | 
| INSERT    | 
| SELECT    | 
| UPDATE    | 
+-----------+
mysql> call create_update_role('add','role1','insert'); 
mysql> call revoke_privileges('peter' , 'localhost' , 'test' , '' , '' , 'role1' , 'Y');
mysql> call sеt_pаssword('paul' , '10.0.0.2' , '2f791928c4ef44ddd7c', 'password123');

Для получения оперативной справки по Securich, прямо в консоли mysql нужно вызвать команду help , в качестве аргумента передав ей имя процедуры из арсенала Securich. Их общий список и примеры использования доступны в подробной online-документации, как дополнение в файле securich.pdf (включаемый в комплект поставки Securich) предоставляется схема отношений всех служебных таблиц комплекса.

MySQL ЬнЫЙД ,tpjgfcyjcnm Безопасность security защита рецепты решения укрепление  Openark Kit хакеры взлом роли SQL база данных СУБД мускул запрос инъекция sql injection блокировка пользователи Securich

В заключении приведу ещё одну приятную особенность Securich — наличие собственного графического фронтенда — SAM-My. Его web-интерфейс позволяет управлять политиками MySQL, даже не вникая в особенности богатого командного арсенала Securich, что также придется по душе определенной категории администраторов БД.

~

Читать этот материал дальше. Оглавление и начало этой серии статей — здесь.

Игорь Савчук ©  Системный Администратор, 2012
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , ,
Эта запись опубликована: Понедельник, 28 мая 2012 в рубрике Unix'овое.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз