Организация управления правами доступа в современных субд oracle10g и ms sql server 2008

Вид материалаКурсовая работа

Содержание


2.2 Права пользователя
All [privileges]|
[with grant option]
All [privileges] |
Revoke [grant options for]
Подобный материал:
1   2   3   4   5

2.2 Права пользователя


Простейшее определение, что такое права пользователя (user rights), звучит как: ''Что пользователь может делать, а что ему делать запрещено". В данном случае самое простое определение самое удачное.

Пользовательские права делятся на три категории:

-права подключения к системе;

-права доступа к определенным базам данных;

-права на выполнение определенных действий над отдельными объектами в базе данных.
2.2.1 Предоставление доступа к определенной базе данных

Если вы хотите, чтобы пользователь имел доступ к конкретной базе данных, необходимо предоставить ему соответствующие права. Вы можете осуществить предоставление прав в Enterprise Manager, добавив пользователя к элементу Users узла Databases вашего сервера. Чтобы сделать то же самое при помощи T-SQL, необходимо воспользоваться процедурой:


sp_grantdbaccess [@loginame =] <'имя пользователя'>

[@name in db =] <'имя в данной базе'>

Обратите внимание, что доступ будет назначен к текущей базе данных, поэтому прежде, чем выполнять вышеуказанную хранимую процедуру, убедитесь, что вы хотите предоставить пользователю права доступа именно к этой базе данных. Регистрационным именем является действующее имя пользователя, под которым он подключается к SQL Server. Параметр name_in_db позволит вам всегда однозначно идентифицировать данного пользователя в базе данных. Внутреннее имя служит исключительно целям определенной базы данных - во всех остальных базах данных для идентификации данного пользователя будет по-прежнему применяться его регистрационное имя, в независимости от того, какое имя вы назначили пользователю здесь. Присвоение внутреннего имени влияет на идентифицирующую функцию USER_NAME (), Функции, производящие идентификацию на системном уровне, такие как SYSTEM USER будут возвращать основное регистрационное имя пользователя.

Лишение прав доступа производится практически аналогично - для этого придется воспользоваться системной хранимой процедурой sp_revokedbaccess:


sp_revokedbaccess [@name_in_db =] <'имя пользователя'>

2.2.2 Предоставление доступа к определенным объектам таблицы

Итак, пользователь получил регистрационное имя и доступ к базе данных, который вы пожелали ему предоставить, и все как будто выполнено? Если бы все было так просто! На самом деле нам еще есть над чем поработать.


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


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


Права пользователей на те или иные объекты делятся на шесть различных категорий:

Права пользователя

Описание

SELECT

Разрешает пользователям просматривать данные. Если пользователь обладает данным правом, он может применять оператор SELECT к любой таблице либо представлению, на которые распространяется это право

INSERT

Предоставляет пользователю возможность вносить новые данные. Таким образом, пользователь может применять оператор INSERT. Обратите внимание, что в отличие от большинства систем, привилегии на выполнение оператора INSERT не обязательно подразумевают права на использование оператора SELECT

UPDATE

Предоставляет пользователю возможность редактировать существующие данные. Пользователь с данными правами может применять оператор UPDATE. Аналогично ситуации с оператором insert, наличие привилегий на выполнение оператора update не обязательно подразумевает права на использование оператора SELECT

DELETE

Разрешает пользователю удалять данные. Пользователь с данными правами может применять оператор DELETE. Опять-таки, привилегии на выполнение оператора DELETE не предоставляют автоматически прав на использование оператора SELECT

REFERENCES

Позволяет пользователю вставлять записи в таблицу, имеющую ограничения внешнего ключа, ссылающегося на таблицу, по отношению к которой пользователь не обладает правами на применение оператора SELECT

EXECUTE

Предоставляет пользователю право выполнять хранимые процедуры


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


Назначить соответствующие права можно в Enterprise Manager, перейдя к опции Logins в узле Security для вашего сервера. Просто щелкните правой кнопкой мыши на имени пользователя и выберите Properties, Перед вами появится диалоговое окно, в зависимости от того, какой узел в дереве был выбран - базы данных целиком либо узел безопасности. В последнем случае вы сможете установить разрешения на доступ. Назначить привилегии при помощи T-SQL столь же просто, даже если вы привыкли присваивать права в ЕМ, поскольку здесь используется та же терминология. В T-SQL для этого имеются три команды.


