ЗНАЕТЕ ЛИ ВЫ?

Обеспечение безопасности в БД



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

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

Для любого объекта всегда существуют две категории пользователей, которые имеют привилегии на любые действия с ним – это администраторы базы данных (пользователи, владеющие ролью dba) и создатель объекта. В том случае, если необходимо предоставить доступ к тому или иному объекту для других пользователей, используются операторы языка DCL (Data Control Language, язык управления доступом к данным) GRANT и REVOKE.

Существуют привилегии двух различных видов: объектные и системные.

Объектная привилегия (object privilege) разрешает выполнение определенной операции над конкретным объектом (например, над таблицей). Название каждой из объектных привилегии совпадает с названием оператора, который она разрешает выполнять тому или иному пользователю над конкретным объектом базы данных. Примеры объектных привилегий: SELECT, DELETE, INSERT, UPDATE, REFERENCES.

Системная привилегия (system privilege) разрешает выполнение операций над целым классом объектов – над всеми объектами какого-то типа, принадлежащими конкретному пользователю, или вообще над всеми объектами какого-то типа во всей базе данных.

 

Операторы GRANT и REVOKE

Предоставление пользователям необходимых привилегий и изъятие привилегий осуществляется с помощью операторов GRANT и REVOKE.

Оператор GRANT используется для предоставления привилегии, а оператор REVOKE – для изъятия привилегии, выданной оператором GRANT. Оба оператора могут использоваться как для объектных, так и для системных привилегий.

 

Синтаксис оператора GRANT таков:

GRANT привилегия ON объект TO обладатель_привилегий

[WITH GRANT OPTION];

где привилегия – это нужная привилегия, объект – это объект, к которому разрешается доступ, а обладатель_привилегий – пользователь, получающий привилегию.

По умолчанию пользователь, получивший какую-либо объектную или системную привилегию, не может передать ее другому пользователю. Право передачи регулируется наличием необязательного параметра WITH GRANT OPTION для объектных привилегий и WITH ADMIN OPTION для системных привилегий. Пользователь, получивший привилегию с указанием данной опции, имеет право передавать привилегию далее.

Синтаксис оператора REVOKE:

REVOKE привилегия ON объект FROM обладатель_привилегий

[CASCADE CONSTRAINTS];

где привилегия – это отменяемая привилегия, объект – это объект, на который предоставлена привилегия, обладатель_привилегий – пользователь, получающий эту привилегию. Необязательный параметр CASCADE CONSTRAINTS имеет то же значение, что и в операторе DROP TABLE – если команда GRANT отменяет привилегию REFERENCES (разрешение создавать внешние ключи, ссылающиеся на таблицу из другой схемы), то наличие параметра CASCADE CONSTRAINTS предварительно удалит все существующие внешние ключи, созданные благодаря наличию данной привилегии.

Примеры выдачи и изъятия привилегий при помощи команд GRANT и REVOKE:

GRANT select ON customers TO Adrian;

GRANT select, insert ON orders TO Adrian, Diana;

GRANT ALL ON customers TO Adrian;

REVOKE insert ON orders FROM Adrian;

 

Роли

Роль – это именованный набор системных и объектных привилегий. Роль это реализация идеи пакетной обработки данных, перенесенная в область баз данных, и используемая для оптимизации ручного труда администраторов баз данных. Действительно, если представить достаточно большую базу данных, состоящую из ста и более таблиц, то при появлении нового пользователя, которому нужно предоставить привилегии доступа к разным объектам, администратор базы данных должен выполнить довольно большой объем работы и проконтролировать, что выданы все необходимые привилегии. А если и самих пользователей базы данных достаточно много, то не трудно себе представить, сколько команд GRANT или REVOKE нужно постоянно выполнять администратору базы данных, чтобы управлять доступом к объектам базы данных.

Похожая проблема возникает, если появляется новый объект, доступ к которому нужно предоставлять для определенной категории пользователей. В этом случае администратор базы данных должен отдельно для каждого пользователя выполнить набор команд GRANT. Но в этом случае, при наличии большого числа пользователей, не исключена возможность, ошибки администратора и тогда каким-то пользователям привилегии не будут выданы.

Примеры команд GRANT и REVOKE для назначения и изъятия ролей, включения и изъятия привилегий из ролей:

-- создание роли

CREATE ROLE student;

-- выдача привилегий роли student

GRANT select ON TimeTable, Books TO student;

-- назначение роли student для пользователей

GRANT student TO PetrovAV, IvanovAA;

-- при включении привилегии в роль все пользователи

-- PertovAV и IvanovAA получат эту привилегию,

-- поскольку обладают ролью student

GRANT select ON Prepods TO student;

-- при изъятии привилегии из роли все пользователи,

-- которым назначена эта роль, перестанут владеть

-- этой привилегией

REVOKE select ON Prepods FROM student;

Существуют ряд встроенных ролей, которые используются для выполнения типовых задач:

CONNECT – роль, включающая в себя привилегии дающие возможность организации соединения (сессии) с базой данных;

RESOURCE – роль, включающая привилегии, дающие возможность создавать любые объекты внутри своей схемы;

PUBLIC – роль, которой обладают все пользователи базы данных. При необходимости разрешить какие-либо действия всем без исключения пользователям базы данных, нужно включить привилегию в роль PUBLIC.





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.004 с.)