Поделиться через


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

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

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

Предопределенные роли базы данных задаются на уровне базы данных и предусмотрены в каждой базе данных. Члены ролей базы данных 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 не могут считывать данные из пользовательских таблиц базы данных.

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

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

Имя роли базы данных msdb Описание
db_ssisadmin

db_ssisoperator

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

dc_operator

dc_proxy
Члены этих ролей базы данных могут администрировать и использовать сборщик данных. Дополнительные сведения см. в разделе Data Collection.
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 , запускающие пакеты, на использование учетной записи-посредника с ограниченными правами или добавьте членов sysadmin в роли db_ssisadmin и dc_admin.

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

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

Компонент Тип Описание
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) Get-Help Создает новую роль базы данных в текущей базе данных.
ALTER ROLE (Transact-SQL) Get-Help Изменяет имя роли базы данных.
DROP ROLE (Transact-SQL) Get-Help Удаляет роль из базы данных.
sp_addrole (Transact-SQL) Get-Help Создает новую роль базы данных в текущей базе данных.
sp_droprole (Transact-SQL) Get-Help Удаляет роль базы данных из текущей базы данных.
Хранимая процедура Хранимая процедура sp_addrolemember (Transact-SQL) Get-Help Добавляет пользователя базы данных, роль базы данных, имя входа Windows или группу Windows к роли текущей базы данных.
sp_droprolemember (Transact-SQL) Get-Help Удаляет учетную запись безопасности из роли SQL Server в текущей базе данных.

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

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

Представления каталога безопасности (Transact-SQL)

Хранимые процедуры безопасности (Transact-SQL)

Функции безопасности (Transact-SQL)

Обеспечение безопасности SQL Server

sp_helprotect (Transact-SQL)