Роли уровня сервера

Область применения:SQL Server (все поддерживаемые версии) Управляемый экземпляр SQL Azure Analytics Platform System (PDW)

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

SQL Server 2019 и предыдущих версиях предоставлялось девять предопределенных ролей сервера. Разрешения, предоставляемые предопределенным ролям сервера (за исключением общедоступных), нельзя изменить. Начиная с SQL Server 2012 (11.x), можно создавать пользовательские роли сервера и добавлять разрешения на уровне сервера таким пользовательским ролям. SQL Server 2022 (16.x) поставляется с 10 дополнительными ролями сервера, разработанными специально с учетом принципа минимальных привилегий, которые имеют префикс ##MS_ и суффикс##, чтобы отличать их от других обычных субъектов и пользовательских ролей сервера. Эти новые роли содержат привилегии, которые применяются к области сервера, но также могут наследоваться отдельным базам данных (за исключением роли сервера ##MS_LoginManager## ).)

Как и в случае локального SQL Server, разрешения сервера организованы в иерархической структуре. Разрешения, которые имеют эти роли на уровне сервера, могут распространяться на разрешения для базы данных. Чтобы разрешения были эффективно полезны на уровне базы данных, имя входа должно быть членом роли уровня сервера ##MS_DatabaseConnector## (начиная с SQL Server 2022 (16.x)), которая предоставляет разрешение CONNECT для всех баз данных, или иметь учетную запись пользователя в отдельных базах данных. Это также относится к master базе данных. Рассмотрим следующий пример: роль уровня сервера ##MS_ServerStateReader## содержит разрешение VIEW SERVER STATE. Имя входа, являющегося членом этой роли, имеет учетную запись пользователя в базах данных и masterWideWorldImporters. Этот пользователь также получит разрешение VIEW DATABASE STATE в этих двух базах данных по наследованию.

В роли уровня сервера можно добавлять субъекты уровня сервера (имена входа, учетные записи Windows и группы WindowsSQL Server ). Каждый член предопределенной роли сервера может добавлять другие имена входа к той же роли. Члены определяемых пользователем ролей сервера не могут добавлять в роль другие субъекты сервера.

Предопределенных ролей на уровне сервера

Примечание

Эти роли уровня сервера, появившиеся до SQL Server 2022 г. (16.x), недоступны в базе данных Azure SQL или Azure Synapse Analytics. Существуют специальные Azure SQL роли сервера базы данных для управления разрешениями, эквивалентные ролям уровня сервера, представленным в SQL Server 2022 (16.x). Дополнительные сведения о База данных SQL см. в статье Управление и предоставление доступа к базе данных.

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

Предопределенная роль уровня сервера Описание
sysadmin Члены предопределенной роли сервера sysadmin могут выполнять любые действия на сервере.
serveradmin Элементы предопределенной роли сервера serveradmin могут изменять параметры конфигурации на уровне сервера, а также выключать сервер.
securityadmin Элементы предопределенной роли сервера securityadmin управляют именами входа и их свойствами. Это могут быть разрешения на уровне сервера GRANT, DENY и REVOKE. Они также могут предоставлять, запрещать и отменять разрешения на уровне базы данных (инструкции GRANT, DENY и REVOKE) при наличии доступа к базе данных. Кроме того, они могут сбрасывать пароли для имен входа SQL Server .

Важно! Возможность предоставления доступа к компоненту Компонент Database Engine и настройки разрешений пользователей позволяет администратору безопасности назначать большинство разрешений сервера. Роль securityadmin должна считаться эквивалентной роли sysadmin . В качестве альтернативы, начиная с SQL Server 2022 (16.x), рассмотрите возможность использования новой предопределяемой роли сервера ##MS_LoginManager##.
processadmin Члены предопределенной роли сервера processadmin могут завершать процессы, работающие на экземпляре SQL Server.
setupadmin Члены предопределенной роли сервера setupadmin могут добавлять и удалять связанные серверы с помощью инструкций Transact-SQL. (Членство в роли sysadmin необходимо при использовании службы Среда Management Studio.)
bulkadmin Элементы предопределенной роли сервера bulkadmin могут выполнять инструкцию BULK INSERT.

