Роли уровня базы данных
Чтобы легко управлять разрешениями в базах данных, 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)