Лекция 11 Управление доступом к информационным ресурсам
Пользователи По объему привилегий пользователи разделяются на несколько категорий: рядовые пользователи привилегированный пользователь, не имеющий права предоставлять привилегии привилегированный пользователь, имеющий право предоставлять привилегии владелец объектов (таблиц, файлов и т.д.) администратор
Способы управления доступом к информационному ресурсу 1. Управление доступом к серверу (файл httpd.conf). 2. Управление доступом к хосту 3. Использование системы привилегий MySQL. 4. Использование скриптов, которые позволяют контролировать доступ к сайту посредством аутентификации пользователей.
Файл httpd.conf Все настройки сервера Apache хранятся в текстовом файле httpd.conf, который располагается в каталоге conf. Описания закомментированы при помощи символа «#».
.htaccess – это конфигурационный файл, который даёт возможность настраивать работу сервера на уровне отдельных каталогов: устанавливать права доступа к файлам в каталогах, менять названия индексных файлов, самостоятельно обрабатывать коды ответов протокола HTTP, модифицировать адреса запрошенных страниц.
Файл httpd.conf Эти директивы определяют, какие пользователи имеют доступ к информации, расположенной на этом сервере. Order allow,deny Allow from all
Запретить доступ с определенного IP- адреса Deny from
Order deny,allow Deny from all Allow from Директива Order позволяет задать порядок, в котором будут выполняться директивы. Сначала выполняется директива запрета доступа(директива Deny), а затем разрешается доступ то для IP-адреса (директива Allow). Разрешить доступ только с определенного IP-адреса
Система привилегий MySQL
Добавление новых пользователей в MySQL Пользователей можно добавлять: при помощи команды GRANT напрямую в таблицы назначения привилегий MySQL с помощью надстроек MySQL (н-р phpMyAdmin)
Установление и контроль привилегий - прерогатива администратора БД. Привилегии устанавливаются и отменяются операторами языка SQL GRANT (РАЗРЕШИТЬ) и REVOKE (ОТМЕНИТЬ).
GRANT Оператор GRANT указывает конкретного пользователя, который получает конкретные привилегии доступа к указанной таблице. Например, GRANT SELECT, INSERT ON items ТО petrov; привилегии на выполнение операций объект пользователь
Отмена привилегий выполняется оператором REVOKE. Например, REVOKE REVOKE INSERT ON items FROM petrov; привилегияобъект пользователь
Глобальный уровень Глобальные привилегии обращаются ко всем базам данных на данном сервере. Эти привилегии сохранены в таблице mysql.user. Уровень баз данных Привилегии баз данных обращаются ко всем таблицам в данной базе данных (хранятся в таблицах mysql.db и mysql.host). Команды GRANT и REVOKE позволяют администраторам системы создавать пользователей, предоставлять и отменять права на MySQL- пользователей в четырех уровнях привилегий:
Уровень таблиц Привилегии таблиц обращаются ко всем столбцам в данной таблице (хранятся в mysql.tables_priv). Уровень столбцов Привилегии столбцов обращаются к одиночным столбцам в данной таблице (хранятся в таблице mysql.columns_priv).
Если даются привилегии пользователю, который не существует, он будет автоматически создан.
ALL PRIVILEGES; CREATE; DROP; INSERT; DELETE; UPDATE; SELECT; FILE; INDEX; GRANT и др. Типы привилегий для инструкций GRANT и REVOKE :
Чтобы предоставлять права пользователям с произвольных компьютеров, MySQL поддерживает определение значения user_name в форме При определении строки user или строки host, можно цитировать имя пользователя или хоста (например, hostname').
Например, применяется к user для любого компьютера в домене joker.botik.ru, а будет применено к user с любой машины в сети класса C. Простая форма user представляет собой синоним для Можно определять групповые символы в hostname.
Анонимные пользователи определяются вставкой записей с User='' в таблицу mysql.user.
Привилегии для таблицы или столбца сформированы из логического ИЛИ (OR) привилегий в каждом из четырех уровней привилегии. Например, если таблица mysql.user определяет, что пользователь имеет глобальную привилегию select, это не может быть отменено записью на других уровнях доступа!
Пароли также могут быть установлены командой SET PASSWORD
Стадия 1: сервер проверяет, стоит ли ему связываться с пользователем. Стадия 2: после разрешения соединиться с сервером, будет проверяется каждый запрос, который выдает, чтобы видеть, имеет ли пользователь достаточные привилегии, чтобы выполнить его. Управление доступом MySQL включает две стадии:
Сервер использует таблицы user, db и host в базе данных mysql на обеих стадиях управления
Для второй стадии управления доступом (проверка запроса) сервер может, если запрос включает таблицы, дополнительно консультироваться с таблицами tables_priv и columns_priv.
Контроль доступа к сайту посредством аутентификации пользователей Для организации такого доступа нужны: таблица для хранения имен и паролей; web-страница для регистрации пользователя на сервере (входа на сервер) и аналогичная веб-страница для выхода; сценарий, который может использоваться для контроля прав доступа пользователей.
Функция md5 В настоящее время никто не хранит пароль в открытом виде используется его хеш, который представляет собой набор символов, получаемый в результате шифрования пароля по алгоритму MD5, реализованному в РНР в виде функции: md5(строка); Функция зашифровывает строку, переданную в качестве параметра, по алгоритму MD5 и возвращает результат этого действия.
транзакции баз данных Транзакция ряд отдельных действий, которые должны быть полностью обработаны или не обработаны вообще.
Транзакции присущи следующие признаки: атомарность. Транзакция должна оставаться целостной. Т.е. она должна полностью совершиться или полностью не совершиться. Если она достигает цели, все изменения, задаваемые транзакцией, должны сохраниться системой. Если транзакция терпит неудачу, все ее изменения полностью отменяются. В системах БД используется термин откат для процесса, который аннулирует все изменения неудавшейся транзакции, и термин фиксация для процесса, благодаря которому изменения транзакции сохраняются;
непротиворечивость. Транзакции должны преобразовать базу данных из одного постоянного состояния в другое. Например, транзакция, создающая счет-фактуру для заказа, переводит заказ из формы «отгружено» в форму «выписана счет-фактура», производя соответствующие изменения базы данных;
изолированность. Каждая транзакция должна исполняться независимо от других транзакций, которые осуществляются с ней одновременно;
долговечность. Изменения, сделанные удавшимися транзакциями, должны оставаться постоянными, даже после остановки или обрушения базы данных или другого критического состояния системы.
Поддержка транзакций в MySQL Чтобы обеспечить возможность поддержки транзакций, при создании таблицы должен быть определен механизм запоминания - InnoDB или BOB (Berkeley DM)
Например: CREATE TABLE LANGUAGE (LANGUAGE_CODE CHAR (2) NOT NULL, LANGUAGE_NAME VARCHAR (40) NOT NULL, PRIMARY KEY (LANGUAGE_CODE)) ENGINE = INNODB;
Для таблиц, которые создаются с использованием механизмов InnoDB или BOB, поддержка транзакций доступна в двух режимах: режим автофиксации. Автофиксация включается и выключается при помощи выражения SET, где значение «0» отключает авто фиксацию, а значение «1» включает: SET AUTOCOMMIT=0; SET AUTOCOMMIT=1;
явный режим. Явный режим действует, даже если режим автофиксации отключен. В нем могут использоваться следующие выражения SQL: START TRANSACTION [WITH CONSISTENT SNAPSHOT]; SAVEPOINT идентификатор_точки_сохранения; ROLLBACK[TO идентификатор_точки_сохранения]; COMMIT;