Роли уровня сервера
Область применения: SQL Server Управляемый экземпляр SQL Azure Платформенная система аналитики (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 . securityadmin также GRANT DENY может иметь разрешения на уровне базы данных, 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 или разрешения АДМИНИСТРИРОВАНИЯ 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 и более ранним версиям).
Внимание
Разрешение 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).
Работа с ролями уровня сервера
В следующей таблице описаны команды, представления и функции, предназначенные для работы с ролями уровня сервера.
Функция | Тип | Описание |
---|---|---|
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 . |
Роли, относящиеся к SQL Server, включенным Azure Arc
При установке расширения Azure для SQL Server установка:
Создает роль уровня сервера: SQLArcExtensionServerRole
Создает роль уровня базы данных: SQLArcExtensionUserRole
Добавление учетной записи NT AUTHORITY\SYSTEM* в каждую роль
Карты NT AUTHORITY\SYSTEM* на уровне базы данных для каждой базы данных
Предоставляет минимальные разрешения для включенных функций
*Кроме того, можно настроить 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 роли сервера и уровня базы данных удаляются.
Сведения о разрешениях см. в разделе "Разрешения".
Связанный контент
- Роли уровня базы данных
- Представления каталога безопасности (Transact-SQL)
- Функция безопасности (Transact-SQL)
- Обеспечение безопасности SQL Server
- Grant Server Principal Permissions (Transact-SQL)
- REVOKE Server Principal Permissions (Transact-SQL)
- Deny Server Principal Permissions (Transact-SQL)
- Создание роли сервера
- роли сервера База данных SQL Azure для управления разрешениями