Управл_данными / 18-безопасн
.pdfУправление данными
БЕЗОПАСНОСТЬ БАЗ ДАННЫХ
Зудилин А.Э. 2013
БЕЗОПАСНОСТЬ БАЗ ДАННЫХ
Нет ничего более ценного для организации, чем ее данные, поэтому они всегда должны быть защищены от кражи или случайного просмотра.
При этом, данные должны быть доступны для определенных пользователей
Большинство СУБД предоставляет механизмы, посредством которых они могут разрешить или ограничить доступ к данным.
В основе любой системы безопасности лежат авторизация и аутентификация пользователей.
Так называется процесс, в ходе которого пользователь подтверждает, что он — это именно он и что ему разрешено проводить операции, которые он собирается выполнить
Некоторые СУБД используют для этого средства безопасности операционной системы,
другие ведут свои собственные списки пользователей и паролей,
третьи интегрируются с внешними серверами службы каталогов.
2
Механизмы обеспечения безопасности
1)ограничение доступа к схеме БД (создание таблиц, изменение или уничтожение существующих таблиц и т.д.);
2)ограничение доступа к отдельным базам данных или таблицам;
3)ограничение типа доступа (только для чтения, доступ к отдельным столбцам и т.д.);
4)организация доступа к таблицам только через представления или хранимые процедуры;
5)создание нескольких уровней безопасности, вследствие чего обеспечивается различная степень доступа и контроля на основе регистрационного имени пользователя;
6)ограничение возможности управлять учетными записями пользователей.
3
Управление привилегиями пользователей
SQL используется обычно в многопользовательских средах, которые требуют введения различий между пользователями системы в отношении их прав или привилегий.
Администраторы баз данных, сами создают пользователей и дают им привилегии.
С другой стороны пользователи, которые создают таблицы, сами имеют права на управление этими таблицами.
Привилегии - это то, что определяет, может ли указанный пользователь выполнить данную команду.
Имеется несколько типов привилегий, соответствующих нескольким типам операций.
Привилегии даются и отменяются двумя командами SQL: GRANT (допуск) и REVOKE (отказ в допуске).
4
Термины
Пользователь (user). Каждый пользователь в среде SQL, имеет специальное идентификационное имя или номер.
Регистрация. В многопользовательских системах имеется специальная процедура входа в систему, которую пользователь должен выполнить, чтобы получить доступ к ресурсам системы.
Эта процедура определяет, какой идентификатор доступа связан с текущим пользователем.
Привилегия дается определенному пользователю по отношению к указанной таблице.
Пользователь создавший таблицу, является владельцем этой таблицы.
Это означает, что пользователь имеет все привилегии в этой таблице и может передавать привилегии к этой таблице другим пользователям.
5
Список привилегий
SELECT
Пользователь с этой привилегией может выполнять запросы к таблице.
INSERT
Пользователь с этой привилегией может выполнять команду INSERT в таблице.
UPDATE
Пользователь с этой привилегией может выполнять команду UPDATE на таблице. Можно ограничить эту привилегию для определенных столбцов таблицы.
DELETE
Пользователь с этой привилегией может выполнять команду DELETE в таблице.
REFERENCES
Пользователь с этой привилегией может определить внешний ключ, который использует один или более столбцов этой таблицы, как родительский ключ.
ALTER
Дает право выполнять команду ALTER TABLE в таблице.
6
Пример
Предположим, что пользователь Olga владеет таблицой ЗАКАЗЧИКИ и хочет позволить пользователю Alex выполнить запрос к ней.
Olga должна в этом случае ввести следующую команду:
GRANT SELECT ON ЗАКАЗЧИКИ TO Alex
Теперь Alex может выполнить запросы к таблице ЗАКАЗЧИКИ.
Он может только выбрать значения, но не может выполнить любое действие, которые бы изменяло на значения в таблице ЗАКАЗЧИКИ.
В отношении других привилегий синтаксис тот же:
GRANT INSERT ON ЗАКАЗЧИКИ TO Alex
GRANT UPDATE ON ЗАКАЗЧИКИ TO Alex
7
Можно предоставлять список привилегий для списка пользователей:
GRANT SELECT,UPDATE ON ЗАКАЗЧИКИ TO Alex,Oleg
Ограничение привилегий на отдельные столбцы (для UPDATE):
GRANT UPDATE(Adress,Phone) ON ЗАКАЗЧИКИ TO Alex
Предоставление всех привилегий одному пользователю:
GRANT ALL PRIVILEGES ON ЗАКАЗЧИКИ TO Alex
--- или кратко :---
GRANT ALL ON ЗАКАЗЧИКИ TO Alex
Предоставление привилегии для всех пользователей:
GRANT SELECT ON ЗАКАЗЧИКИ TO PUBLIC
8
Передача права предоставления привилегий
Иногда, создателю таблицы может потребоваться, чтобы другие пользователи могли получить право раздавать определенные привилегии для его таблицы.
SQL позволяет делать это с помощью предложения WITH GRANT OPTION
GRANT SELECT ON ЗАКАЗЧИКИ TO Alex
WITH GRANT OPTION
9
Отмена привилегий
Удаление привилегии сводится к команде REVOKE, почти стандартному средству с достаточно понятной формой записи.
Синтаксис команды REVOKE похож на GRANT, но имеет обратный смысл.
Чтобы удалить привилегию INSERT для Alex в таблице ЗАКАЗЫ, Вы можете ввести:
REVOKE INSERT ON ЗАКАЗЫ FROM Alex
Однако, здесь имеется некоторая неясность: если пользователь с правом передавать привилегии другим, сам теряет это право, остальные также их потеряют?
Наиболее общий подход такой:
Привилегии отменяются пользователем, который их предоставил, и отмена будет каскадироваться, то есть она будет автоматически распространяться на всех пользователей, получивших от него эту привилегию.
10