double arrow

Операторы управления привилегиями

Операторы контроля данных, защиты и управления данными

В контексте баз данных термин «безопасность» означает защиту данных от несанкционированного раскрытия, изменения или уничтожения. SQL позволяет индивидуально защищать как целые таблицы, так и отдельные их поля. Для этого имеются две более или менее независимые возможности:

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

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

Каждый пользователь в среде SQL, имеет специальное идентификационное имя или номер. Команда, посланная в базе данных, ассоциируется с определенным пользователем, или иначе, специальным идентификатором доступа. Команда интерпретируется и разрешается (или запрещается) на основе информации, связанной с идентификатором (ID) доступа пользователя, подавшего команду.

Обычно при установке СУБД в нее вводится какой-то идентификатор, который должен далее рассматриваться как идентификатор наиболее привилегированного пользователя - системного администратора. Каждый, кто может войти в систему с этим ID (и может выдержать тесты на достоверность), будет считаться системным администратором до выхода из системы. Системный администратор может создавать БД и имеет все привилегии на их использование. Эти привилегии или их часть могут предоставляться другим пользователям (пользователям с другими ID). В свою очередь, пользователи, получившие привилегии от системного администратора, могут передать их (или их часть) другим пользователям, которые могут их передать следующим и т.д.

Определение привилегий производится в следующем синтаксисе:

GRANT <привилегии> ON < объект> TO < субъект >

[{,<субъект >}...] [WITH GRANT OPTION];

<привилегии>::= ALL [PRIVILEGES] | <действие> [{,<действие> }...]

<действие>::= SELECT | INSERT | DELETE | UPDATE [(<список столбцов>)]

| REFERENCES [(<список столбцов>)]

[(<список столбцов>)]::= <имя_столбца> [{,<имя_столбца> }...]

<субъект>::= PUBLIC | <идентификатор_доступа_пользователя>

<привилегии> - список, состоящий из одной или нескольких привилегий, разделенных запятыми, либо фраза ALL PRIVILEGES (все привилегии); <объект> - имя и, если надо, тип объекта (база данных, таблица, представление, индекс и т.п.); <субъекты> - список, включающий один или более идентификаторов доступа, разделенных запятыми, либо специальное ключевое слово PUBLIC (общедоступный).

Замечание. Привилегией REFERENCES по отношению к указанным столбцам таблицы T1 необходимо обладать, чтобы иметь возможность при определении таблицы T определить ограничение по ссылкам между этой таблицей и существующей к этому моменту таблицей T1.

Замечание. Когда вы предоставляете привилегии для публикации, все пользователи автоматически их получают. Наиболее часто, это применяется для привилегии SELECT в определенных базовых таблицах или представлениях, которые вы хотите сделать доступными для любого пользователя.

Пример 4. 57 GRANT SELECT, INSERT ON Порядки TO Адриан, Диана;

Пример 4. 58 GRANT ALL ON Заказчики TO Стефан; Пример 4. 59 GRANT SELECT ON Orders TO PUBLIC; Пользователь должен иметь возможность передать привилегии (или их часть) другим пользователям. Обычно это делается в системах, где один или более пользователей создают несколько (или все) базовые таблицы в БД, а затем передают ответственность за них тем, кто будет фактически с ними работать. SQL позволяет делать это с помощью предложения WITH GRANT OPTION. Пример 4. 60 Если Диана хотела бы, чтобы Адриан имел право предоставлять привилегию SELECT в таблице Заказчики другим пользователям, она дала бы ему привилегию SELECT с использованием предложения WITH GRANT OPTION: GRANT SELECT ON Заказчики TO Адриан WITH GRANT OPTION; После выполнения этой команды Адриан получил право передавать привилегию SELECT третьим лицам

Если пользователь USER_1 предоставил какие-либо привилегии другому пользователю USER_2, то он может впоследствии отменить все или некоторые из этих привилегий. Отмена осуществляется с помощью предложения REVOKE (отменить), общий формат которого очень похож на формат предложения GRANT:

REVOKE <привилегии> ON < объект> FROM < субъект > [{,<субъект >}...];

Пример 4. 61 REVOKE INSERT, DELETE ON Заказчики FROM Адриан, Стефан.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: