Система безопасности MySQL

Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 18:45, творческая работа

Краткое описание

Программное обеспечение MySQL (TM) представляет собой очень быстрый многопоточный, многопользовательский надежный SQL-сервер баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения.

Содержание работы

Описание MySQL (TM)

Содержимое работы - 1 файл

Система безопасности MySQL.doc

— 72.50 Кб (Скачать файл)


Основные данные о работе

Версия шаблона

1.1

Филиал

Ульяновский

Вид работы

Творческая работа

Название дисциплины

Принципы построения WEB-серверов

Тема

Система безопасности MySQL

Фамилия студента

Бормотин

Имя студента

Владимир

Отчество студента

Владимирович

№ контракта

05308070601001

Содержание

Описание MySQL…………………………………………………………..............3

Приложения ………………………………………………………………………..7

 

 

Основная часть

Описание MySQL

Программное обеспечение MySQL (TM) представляет собой очень быстрый многопоточный, многопользовательский надежный SQL-сервер баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения.

СУБД MySQL:

- быстрая – благодаря многопоточной архитектуре;

- гибкая – поддерживает большое подмножество языка запросов SQL;

- мультиплатформенная;

- бесплатная.

Система безопасности MySQL

При первоначальной установке MySQL создается база данных под названием «mysql». В этой базе есть пять таблиц:

user - содержит данные по безопасности, относящиеся к серверу в целом.

host - содержит права доступа к серверу для удаленных компьютеров.

db, tables_priv, columns_priv - управляют доступом к отдельным базам данных, таблицам и колонкам.

Таблица user

Смысл различных прав доступа в таблице user (Приложение А) разъясняется ниже:

–                   Create_priv - Возможность выполнять команды CREATE или создавать базы данных.

–                   Drop_priv - Возможность выполнять команды DROP для удаления баз данных.

–                   Reload_priv - Возможность обновлять информацию о доступе с помощью mysqladmin reload.

–                   Shutdown_priv - Возможность останавливать сервер через mysqladmin shutdown.

–                   Process_priv - Возможность управлять процессами сервера.

–                   File_priv - Возможность читать и записывать файлы с помощью команд типа SELECT INTO OUTFILE и LOAD DATA INFILE.

–                   Grant_priv - Возможность давать привилегии другим пользователям.

–                   Index_priv - Возможность создавать и уничтожать индексы.

–                    Alter_priv - Возможность выполнять команду ALTER TABLE.

В MySQL есть специальная функция  password(), зашифровывающая пароль.

Имена пользователей MySQL обычно не связаны с именами пользователей операционной системы. В большинстве клиентских приложений MySQL можно с помощью параметра -u подключиться к MySQL, с любым именем. 

Примеры:

-         INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)VALUES ('%', 'bob', password('mypass'), 'Y', 'Y', 'Y', 'Y')

–                   INSERT INTO user (Host, User, Password, Select_priv)VALUES ('athens.imaginary.com', 'jane', '', 'Y')

–                   INSERT INTO user(Host, User, Password)VALUES ('%', 'nobody', '')

–                   INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv)VALUES ('athens.imaginary.com', 'nobody', password('thispass'), 'Y', 'Y', 'Y', 'Y')

Прежде чем осуществлять поиск в таблице user, MySQL сортирует данные следующим образом:

1. Сначала ищется соответствие для узлов, не содержащих масок «%», при этом пустое поле Host трактуется как «%».

2. Для одного и того же узла сначала проверяется соответствие имен, не содержащих масок. Пустое поле User трактуется как содержащее «%».

3. Первое найденное соответствие считается окончательным.

Права доступа к отдельным базам данных хранятся в таблице db (Приложение Б). Таблица управляет правами пользователей в отношении определенных баз данных. Права, присвоенные пользователю в таблице user, перекрывают права, присвоенные тому же пользователю в таблице db. Например, если пользователю в таблице user разрешают доступ типа INSERT, это право действует в отношении всех баз данных, вне зависимости оттого, что указано в таблице db.

Наиболее эффективно создание в таблице user записей для всех пользователей, в которых не даны никакие права. В этом случае пользователь может лишь подключиться к серверу, не выполняя никаких действий. Исключение делается только для пользователя, назначенного администратором сервера. Все остальные должны получить права доступа через таблицу db. Каждый пользователь должен присутствовать в таблице user, иначе он не сможет подключаться к базам данных.

Пустое поле Host вынуждает MySQL найти запись, соответствующую имени узла пользователя, в таблице host. Если такой записи не найдено, MySQL отказывает в доступе. Если соответствие найдено, MySQL определяет права как пересечение прав, определяемых таблицами host и db. Иными словами, в обеих записях разрешение должно иметь значение «Y», иначе в доступе отказывается.

Таблица host позволяет задать основные разрешения на межкомпьютерном уровне. При проверке прав доступа MySQL ищет в таблице db соответствие имени пользователя и его машине. Если он находит запись, соответствующую имени пользователя, поле host которой пусто, MySQL обращается к таблице host и использует пересечение обоих прав для определения окончательного права доступа.

Таблицы tables_priv и columns_priv.

Уточняют данные, имеющиеся в таблице db. Право на всякую операцию сначала проверяется по таблице db, затем по таблице tables_priv , затем по таблице columns_priv. Операция разрешается, если одна из них дает разрешение.

С помощью этих таблиц можно сузить область действия разрешений до уровня таблиц и колонок. Управлять этими таблицами можно через команды SQL GRANT и REVOKE.

Последовательность контроля доступа.

Необходимо подключиться к серверу, прежде чем пытаться что-либо сделать.

Сначала MySQL проверяет, есть ли в таблице user запись, соответствующая имени пользователя и машины, с которой он подключается. Если соответствие не найдено, в доступе отказывается.

В случае, когда соответствующая запись найдена и имеет непустое поле Password , необходимо ввести правильный пароль. Неправильный пароль приводит к отклонению запроса на подключение.

Если соединение установлено, MySQL переходит к этапу верификации запроса - запросы сопоставляются с правами. Эти права MySQL проверяет по таблицам user, db, host, tables_pnv и columns_priv.

Как только найдено соответствие в таблице user с положительным разрешением, команда немедленно выполняется. В противном случае MySQL продолжает поиск в следующих таблицах в указанном порядке:

db > tables_priv > columns_priv

Если таблица db содержит разрешение, дальнейшая проверка прекращается и выполняется команда. Если нет, то MySQL ищет соответствие в таблице tables_priv.

Если это команда SELECT, объединяющая две таблицы, то пользователь должен иметь разрешения для обеих этих таблиц.

Если хотя бы одна из записей отказывает в доступе или отсутствует, MySQL точно таким же способом проверяет все колонки в таблице columns_priv.

Изменение прав доступа. MySQL загружает таблицы доступа при запуске сервера. Преимуществом такого подхода по сравнению с динамическим обращением к таблицам является скорость.

Отрицательная сторона состоит в том, что изменения, производимые в таблицах доступа MySQL, начинают действовать после выполнения команды mysqladmin reload.

Если таблицы изменяются с помощью SQL-команд GRANT или REVOKE, явно перегружать таблицы не требуется.

 

 

 

Приложения

А

Б

 

7

 



Информация о работе Система безопасности MySQL