Роль bulkadmin или разрешения ADMINISTER BULK OPERATIONS не поддерживаются для SQL Server на Linux. Операции массовой вставки для SQL Server на Linux может выполнять только sysadmin.
diskadmin Предопределенная роль сервера diskadmin используется для управления файлами на диске.
dbcreator Члены предопределенной роли сервера dbcreator могут создавать, изменять, удалять и восстанавливать любые базы данных.
public Каждое имя для входа SQL Server принадлежит к роли сервера public. Если субъекту сервера не предоставлены или запрещены определенные разрешения на защищаемый объект, пользователь наследует разрешения, предоставленные для этого объекта. Разрешения роли public следует назначать только тому объекту, который будет доступен всем пользователям. Вы не можете изменить членство в public.

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

Важно!

Большинство разрешений, предоставляемых следующими ролями сервера, неприменимы к Azure Synapse Analytics: processadmin, serveradmin, setupadmin и diskadmin.

Исправлены роли уровня сервера, появившиеся в SQL Server 2022 г.

В следующей таблице приведены дополнительные предопределяемые роли уровня сервера, появившиеся в SQL Server 2022 (16.x), и их возможности.

Примечание

Эти разрешения на уровне сервера недоступны для Управляемый экземпляр SQL Azure или Azure Synapse Analytics. ##MS_PerformanceDefinitionReader#, ##MS_ServerPerformanceStateReader## и ##MS_ServerSecurityStateReader## появились в SQL Server 2022 (16.x) и недоступны в базе данных Azure SQL.

Предопределенная роль уровня сервера Описание
##MS_DatabaseConnector## Члены предопределенной роли сервера ##MS_DatabaseConnector## могут подключаться к любой базе данных без необходимости подключаться к учетной записи пользователя в базе данных.

