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


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

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

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

SQL Server 2019 (15.x) и предыдущие версии предоставили девять предопределенных ролей сервера. Разрешения, предоставленные предопределенным ролям сервера (кроме общедоступных), не могут быть изменены. Начиная с 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. Учетная запись пользователя имени входа, являющегося членом этой роли, находится в базе данных 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. securityadmin также GRANTDENYможет иметь разрешения на уровне базы данных, REVOKE если у них есть доступ к базе данных. Кроме того, securityadmin может сбрасывать пароли для имен входа 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 или разрешения ADMINISTER BULK OPERATIONS не поддерживаются для SQL Server в Linux.

Массовые операции (BULK INSERT инструкции) не поддерживаются для входов, основанных на проверке подлинности Microsoft Entra, в Linux или Windows. В этом сценарии только члены роли sysadmin могут выполнять массовые вставки для SQL Server.
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 для конкретной базы данных, пользователи могут создать учетную запись пользователя, соответствующую этому имени входа, в базе данных, а затем DENYCONNECT разрешение пользователю базы данных. Это DENY разрешение переопределяет разрешение, относящееся к этой роли GRANT CONNECT.
##MS_LoginManager## ##MS_LoginManager## Члены предопределенных ролей сервера могут создавать, удалять и изменять имена входа. В отличие от старой предопределенных ролей сервера безопасности, эта роль не позволяет членам GRANT привилегий. Это более ограниченная роль, которая помогает соблюдать принцип наименьшей привилегии.
##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 STATE, и, соответственно, имеют разрешение на любую базу данных, к которой член этой роли имеет VIEW DATABASE STATE учетную запись пользователя.
##MS_ServerPerformanceStateReader## Члены фиксированной роли сервера ##MS_ServerPerformanceStateReader## могут считывать все динамические административные представления и функции, охватываемые VIEW SERVER PERFORMANCE STATE, и соответственно имеют разрешение VIEW DATABASE PERFORMANCE STATE на любую базу данных, в которой член этой роли имеет учетную запись пользователя. Подмножество доступов для роли сервера ##MS_ServerStateReader##, что помогает соответствовать принципу наименьших привилегий.
##MS_ServerSecurityStateReader## ##MS_ServerSecurityStateReader## Члены предопределенных ролей сервера могут считывать все динамические административные представления и функции, охватываемые VIEW SERVER SECURITY STATE, и соответственно имеют разрешение на доступ к любой базе данных, в которой член этой роли имеет учетную запись пользователя. Доступ к небольшому подмножеству ресурсов, которые доступны в роли сервера ##MS_ServerStateReader##, что помогает соответствовать принципу наименьших привилегий.
##MS_DefinitionReader## Члены предопределенных ролей сервера могут считывать все представления каталога, охватываемые ##MS_DefinitionReader##, и соответственно, имеют разрешение на любую базу данных, в которой член этой роли имеет VIEW ANY DEFINITION учетную запись пользователя.
##MS_PerformanceDefinitionReader## Члены предопределенных ролей сервера могут считывать все представления каталога, охватываемые ##MS_PerformanceDefinitionReader##, и соответственно, имеют разрешение на любую базу данных, в которой член этой роли имеет VIEW ANY PERFORMANCE DEFINITION учетную запись пользователя. Подмножество того, к чему ##MS_DefinitionReader## имеет доступ роль сервера.
##MS_SecurityDefinitionReader## Члены предопределенных ролей сервера могут считывать все представления каталога, охватываемые ##MS_SecurityDefinitionReader##, и соответственно, имеют разрешение на любую базу данных, в которой член этой роли имеет VIEW ANY 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 SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerStateReader## - VIEW SERVER STATE
- VIEW SERVER PERFORMANCE STATE
- VIEW SERVER SECURITY STATE
- VIEW DATABASE STATE
- VIEW DATABASE PERFORMANCE STATE
- VIEW DATABASE SECURITY STATE
##MS_ServerPerformanceStateReader## - VIEW SERVER PERFORMANCE STATE - VIEW DATABASE PERFORMANCE STATE
##MS_ServerSecurityStateReader## - VIEW SERVER SECURITY STATE - VIEW DATABASE SECURITY STATE
##MS_DefinitionReader## - VIEW ANY DATABASE
- VIEW ANY DEFINITION
- VIEW ANY PERFORMANCE DEFINITION
- VIEW ANY SECURITY DEFINITION
- VIEW DEFINITION
- VIEW PERFORMANCE DEFINITION
- VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader## - VIEW ANY PERFORMANCE DEFINITION - VIEW PERFORMANCE DEFINITION
##MS_SecurityDefinitionReader## - VIEW ANY SECURITY DEFINITION - VIEW SECURITY DEFINITION

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

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