GRANT

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

Синтаксис выражения GRANT выглядит следующим образом:


GRANT

ALL [PRIVILEGES]| <разрешение>[,...n]

ON

<имя_таблицы_или_представления> [(<имя столбца>[,...n])]

| <имя_стандартной_или_расширенной_хранимой_процедуры>

TO <имя_пользователя_либо_роли> [,...n]

[WITH GRANT OPTION]

[AS <имя_роли>]


Ключевое слово ALL свидетельствует о том, что вы собираетесь предоставить все возможные права доступа к данному объекту (применение оператора EXECUTE не имеет смысла для таблицы). Если вы не зададите ALL, вам необходимо будет указать одно или несколько определенных прав доступа к данному объекту.

PRIVILEGES - новое ключевое слово, не выполняющее никакой функции и добавленное исключительно с целью совместимости со стандартом ANSI-92.

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

Выражение ТО определяет, кому необходимо присвоить данный уровень доступа. Можно задать имя пользователя либо роль.

WITH GRANT OPTION дает возможность пользователю, получившему определенные привилегии, передавать их другим пользователям.

И последнее, но не по важности, ключевое слово AS. Оно определяет статус пользователя, входящего в состав нескольких ролей.

DENY

Оператор DENY явно запрещает доступ пользователям к целевому объекту. Ключевое слово DENY отменяет все привилегии, предоставленные ранее оператором GRANT. Поскольку пользователь может принадлежать к нескольким ролям, то возможна ситуация, в которой пользователю с одной стороны оператором GRANT предоставлены права доступа к данному объекту (например, как члену какой-то роли), а с другой - наложен запрет оператором DENY, в таком случае всегда побеждает оператор DENY, Другими словами, если пользователь либо роль, к которой он относится, имеет запрет на доступ к данному объекту, пользователь не сможет воспользоваться привилегиями, дарованными с другой стороны.


DENY

ALL [PRIVILEGES] | <разрешеиие>[,...n]

ON

<имя_таблицы_или_представления> [(<имя_столбца> [,...n ])]

| <имя_стандартной_или_расширенной_хранимой_процедуры>

TO <имя_пользователя_либо_роли> [,...n]

[CASCADE]

Ключевое слово ALL точно также означает, что отменяются все права, применимые к объекту данного типа (право EXECUTE не применимо к таблице). Вы можете задать одно или несколько прав, применение которых вы хотите запретить для этого объекта.

PRIVILEGES не обладает никакой функциональностью и добавлено в качестве нового ключевого слова в целях совместимости с ANSI-92.

После слова ON следует имя объекта, к которому применяется оператор DENY.

Все вышеупомянутые параметры работают аналогично оператору GRANT. Отличие можно увидеть в опции CASCADE которая, однако, по функциональности совпадает с параметром WITH GRANT OPTION. Задание опции CASCADE сообщает SQL Server о вашем намерении лишить прав доступа всех пользователей, которым данный пользователь предоставил привилегии в соответствии с параметром WITH GRANT OPTION.

REVOKE

Оператор REVOKE отменяет результаты предшествующей команды DENY или GRANT.

По производимому эффекту он очень напоминает применяемый к объектам оператор Undo.

Синтаксис представляет собой сочетание синтаксиса выражений DENY и GRANT:


REVOKE [GRANT OPTIONS FOR]

ALL [PRIVILEGES] | <список_прав>[,...n]

ON

<имя_таблицы_или__представления>[(<имя столбца>[,...n])]

| <имя_стандартной_или_расширенной_хранимой_процедуры>

TO | FROM <имя_пользователя_либо_роли> [,...n]

[CASCADE]

[AS <имя_роли>]

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

PRIVILEGES не обладает никакой функциональностью и добавлено в качестве нового ключевого слова в целях совместимости со стандартом ANSI-92.

За ключевым словом ON следует имя объекта, для которого отменяются те или иные привилегии.

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

Ключевое слово AS опять-таки определяет, к какой роли вашего пользователя применяется оператор REVOKE.