Чтобы запретить разрешение CONNECT для определенной базы данных, пользователи могут создать соответствующую учетную запись пользователя для этого имени входа в базе данных, а затем ЗАПРЕТИТЬ разрешение CONNECT для пользователя базы данных. Это разрешение DENY переопределяет разрешение GRANT CONNECT, полученное от этой роли.
##MS_LoginManager## Члены предопределенных ролей сервера ##MS_LoginManager## могут создавать, удалять и изменять имена входа. В отличие от старой предопределенной роли сервера securityadmin, эта роль не разрешает членам права GRANT доступа. Это более ограниченная роль, которая помогает соблюдать принцип минимальных привилегий.
##MS_DatabaseManager## Члены предопределенной роли сервера ##MS_DatabaseManager## могут создавать и удалять базы данных. Член роли ##MS_DatabaseManager##, который создает базу данных, становится ее владельцем, что позволяет ему подключиться к этой базе данных в качестве пользователя dbo. Пользователь dbo имеет все разрешения в этой базе данных. Члены роли ##MS_DatabaseManager##необязательно имеют разрешения на доступ к базам данных, которые им не принадлежат.
##MS_ServerStateManager## У участников предопределенной роли сервера ##MS_ServerStateManager## есть те же разрешения, что и у роли ##MS_ServerStateReader##. Кроме того, он содержит разрешение ALTER SERVER STATE, которое позволяет получить доступ к нескольким операциям управления, таким как , DBCC FREEPROCCACHEDBCC FREESYSTEMCACHE ('ALL'), .DBCC SQLPERF()
##MS_ServerStateReader## Члены предопределенных ролей сервера ##MS_ServerStateReader## могут считывать все динамические административные представления (DMV) и функции, охватываемые функцией VIEW SERVER STATE, и соответственно имеют разрешение VIEW DATABASE STATE для любой базы данных, в которой член этой роли имеет учетную запись пользователя.
##MS_ServerPerformanceStateReader ## Члены предопределенных ролей сервера ##MS_ServerPerformanceStateReader## могут считывать все динамические административные представления (DMV) и функции, охватываемые функцией VIEW SERVER PERFORMANCE STATE, и соответственно имеют разрешение VIEW DATABASE PERFORMANCE STATE для любой базы данных, в которой член этой роли имеет учетную запись пользователя. Это подмножество того, к чему имеет доступ роль сервера ##MS_ServerStateReader##, которая помогает соответствовать принципу минимальных привилегий.
##MS_ServerSecurityStateReader ## Члены предопределенных ролей сервера ##MS_ServerSecurityStateReader## могут считывать все динамические административные представления (DMV) и функции, охватываемые функцией VIEW SERVER SECURITY STATE, и соответственно имеют разрешение VIEW DATABASE SECURITY STATE для любой базы данных, в которой член этой роли имеет учетную запись пользователя. Это небольшое подмножество того, к чему имеет доступ роль сервера ##MS_ServerStateReader## , что помогает соответствовать принципу минимальных привилегий.
##MS_DefinitionReader## Члены предопределенных ролей сервера ##MS_DefinitionReader## могут считывать все представления каталога, охватываемые параметром VIEW ANY DEFINITION, и соответственно имеют разрешение VIEW DEFINITION для любой базы данных, в которой член этой роли имеет учетную запись пользователя.
##MS_PerformanceDefinitionReader ## Члены предопределенных ролей сервера ##MS_PerformanceDefinitionReader## могут считывать все представления каталога, охватываемые параметром VIEW ANY PERFORMANCE DEFINITION, и соответственно имеют разрешение VIEW PERFORMANCE DEFINITION для любой базы данных, в которой член этой роли имеет учетную запись пользователя. Это подмножество, к чему имеет доступ роль сервера ##MS_DefinitionReader## .
##MS_SecurityDefinitionReader## Участники предопределенной роли сервера ##MS_SecurityDefinitionReader## могут просматривать все представления каталога, доступ к которым предоставляется разрешением VIEW ANY SECURITY DEFINITION (Просмотр любого определения безопасности) и, соответственно, имеет разрешение VIEW SECURITY DEFINITION (Просмотр определения безопасности) для любой базы данных, в которой у участника этой роли есть учетная запись пользователя. Это небольшое подмножество того, к чему имеет доступ роль сервера ##MS_DefinitionReader###, которая помогает соответствовать принципу минимальных привилегий.

Разрешения предопределенных ролей сервера

Каждая предопределенная роль сервера обладает определенными разрешениями, назначенными ей.

Разрешения новых предопределенных ролей сервера в SQL Server 2022 г.

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

Предопределенная роль уровня сервера Разрешения уровня серверов Разрешения уровня базы данных
##MS_DatabaseConnector## CONNECT ANY DATABASE CONNECT
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
Н/Д
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ СЕРВЕРА
VIEW DATABASE STATE
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ БАЗЫ ДАННЫХ
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ БАЗЫ ДАННЫХ
##MS_ServerStateReader## VIEW SERVER STATE
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ СЕРВЕРА
VIEW DATABASE STATE
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ БАЗЫ ДАННЫХ
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ БАЗЫ ДАННЫХ
##MS_ServerPerformanceStateReader ## ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ БАЗЫ ДАННЫХ
##MS_ServerSecurityStateReader ## ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ СЕРВЕРА ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ БАЗЫ ДАННЫХ
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
ПРОСМОТР ЛЮБОГО ОПРЕДЕЛЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
ПРОСМОТР ВСЕХ ОПРЕДЕЛЕНИЙ БЕЗОПАСНОСТИ
VIEW DEFINITION
ПРОСМОТР ОПРЕДЕЛЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
ПРОСМОТР ОПРЕДЕЛЕНИЯ БЕЗОПАСНОСТИ
##MS_PerformanceDefinitionReader ## ПРОСМОТР ЛЮБОГО ОПРЕДЕЛЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ ПРОСМОТР ОПРЕДЕЛЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
##MS_SecurityDefinitionReader## ПРОСМОТР ВСЕХ ОПРЕДЕЛЕНИЙ БЕЗОПАСНОСТИ ПРОСМОТР ОПРЕДЕЛЕНИЯ БЕЗОПАСНОСТИ

