Роли уровня базы данных

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

В SQL Server существует два типа ролей уровня базы данных: предопределенные роли базы данных, стандартные для базы данных, и гибкие роли базы данных, которые может создать пользователь.

Предопределенные роли базы данных задаются на уровне базы данных и предусмотрены в каждой базе данных. Члены ролей базы данных db_owner и db_securityadmin могут управлять членством в предопределенных ролях базы данных. Но только члены роли базы данных db_owner могут добавлять членов в предопределенную роль базы данных db_owner. Кроме того, в базе данных msdb имеются специальные предопределенные роли базы данных.

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

Важное примечаниеВажно!

Не добавляйте гибкие роли базы данных в качестве членов предопределенных ролей. Это может привести к непреднамеренному повышению прав доступа.

В следующей таблице представлены предопределенные роли уровня базы данных и их возможности. Эти роли существуют во всех базах данных.

Имя роли уровня базы данных

Описание

db_owner

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

db_securityadmin

Элементы предопределенной роли базы данных db_securityadmin могут изменять членство в роли и управлять разрешениями. Добавление участников к этой роли может привести к непреднамеренному повышению прав доступа.

db_accessadmin

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

db_backupoperator

Члены предопределенной роли базы данных db_backupoperator могут создавать резервные копии базы данных.

db_ddladmin

Члены предопределенной роли базы данных db_ddladmin могут выполнять любые команды языка определения данных (DDL) в базе данных.

db_datawriter

Члены предопределенной роли базы данных db_datawriter могут добавлять, удалять или изменять данные во всех пользовательских таблицах.

db_datareader

Элементы предопределенной роли базы данных db_datareader могут считывать все данные из всех пользовательских таблиц.

db_denydatawriter

Члены предопределенной роли базы данных db_denydatawriter не могут добавлять, изменять или удалять данные в пользовательских таблицах базы данных.

db_denydatareader

Члены предопределенной роли базы данных db_denydatareader не могут считывать данные из пользовательских таблиц базы данных.

Дополнительные сведения о разрешениях предопределенных ролей уровня базы данных см. в разделе Разрешения предопределенных ролей базы данных (компонент Database Engine).

Роли базы данных msdb

База данных msdb содержит специальные роли, показанные в следующей таблице.

Имя роли базы данных msdb

Описание

db_ssisadmin

db_ssisoperator

db_ssisltduser

Члены этих ролей базы данных могут администрировать и использовать службы SSIS. Экземпляры SQL Server, обновленные с предыдущей версии, могут содержать более старую версию роли, имя которой присвоено с помощью служб DTS, а не служб SSIS. Дополнительные сведения см. в разделе Использование ролей служб Integration Services.

dc_admin

dc_operator

dc_proxy

Члены этих ролей базы данных могут администрировать и использовать сборщик данных. Дополнительные сведения см. в разделе Безопасность сборщика данных.

PolicyAdministratorRole

Члены роли базы данных db_ PolicyAdministratorRole могут выполнять все действия по настройке и обслуживанию политик и условий средства «Управление на основе политики». Дополнительные сведения см. в разделе Администрирование серверов с помощью управления на основе политик.

ServerGroupAdministratorRole

ServerGroupReaderRole

Члены этих ролей базы данных могут администрировать и использовать зарегистрированные группы серверов. Дополнительные сведения см. в разделе Создание групп серверов.

dbm_monitor

Создается в базе данных msdb, когда первая база данных регистрируется в мониторе зеркального отображения баз данных. Роль dbm_monitor не имеет членов до тех пор, пока системный администратор не назначит ее пользователям.

Важное примечаниеВажно!

Участники ролей db_ssisadmin и dc_admin могут повысить свои права до sysadmin. Такое повышение права доступа может произойти в результате того, что эти роли могут изменять пакеты служб Integration Services, а пакеты Integration Services могут выполняться SQL Server в контексте безопасности sysadmin агента SQL Server. Чтобы предотвратить повышение прав при выполнении планов обслуживания, наборов элементов сбора данных и других пакетов служб Integration Services, настройте задания агента SQL Server (запускающие пакеты) на использование учетной записи-посредника с ограниченными правами или добавляйте в роли db_ssisadmin и dc_admin только участников роли sysadmin.

Работа с ролями уровня базы данных

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

Функция

Тип

Описание

sp_helpdbfixedrole (Transact-SQL)

Метаданные

Возвращает список всех предопределенных ролей базы данных.

sp_dbfixedrolepermission (Transact-SQL)

Метаданные

Отображает разрешения предопределенной роли базы данных.

sp_helprole (Transact-SQL)

Метаданные

Возвращает информацию о ролях, относящихся к текущей базе данных.

sp_helprolemember (Transact-SQL)

Метаданные

Возвращает сведения о членах роли в текущей базе данных.

sys.database_role_members (Transact-SQL)

Метаданные

Возвращает одну строку для каждого члена каждой роли базы данных.

IS_MEMBER (Transact-SQL)

Метаданные

Указывает, является ли текущий пользователь членом указанной группы Microsoft Windows или роли базы данных Microsoft SQL Server.

CREATE ROLE (Transact-SQL)

Команда

Создает новую роль базы данных в текущей базе данных.

ALTER ROLE (Transact-SQL)

Команда

Изменяет имя роли базы данных.

DROP ROLE (Transact-SQL)

Команда

Удаляет роль из базы данных.

sp_addrole (Transact-SQL)

Команда

Создает новую роль базы данных в текущей базе данных.

sp_droprole (Transact-SQL)

Команда

Удаляет роль базы данных из текущей базы данных.

Хранимая процедура sp_addrolemember (Transact-SQL)

Команда

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

sp_droprolemember (Transact-SQL)

Команда

Удаляет учетную запись безопасности из роли SQL Server в текущей базе данных.

Роль базы данных public

Каждый пользователь базы данных принадлежит к роли базы данных public. Если для пользователя не были предоставлены или запрещены конкретные разрешения на защищаемый объект, он наследует разрешения роли public на этот объект.