Роли в MS SQL Server

 

Роль – группировка, позволяющая объединять пользователей, выполняющих одинаковые функции.

Роли были введены вместо групп для упрощения администрирования системы безопасности SQL Server.

 

В SQL Server имеется три вида ролей:

1.Роли сервера.

2.Роли баз данных.

3.Роли приложения.

 

 

Роли сервера (server role)

 

SQL Server имеет 9стандартных фиксированных ролей сервера (fixed server role) .

• Эти роли нельзя удалить.

• Нельзя модифицировать права их доступа.

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

 

Таблица. Фиксированные роли сервера

 

Sysadmin Может выполнять любые действия в SQL Server
Serveradmin Выполняет конфигурирование и выключение сервера
Setupadmin Управляет репликацией и связанными серверами
Securityadmin Управляет учетными записями и правами на создание базы данных, также может читать журнал ошибок
Processadmin Управляет процессами, запущенными в SQL Server
Dbcreator Может создавать и модифицировать базы данных
Diskadmin Управляет дисковыми файлами SQL Server
Bulkadmin Могут выполнять Bulk Insert операторы. (вставлять данные с использованием средств массового копирования (Bulk Insert), не имея непосредственного доступа к таблицам)
Public Специальная роль. Все login-ы - члены этой роли. Права смотреть любую базу данных.

 

 

 

 

 

 

Роли базы данных (database role)

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

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

Создайте необходимое количество ролей, которые охватывали бы все многообразие действий с базой данных.

 

 

В роль базы данных можно включать:

• пользователей SQL Server;

• роли SQL Server;

• пользователей Windows;

• группы Windows, которым предварительно предоставлен доступ к нужной базе данных.

 

При создании базы данных для нее определяются стандартные фиксированные роли базы данных (fixed database role) .

10 ролей.

 

 

Они не могут быть изменены или удалены.

 

 

Таблица. Фиксированные роли баз данных

 

Встроенная роль Назначение
db__owner Имеет все права в базе данных
db_accessadmin Может добавлять или удалять пользователей
db_securityadmin Управляет всеми разрешениями, объектами, ролями и членами ролей
db_ddladmin Может выполнять любые команды DDL, кроме GRANT, DENY и REVOKE
db_backupoperator Может выполнять команды DBCC, CHECKPOINT и BACKUP
db_datareader Может просматривать любые данные в любой таблице БД
db_datawriter Может модифицировать любые данные в любой таблице БД
db_denydatareader Запрещается просматривать данные в любой таблице
db_denydatawriter Запрещается модифицировать данные в любой таблице

 

Роль public.

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

Нельзя явно установить членов этой роли, потому что все пользователи и так автоматически являются ее членами.

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

Если в базе данных разрешен пользователь guest, то установленный для publiс доступ будут иметь все пользователи, получившие доступ к SQL Server.

Роль public имеется во всех базах данных, включая системные базы данных master, tempdb, msdb, model, И не может быть удалена.

 

Средства Enterprise Manager позволяют добавлять в роль базы данных только пользователей базы данных (user).

Используйте хранимую процедуру sp_addrolemember, чтобы задействовать все возможности SQL Server:

sp_addrolemember [@ro1ename =] 'role', [@membername =] 'security_account'

Здесь параметры означают следующее:

role— название роли SQL Server в текущей базе данных;

security_account — имя того объекта системы безопасности, который необходимо включить в роль. В качестве такого объекта могут выступать как учетные записи SQL Server, так и пользователи и группы Windows, которым предоставлен доступ к серверу баз данных.

 

Роли приложения (Application role)

 

Используются когда необходим постоянный набор прав для доступа к базе данных из приложения, например:

• специальные приложения для работы с большими базами данных, имеющими множество сложных взаимосвязанных таблиц с тысячами или миллионами записей

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

 

Отличия между стандартными ролями базы данных и ролью приложения:

• роль приложения не имеет членов. Пользователи SQL Server или Windows не могут быть добавлены в эту роль.

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