Для отображения списка ролей базы данных используется группу Roles. Для просмотра пользователей, входящих в эту группу необходимо выполнить команду Properties.
Выполнение операторов языка Transact-SQL и действий в системе может быть выполнено только после успешной аутентификации пользователя. При получении оператора Transact-SQL от пользователя сервер проверяет, имеет ли право пользователь на выполнение соответствующих действий. Если права есть, то действие выполняется, в противном случае возвращается сообщение об ошибке.
Действия, которые могут быть выполнены пользователем, определяются правами, выданными ему непосредственно, или ролью, в которой он состоит. Таким образом, пользователь должен иметь соответствующие разрешения на выполнение тех или иных действий.
Права в MS SQL Server можно разделить на три категории: разрешения для объектов, разрешения для команд Transact-SQL и неявные разрешения.
Для различных объектов применяются такие наборы разрешений как:
· SELECT. Пользователь с этой привилегией может выполнять запросы в таблице.
· INSERT. Пользователь с этой привилегией может добавлять данных в таблицу.
· UPDATE. Пользователь с этой привилегией может изменять данные в таблице. Нельзя назначить эту привилегию для определенных полей таблицы.
· DELETE. Пользователю с этой разрешено удалять данные из таблицы.
· ALL. Пользователю предоставлены любые разрешения.
Разрешения для команд Transact-SQL контролируют возможность создания объектов в базе данных, создание самой базы данных и выполнение процедуры резервного копирования.
Управление разрешениями пользователя на доступ к объектам базы данных осуществляется с помощью команды GRANT:
GRANT
{ разрешение [,...n] }{ ON таблица | представление [(поле[,...n])]
| ON [хранимая процедура[,...n] }
TO учетная запись [,...n][WITH GRANT OPTION]
Назначение аргументов этой команды:
· разрешение – список разрешений, предоставляемых пользователю. Если предоставляется несколько разрешений одновременно, то они разделяются запятыми;
· таблица, представление, хранимая процедура – указываются имена конкретных объектов текущей базы данных, для которых необходимо предоставить доступ. MS SQL Server обладает возможностью определять права доступа не только на уровне таблицы, но и на уровне поля;
· учетная запись – указывается имя объекта системы безопасности, которому предоставляются права. В качестве объекта может выступать как учетные записи пользователей, так и их группы;
· WITH GRANT OPTION – позволяет пользователю, которому предоставляются права, назначать их и для других пользователей.
Например, с помощью следующей команды пользователю TestUserбазы данных AdventureWorks предоставляются права выборки и изменения данных таблицы Orders этой базы данных:
GRANT SELECT, UPDATE ON AdventureWorks2008.Production.WorkOrder TO TestUser
Следующая команда предоставляет пользователю Andy права только выборки данных полей Name и ListPrice таблицы Product базы данных AdventureWorks:
GRANT SELECT ON AdventureWorks2008.Production.Product (Name, ListPrice) TO Andy