Изучение средств идентификации, аутентификации и управления доступом в СУБД SQL Server 2005 (Лабораторная работа № 7), страница 5

В табл. 5 дано описание некоторых SQL-операторов и хранимых процедур, используемых для управления пользователями и ролями, а в табл. 6 – SQL-операторы, управляющие правами доступа пользователей. Хранимые процедуры специфичны для Transact-SQL, в то время как операторы из табл. 6 встречаются во многих других диалектах SQL.

Таблица 5 – Хранимые процедуры по управлению пользователями и ролями БД

Имя оператора или процедуры

Описание

Оператор create user

Создает пользователя и отображает его на учетную запись

Оператор alter user

Изменяет свойства пользователя

Оператор drop user

Удаляет пользователя

Оператор create role

Создает пользовательскую роль в БД

Оператор alter role

Изменяет настройки пользовательской роли БД

Оператор drop role

Удаляет пользовательскую роль

Процедура sp_addrolemember

Включает пользователя в фиксированную или пользовательскую роль БД

Процедура sp_helprolemember

Отображает список членов фиксированной или пользовательской роли БД

Процедура sp_droprolemember

Исключает пользователя из фиксированной или пользовательской роли БД

Таблица 6 – SQL-операторы управления правами доступа

Оператор

Описание

grant

Предоставляет права доступа пользователей и пользовательских ролей к объекту БД или право на выполнение команд Transact-SQL

deny

Запрещает доступ к объекту БД или выполнение команды Transact-SQL

revoke

Устанавливает неявное отклонение доступа к объекту БД для пользователя

Команды grant, deny и revoke имеют схожий синтаксис, который обязательно включает список разрешений (категорий доступа, см. табл. 4), объект БД и перечень пользователей и пользовательских ролей, для которых устанавливаются соответствующие права. Если пользователю (роли) предоставляется право выполнения команды Transact-SQL, синтаксис операторов grant, deny и revoke упрощается: в этом случае указывается перечень команд (см. табл. 4) и список пользователей (ролей).

Информацию о правах доступа можно получить при помощи вызова системной хранимой процедуры sp_helprotect.

Использование SQL Server Management Studio

Если выбрать в окне Object Explorer любую БД, то можно увидеть, что различные виды ее объектов группируются в отдельных папках. Пользователи и роли БД сгруппированы, соответственно, в папках Security\Users и Security\Roles.

Создание нового пользователя выполняется через контекстное меню папки Security\Users. При выборе опции New User открывается диалоговое окно Database User – New. В нем можно выполнить все необходимые действия, а именно:

·  задать имя пользователя в поле User name;

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

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

·  включить пользователя в одну или несколько ролей БД, установив соответствующие флажки.

Необходимо более подробно остановиться на третьем пункте. В описании лабораторной работы №2 говорилось о том, что схема (schema) в терминах SQL Server – это своего рода контейнер для объектов БД или, иначе говоря, это набор объектов БД, которые объединены общим пространством имен. Имя схемы включается в полное имя объекта БД. Что касается связи схем и пользователей, то, во-первых, для каждого пользователя определяется схема, владельцем которой он является по умолчанию. Имя такой схемы часто совпадает с именем пользователя, что весьма удобно: при таком подходе каждый пользователь имеет «свою» схему в БД.

В свете вышесказанного имеет смысл еще раз обратиться к правилам именования объектов БД в СУБД Microsoft SQL Server. Можно было бы использовать полные имена объектов в SQL-запросов. Тогда запросы наподобие следующего:

select * from aTable

были бы недопустимы, так как требовалось бы указывать и БД, и схему, в которой находится таблица. Например, таким образом:

select * from myDatabase.ivanpetrov.aTable

Здесь myDatabase – имя БД, а ivanpetrov – имя схемы.