Разрешения ролей сервера для SQL Server 2019 и более ранних версий

На следующем рисунке показаны разрешения, назначенные устаревшим ролям сервера (SQL Server 2019 и более ранних версий).
fixed_server_role_permissions

Важно!

Разрешение CONTROL SERVER похоже на, но не идентично sysadmin предопределенной роли сервера. Разрешения не влекут за собой членства роли, а членства роли не предоставляют разрешений. (Например, CONTROL SERVER не подразумевает членство в предопределенной роли сервера sysadmin .) Однако иногда можно олицетворение между ролями и эквивалентными разрешениями. Большинство команд DBCC и многие системные процедуры требуют членство в sysadmin предопределенной роли сервера. Список из 171 системной хранимой процедуры, которым требуется членство в роли sysadmin , содержится в следующей записи блога Андреаса Волтера (Andreas Wolter) Сравнение CONTROL SERVER и sysadmin/sa: разрешения, системные процедуры, DBCC, автоматическое создание схем и расширение привилегий — разъяснения.

Разрешения уровня серверов

В пользовательские роли сервера можно добавить только разрешения уровня сервера. Для составления списка разрешений уровня сервера, выполните следующее выражение. Разрешениями уровня сервера являются:

SELECT * FROM sys.fn_builtin_permissions('SERVER') ORDER BY permission_name;  

Дополнительные сведения о разрешениях см. в разделах Разрешения (ядро СУБД) и sys.fn_builtin_permissions (Transact-SQL).

Работа с ролями на уровне сервера

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

Компонент Тип Описание
sp_helpsrvrole (Transact-SQL) Метаданные Возвращает список ролей уровня сервера.
sp_helpsrvrolemember (Transact-SQL) Метаданные Возвращает сведения о членах роли уровня сервера.
sp_srvrolepermission (Transact-SQL) Метаданные Отображает разрешения роли уровня сервера.
Функция IS_SRVROLEMEMBER (Transact-SQL) Метаданные Указывает, является ли имя входа SQL Server членом указанной роли уровня сервера.
sys.server_role_members (Transact-SQL) Метаданные Возвращает одну строку для каждого члена каждой роли уровня сервера.
CREATE SERVER ROLE (Transact-SQL) Get-Help Создает определяемую пользователем роль сервера.
ALTER SERVER ROLE (Transact-SQL) Get-Help Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера.
DROP SERVER ROLE (Transact-SQL) Get-Help Удаляет определяемую пользователем роль сервера.
sp_addsrvrolemember (Transact-SQL) Get-Help Добавляет имя входа в качестве члена роли уровня сервера. Не рекомендуется. Используйте вместо этого ALTER SERVER ROLE .
sp_dropsrvrolemember (Transact-SQL) Get-Help Удаляет из роли уровня сервера имя входа SQL Server либо пользователя или группу Windows. Не рекомендуется. Используйте вместо этого ALTER SERVER ROLE .

См. также раздел

Роли уровня базы данных
Представления каталога безопасности (Transact-SQL)
Функции безопасности (Transact-SQL)
Обеспечение безопасности SQL Server
GRANT, предоставление разрешений участникам на уровне сервера (Transact-SQL)
REVOKE, отмена разрешений участника на уровне сервера (Transact-SQL)
DENY, запрет разрешения участника на уровне сервера (Transact-SQL)
Создание роли сервера
Роли сервера Базы данных SQL Azure для управления разрешениями