Лекции и практики (1). Курс лекций и материалы для практических занятий
Скачать 1.01 Mb.
|
Защита от несанкционированного доступаПод функцией секретности данных понимается защита данных от пред- намеренного искажения и/или доступа пользователей или посторонних лиц. Для этого вся информация делится на общедоступные данные и конфиденци- альные, доступ к которым разрешен только для отдельных групп лиц. Решение этого вопроса относится к компетенции юридических органов или администра- ции предприятия, для которого создаётся БД, и является внешней функцией по отношению к БД. Рассмотрим техническую сторону обеспечения защиты данных в БД от несанкционированного доступа. Общий принцип управления доступом к базе данных такой: СУБД не должна разрешать пользователю выполнение какой- либо операции над данными, если он не получил на это права. Санкционирова- ние доступа к данным осуществляется администратором БД. В обязанности ад- министратора БД входит: назначение отдельным группам пользователей прав доступа (привилегий) к отдельным группам данных в соответствии с правилами ПрО; организация системы контроля доступа к данным; тестирование вновь создаваемых средств защиты данных; периодическое проведение проверок правильности работы системы защиты, исследование и предотвращение сбоев в её работе. Примечание: администратор БД обычно назначает права доступа в соответствии с проектом БД, который должен включать перечень групп пользователей и их привилегии. Для каждого пользователя система поддерживает паспорт пользователя, содержащий его идентификатор, имя процедуры подтверждения подлинности и перечень разрешённых операций. Подтверждение подлинности заключается в доказательстве того, что пользователь является именно тем человеком, за кото- рого себя выдаёт. Чаще всего подтверждение подлинности выполняется путём парольной идентификации. Перечень операций обычно определяется той груп- пой, к которой принадлежит пользователь. В реальных системах иногда преду- сматривается возможность очень ограниченного доступа к данным посторонне- го человека, не требующая идентификации (доступ типа "гость"). Парольная идентификация заключается в присвоении каждому пользо- вателю двух параметров: имени (login) и пароля (password). При входе в систе- му она запрашивает у пользователя его имя, а для подтверждения того, что это имя ввёл его владелец, система запрашивает пароль. Имя выдаётся пользовате- лю при регистрации администратором, пароль пользователь устанавливает сам. При задании пароля желательно соблюдать следующие требования: длина пароля должна быть не менее 6-и символов; пароль должен содержать комбинацию букв и цифр или специальных зна- ков, пароль не может содержать пробелы; пароли должны часто меняться. Для контроля выполнения этих требований обычно применяются специальные программы. Управление доступом к данным осуществляется через СУБД, которая и обеспечивает защиту данных. Но такие данные вне СУБД становятся общедо- ступны. Если известен формат БД, можно осуществить к ней доступ с помощью другой программы (СУБД), и никакие ограничения при этом не помешают. Для таких случаев предусмотрено кодирование данных. Используются различные методы кодирования: перекомпоновка символов в кортеже, замена одних сим- волов (групп символов) другими символами (группами символов) и т.д. Коди- рование может быть применено не ко всему кортежу, а только к ключевым по- лям. Декодирование производится непосредственно в процессе обработки, что, естественно, увеличивает время доступа к данным. Поэтому к кодированию прибегают только в случае высоких требований к конфиденциальности данных. Предоставление прав доступа (привилегий) в системах, поддерживаю- щих язык SQL, осуществляется с помощью двух команд: GRANT – предоставление одной или нескольких привилегий пользователю (или группе пользователей): GRANT { <список привилегий> | ALL PRIVILEGES } ON <имя объекта> TO {<список пользователей> | PUBLIC} [WITH GRANT OPTION]; где <список привилегий> – набор прав, которые необходимо предоставить, или ALL PRIVILEGES – все права на данный объект; <имя объекта> – имя объекта БД, к которому предоставляется доступ; <список пользователей> – перечень пользователей (или ролей, см. дальше), которым будут предоставлены указанные права; PUBLIC – предопределённый пользователь, привилегии которого доступны всем пользователям БД. WITH GRANT OPTION – ключевые слова, дающие возможность пользовате- лям из списка пользователей предоставлять назначенные права другим пользователям (т.е. передавать эти права). Права, подразумеваемые под словами ALL PRIVILEGES, зависят от типа объекта. Примерный перечень прав в зависимости от типа объекта БД при- ведён в табл. 7.1. Таблица 7.1. Использование объектных привилегий
Примечание: процедурные объекты – это хранимые процедуры и функции. REVOKE – отмена привилегий: REVOKE [GRANT OPTION FOR] { <список привилегий> | ALL PRIVILEGES } ON <имя объекта> FROM {<список пользователей> | PUBLIC} { RESTRICT | CASCADE }; где [GRANT OPTION FOR] – отмена права передачи привилегий; CASCADE – при отмене привилегий у пользователя отменяются все приви- легии, которые он передавал другим пользователям; RESTRICT – если при отмене привилегий у пользователя необходимо отме- нить переданные другим пользователям привилегии, то операция заверша- ется с ошибкой. Другие ключевые слова имеют то же значение, что и в команде GRANT. Для того чтобы упростить процесс управления доступом, многие СУБД предоставляют возможность объединять пользователей в группы или опреде- лять роли. Роль – это совокупность привилегий, предоставляемых пользовате- лю и/или другим ролям. Такой подход позволяет предоставить конкретному пользователю определённую роль или отнести его к определённой группе поль- зователей, обладающей набором прав в соответствии с задачами, которые на неё возложены. Кроме привилегий на доступ к объектам СУБД ещё может поддерживать так называемые системныепривилегии: это права пользователя на созда- ние/изменение/удаление (create/alter/drop) объектов различных типов. В неко- торых системах такими привилегиями обладают только пользователи, вклю- чённые в группу АБД. Другие СУБД предоставляют возможность назначения дифференцированных системных привилегий любому пользователю в случае такой необходимости. Например, в СУБД Oracle права на создание таблиц и представлений, а также право на удаление любых представлений пользователю manager можно предоставить с помощью той же команды GRANT, только без указания объекта: GRANT create table, create view, drop any view TO manager; "Плохтотплан,которыйнедопускаетизменений". Публиус Сирус, древнеримский мыслитель |