Технический университет И. П. Карпова базы данных утверждено Редакционно-издательским советом института в качестве Учебного пособия Москва 2009

Вид материалаДокументы

Содержание


Защита от несанкционированного доступа
Парольная идентификация
[with grant option]
Revoke [grant option for]
Подобный материал:
1   ...   16   17   18   19   20   21   22   23   ...   29

Защита от несанкционированного доступа


Под функцией секретности данных понимается защита данных от преднамеренного искажения и/или доступа пользователей или посторонних лиц. Для этого вся информация делится на общедоступные данные и конфиденциальные, доступ к которым разрешен только для отдельных групп лиц. Решение этого вопроса относится к компетенции юридических органов или администрации предприятия, для которого создаётся БД, и является внешней функцией по отношению к БД.

Рассмотрим техническую сторону обеспечения защиты данных в БД от несанкционированного доступа. Общий принцип управления доступом к базе данных такой: СУБД не должна разрешать пользователю выполнение какой-либо операции над данными, если он не получил на это права. Санкционирование доступа к данным осуществляется администратором БД. В обязанности администратора БД входит:
  • назначение отдельным группам пользователей прав доступа (привилегий) к отдельным группам данных в соответствии с правилами ПО;
  • организация системы контроля доступа к данным;
  • тестирование вновь создаваемых средств защиты данных;
  • периодическое проведение проверок правильности работы системы защиты, исследование и предотвращение сбоев в её работе.

Примечание: администратор БД обычно назначает права доступа в соответствии с проектом БД, который должен включать перечень групп пользователей и их привилегии.

Для каждого пользователя система поддерживает паспорт пользователя, содержащий его идентификатор, имя процедуры подтверждения подлинности и перечень разрешённых операций. Подтверждение подлинности заключается в доказательстве того, что пользователь является именно тем человеком, за которого себя выдаёт. Чаще всего подтверждение подлинности выполняется путём парольной идентификации. Перечень операций обычно определяется той группой, к которой принадлежит пользователь. В реальных системах иногда предусматривается возможность очень ограниченного доступа к данным постороннего человека, не требующая идентификации (доступ типа "гость").

Парольная идентификация заключается в присвоении каждому пользователю двух параметров: имени (login) и пароля (password). При входе в систему она запрашивает у пользователя его имя, а для подтверждения того, что это имя ввёл его владелец, система запрашивает пароль. Имя выдаётся пользователю при регистрации администратором, пароль пользователь устанавливает сам.

При задании пароля желательно соблюдать следующие требования:
  • длина пароля должна быть не менее 6-и символов;
  • пароль должен содержать комбинацию букв и цифр или специальных знаков, пароль не может содержать пробелы;
  • пароли должны часто меняться.

Для контроля выполнения этих требований обычно применяются специальные программы.

Управление доступом к данным осуществляется через СУБД, которая и обеспечивает защиту данных. Но такие данные вне СУБД становятся общедоступны. Если известен формат БД, можно осуществить к ней доступ с помощью другой программы (СУБД), и никакие ограничения при этом не помешают. Для таких случаев предусмотрено кодирование данных. Используются различные методы кодирования: перекомпоновка символов в кортеже, замена одних символов (групп символов) другими символами (группами символов) и т.д. Кодирование может быть применено не ко всему кортежу, а только к ключевым полям. Декодирование производится непосредственно в процессе обработки, что, естественно, увеличивает время доступа к данным. Поэтому к кодированию прибегают только в случае высоких требований к конфиденциальности данных.

Предоставление прав доступа (привилегий) в системах, поддерживающих язык SQL, осуществляется с помощью двух команд:
  1. GRANT – предоставление одной или нескольких привилегий пользователю (или группе пользователей):

GRANT { <список привилегий> | ALL PRIVILEGES }

ON <имя объекта>

TO {<список пользователей> | PUBLIC}

[WITH GRANT OPTION];

где <список привилегий> – набор прав, которые необходимо предоставить, или ALL PRIVILEGES – все права на данный объект;

<имя объекта> – имя объекта БД, к которому предоставляется доступ;

<список пользователей> – перечень пользователей (или ролей, см. дальше), которым будут предоставлены указанные права;

PUBLIC – предопределённый пользователь, привилегии которого доступны всем пользователям БД.

WITH GRANT OPTION – ключевые слова, дающие возможность пользователям из списка пользователей предоставлять назначенные права другим пользователям (т.е. передавать эти права).

Права, подразумеваемые под словами ALL PRIVILEGES, зависят от типа объекта. Примерный перечень прав в зависимости от типа объекта БД приведён в табл. 6.1.

Таблица 6.1. Использование объектных привилегий

Привилегия

Операции

Таблицы

Представления

Процедурные объекты

ALTER

изменение определения объекта

+

+

+

DELETE

удаление данных

+

+




EXECUTE

выполнение объекта







+

INSERT

добавление данных

+

+




SELECT

чтение данных

+

+




UPDATE

изменение данных

+

+




Примечание: процедурные объекты – это хранимые процедуры и функции.
  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

TO manager;

"Плох тот план, который не допускает изменений".
Публиус Сирус, древнеримский мыслитель