Схема с фиксированными разрешениями роли сервера.

Разрешение CONTROL SERVER аналогично, но не идентично предопределенной роли сервера sysadmin. Субъекты с CONTROL SERVER разрешением могут быть лишены конкретных разрешений. С точки зрения безопасности рассматривайте субъектов с CONTROL SERVER как идентичных членам sysadmin, из-за нескольких возможных способов повышения разрешений от CONTROL SERVER до полного уровня sysadmin. Для нескольких DBCC команд и многих системных процедур требуется членство в фиксированной серверной роли sysadmin.

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

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

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

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

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

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

Функция Тип Description
sp_helpsrvrole Метаданные Возвращает список ролей уровня сервера.
sp_helpsrvrolemember Метаданные Возвращает сведения о членах роли уровня сервера.
sp_srvrolepermission Метаданные Отображает разрешения роли уровня сервера.
IS_SRVROLEMEMBER Метаданные Указывает, является ли имя входа SQL Server членом указанной роли уровня сервера.
sys.server_role_members Метаданные Возвращает одну строку для каждого члена каждой роли уровня сервера.
СОЗДАЙТЕ РОЛЬ СЕРВЕРА Команда Создает определяемую пользователем роль сервера.
ИЗМЕНИТЬ РОЛЬ СЕРВЕРА Команда Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера.
DROP SERVER ROLE Команда Удаляет определяемую пользователем роль сервера.
sp_addsrvrolemember Команда Добавляет имя входа в качестве члена роли уровня сервера. Устарело. Используйте вместо этого ALTER SERVER ROLE .
sp_dropsrvrolemember Команда Удаляет имя входа SQL Server или пользователя Windows или группу из роли уровня сервера. Устарело. Используйте вместо этого ALTER SERVER ROLE .

Роли, относящиеся к SQL Server, включенным Azure Arc

При установке расширения Azure для SQL Server установка:

  1. Создает роль уровня сервера: SQLArcExtensionServerRole

  2. Создает роль уровня базы данных: SQLArcExtensionUserRole

  3. Добавление учетной записи NT AUTHORITY\SYSTEM* в каждую роль

  4. Карты NT AUTHORITY\SYSTEM* на уровне базы данных для каждой базы данных

  5. Предоставляет минимальные разрешения для включенных функций

    *Кроме того, можно настроить SQL Server, включенный Azure Arc, для выполнения в режиме наименьших привилегий (доступно в предварительной версии). Дополнительные сведения см. в статье "Управление SQL Server, включенной Azure Arc с минимальными привилегиями (предварительная версия)".

Кроме того, расширение Azure для SQL Server отменяет разрешения для этих ролей, если они больше не нужны для определенных функций.

SqlServerExtensionPermissionProvider — это задача Windows. Он предоставляет или отменяет привилегии в SQL Server при обнаружении:

  • Новый экземпляр SQL Server устанавливается на узле
  • Экземпляр SQL Server удаляется с узла
  • Функция уровня экземпляра включена или отключена, или обновляются параметры.
  • Служба расширений перезапускается

Примечание.

До выпуска SqlServerExtensionPermissionProvider за июль 2024 г. запланирована задача. Она выполняется почасово.

Дополнительные сведения см. в статье "Настройка учетных записей службы Windows и разрешений для расширения Azure для SQL Server".

При удалении расширения Azure для SQL Server роли сервера и уровня базы данных удаляются.

Сведения о разрешениях см. в разделе "Разрешения".