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

Применимо к:SQL ServerSql Azure Sql Managed InstanceAnalytics 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## содержит состояние СЕРВЕРА ПРЕДСТАВЛЕНИЯ разрешений. Имя входа, являющегося членом этой роли, имеет учетную запись пользователя в базах данных master и WideWorldImporters. Затем у этого пользователя также будет разрешение VIEW DATABASE STATE в этих двух базах данных путем наследования.

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

Фиксированные роли уровня сервера

Заметка

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

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

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

ВАЖНО. Возможность предоставлять доступ к ядро СУБД и настраивать разрешения пользователей позволяет администратору безопасности назначать большинство разрешений сервера. Роль 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 или разрешения АДМИНИСТРИРОВАНИЯ BULK OPERATIONS не поддерживаются для SQL Server в Linux. Операции массовой вставки для SQL Server на Linux может выполнять только sysadmin.
diskadmin Предопределенная роль сервера diskadmin используется для управления файлами на диске.
dbcreator Члены предопределенной роли сервера dbcreator могут создавать, изменять, удалять и восстанавливать любые базы данных.
public Каждое имя входа SQL Server принадлежит роли общедоступного сервера. Если субъект-сервер не был предоставлен или запрещен в определенных разрешениях для защищаемого объекта, пользователь наследует разрешения, предоставленные общедоступному объекту. Разрешения роли 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) и недоступны в базе данных SQL Azure.

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

Чтобы запретить разрешение CONNECT для определенной базы данных, пользователи могут создать соответствующую учетную запись пользователя для этого имени входа в базе данных, а затем ЗАПРЕТИТЬ разрешение CONNECT для пользователя базы данных. Это разрешение DENY переопределяет разрешение GRANT CONNECT, полученное от этой роли.
##MS_LoginManager## Члены предопределенных ролей сервера ##MS_LoginManager## могут создавать, удалять и изменять имена входа. В отличие от старой предопределенных ролей сервера безопасности, эта роль не позволяет членам GRANT привилегий. Это более ограниченная роль, которая помогает соблюдать принцип наименьшей привилегии.
##MS_DatabaseManager## Члены предопределенной роли сервера ##MS_DatabaseManager## могут создавать и удалять базы данных. Член роли ##MS_DatabaseManager##, который создает базу данных, становится ее владельцем, что позволяет ему подключиться к этой базе данных в качестве пользователя dbo. Пользователь dbo имеет все разрешения в этой базе данных. Члены роли ##MS_DatabaseManager##необязательно имеют разрешения на доступ к базам данных, которые им не принадлежат. Эта роль сервера имеет те же привилегии, что и роль dbcreator в SQL Server, но мы рекомендуем использовать эту новую роль над прежней, так как эта роль существует также в Базе данных SQL Azure и таким образом помогает использовать одни и те же скрипты в разных средах.
##MS_ServerStateManager## У участников предопределенной роли сервера ##MS_ServerStateManager## есть те же разрешения, что и у роли ##MS_ServerStateReader##. Кроме того, он содержит разрешение ALTER SERVER STATE, которое позволяет получить доступ к нескольким операциям управления, таким как: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL')DBCC SQLPERF()
##MS_ServerStateReader## Члены предопределенных ролей сервера ##MS_ServerStateReader## могут считывать все динамические административные представления и функции, охватываемые состоянием VIEW SERVER, и соответственно имеет разрешение VIEW DATABASE STATE для любой базы данных, в которой член этой роли имеет учетную запись пользователя.
##MS_ServerPerformanceStateReader## Члены предопределенных ролей сервера ##MS_ServerPerformanceStateReader## могут считывать все динамические административные представления и функции, охватываемые состоянием ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА VIEW SERVER, и соответственно имеет разрешение VIEW DATABASE PERFORMANCE STATE для любой базы данных, в которой член этой роли имеет учетную запись пользователя. Это подмножество того, к чему имеется роль сервера ##MS_ServerStateReader###, к которой можно соответствовать принципу наименьших привилегий.
##MS_ServerSecurityStateReader## Члены предопределенных ролей сервера ##MS_ServerSecurityStateReader## могут считывать все динамические административные представления и функции, охватываемые состоянием БЕЗОПАСНОСТИ VIEW SERVER, и соответственно имеет разрешение 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 ПОДКЛЮЧЕНИЕ
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
Неприменимо
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ИЗМЕНИТЬ
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРА
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ СЕРВЕРА
ПРОСМОТР СОСТОЯНИЯ БАЗЫ ДАННЫХ
ПРОСМОТР СОСТОЯНИЯ ПРОИЗВОДИТЕЛЬНОСТИ БАЗЫ ДАННЫХ
ПРОСМОТР СОСТОЯНИЯ БЕЗОПАСНОСТИ БАЗЫ ДАННЫХ
##MS_ServerStateReader## VIEW SERVER 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 и более ранним версиям).
Diagram showing fixed server role permissions.

Внимание

Разрешение CONTROL SERVER похоже на, но не идентично sysadmin предопределенной роли сервера. Разрешения не влекут за собой членства роли, а членства роли не предоставляют разрешений. (Например, CONTROL SERVER не подразумевает членство в предопределенных ролях сервера sysadmin .) Однако иногда можно олицетворение между ролями и эквивалентными разрешениями. Большинство команд DBCC и многие системные процедуры требуют членство в sysadmin предопределенной роли сервера.

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

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

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

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

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

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

Функция Type Description
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) Команда Создает определяемую пользователем роль сервера.
ALTER SERVER ROLE (Transact-SQL) Команда Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера.
DROP SERVER ROLE (Transact-SQL) Команда Удаляет определяемую пользователем роль сервера.
sp_addsrvrolemember (Transact-SQL) Команда Добавляет имя входа в качестве члена роли уровня сервера. Устарело. Используйте вместо этого ALTER SERVER ROLE .
sp_dropsrvrolemember (Transact-SQL) Команда Удаляет имя входа SQL Server или пользователя Windows или группу из роли уровня сервера. Устарело. Используйте вместо этого ALTER SERVER ROLE .

См. также