Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Управляемый экземпляр SQL Azure
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 Azure для управления разрешениями и Предоставление доступа к базе данных для SQL Database, Управляемый экземпляр SQL и Azure Synapse Analytics.
В следующей таблице представлены предопределенные роли уровня сервера и их возможности.
| Фиксированная роль уровня сервера | Описание |
|---|---|
| sysadmin | Члены предопределенной роли сервера sysadmin могут выполнять любые действия на сервере. Важно: разрешения не могут быть отказаны участникам этой роли. |
| serveradmin | Члены предопределенной роли сервера serveradmin могут изменять параметры конфигурации на уровне сервера, а также выключать сервер. |
| securityadmin | Члены фиксированной роли сервера securityadmin управляют именами входа и их свойствами. Это могут быть разрешения на уровне сервера GRANT, DENY и REVOKE. Они также могут GRANT, DENY и REVOKE разрешения на уровне базы данных, если у них есть доступ к базе данных. Кроме того, они могут сбрасывать пароли для учетных записей SQL Server.ВАЖНО. Возможность предоставлять доступ к ядро СУБД и настраивать разрешения пользователей позволяет администратору безопасности назначать большинство разрешений сервера. Относитесь к роли администратора безопасности , эквивалентной роли системного администратора . В качестве альтернативы, начиная с 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 на этот объект. Только назначьте общедоступные разрешения для любого объекта, если требуется, чтобы объект был доступен всем пользователям. Вы не можете изменить членство в общедоступной среде. Примечание:общественная работа отличается от других ролей. Вы можете предоставлять, отказывать или отзывать разрешения на публичную роль фиксированного сервера. |
Внимание
Большинство прав, предоставляемых следующими ролями сервера, не применимы к Azure Synapse Analytics: processadmin, serveradmin, setupadmin и diskadmin.
Фиксированные роли уровня сервера, представленные в SQL Server 2022
В следующей таблице показаны фиксированные роли на уровне сервера, представленные в SQL Server 2022 (16.x) и их возможности.
Примечание.
База данных SQL Azure и Управляемый экземпляр SQL Azure поддерживают эти роли. Azure Synapse Analytics этого не делает.
Чтобы узнать, какие роли есть у сервера, выполните запрос к sys.server_principals для строк, в которых type_desc имеет значение SERVER_ROLE.
| Фиксированная роль уровня сервера | Описание |
|---|---|
##MS_DatabaseConnector## |
##MS_DatabaseConnector## Члены фиксированной роли сервера могут подключаться к любой базе данных без необходимости наличия учетной записи пользователя в базе данных.Чтобы отклонить разрешение CONNECT для конкретной базы данных, пользователи могут создать учетную запись пользователя, соответствующую этому имени входа, в базе данных, а затем DENYCONNECT разрешение пользователю базы данных. Это DENY разрешение переопределяет разрешение, относящееся к этой роли GRANT CONNECT. |
##MS_LoginManager## |
##MS_LoginManager## Члены предопределенных ролей сервера могут создавать, удалять и изменять имена входа. В отличие от старой фиксированной серверной роли securityadmin, эта роль не позволяет членам GRANT привилегий. Это более ограниченная роль, которая помогает соблюдать принцип наименьшей привилегии. |
##MS_DatabaseManager## |
##MS_DatabaseManager## Члены предопределенных ролей сервера могут создавать базы данных и удалять собственные базы данных. Участник ##MS_DatabaseManager## роли, создающей базу данных, становится владельцем этой базы данных, что позволяет пользователю подключаться к этой базе данных как dbo пользователь. Пользователь dbo имеет все разрешения в этой базе данных. Члены этой роли могут потенциально повысить свои привилегии в определенных условиях. Применяйте принцип наименьшей привилегии при назначении этой роли и отслеживайте все действия, выполняемые его членами. В База данных SQL Azure используйте эту роль сервера вместо предопределенных ролей базы данных dbmanager, которая существует вmaster. |
##MS_ServerStateManager## |
Члены ##MS_ServerStateManager## предопределенной роли сервера имеют те же разрешения, что и роль ##MS_ServerStateReader##. Роль также обладает разрешением ALTER SERVER STATE , которое позволяет получать доступ к нескольким операциям управления, таким как: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), , DBCC SQLPERF(). |
##MS_ServerStateReader## |
Члены фиксированной серверной роли ##MS_ServerStateReader## могут читать все динамические административные представления (DMVs) и функции, на которые распространяется действие VIEW SERVER STATE. Участники также имеют VIEW DATABASE STATE право на доступ к любой базе данных, где у них есть пользовательская учетная запись. |
##MS_ServerPerformanceStateReader## |
Члены фиксированной серверной роли ##MS_ServerPerformanceStateReader## могут читать все динамические административные представления (DMVs) и функции, на которые распространяется действие VIEW SERVER PERFORMANCE STATE. Участники также имеют VIEW DATABASE PERFORMANCE STATE право на доступ к любой базе данных, где у них есть пользовательская учетная запись. Эта роль является подмножеством ##MS_ServerStateReader##, что помогает соблюдать принцип наименьших привилегий. |
##MS_ServerSecurityStateReader## |
Члены фиксированной серверной роли ##MS_ServerSecurityStateReader## могут читать все динамические административные представления (DMVs) и функции, на которые распространяется действие 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 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.
Работа с ролями уровня сервера
В следующей таблице описаны команды, представления и функции, предназначенные для работы с ролями уровня сервера.
| Функция | Тип | Описание |
|---|---|---|
| sp_helpsrvrole | Метаданные | Возвращает список ролей уровня сервера. |
| sp_helpsrvrolemember | Метаданные | Возвращает сведения о членах роли уровня сервера. |
| sp_srvrolepermission | Метаданные | Отображает разрешения серверной роли. |
| IS_SRVROLEMEMBER | Метаданные | Указывает, является ли учетная запись SQL Server членом указанной роли серверного уровня. |
| sys.server_role_members | Метаданные | Возвращает одну строку для каждого члена каждой роли уровня сервера. |
| CREATE SERVER ROLE | Команда | Создает определяемую пользователем роль сервера. |
| ALTER SERVER ROLE | Команда | Изменяет членство в роли сервера или изменяет имя определяемой пользователем роли сервера. |
| DROP SERVER ROLE | Команда | Удаляет определяемую пользователем роль сервера. |
| sp_addsrvrolemember | Команда | Добавляет логин в качестве члена роли уровня сервера. Устарело. Вместо этого используйте ALTER SERVER ROLE. |
| sp_dropsrvrolemember | Команда | Удаляет пользователя 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 отменяет разрешения для этих ролей, когда они больше не требуются для определенных функций.
Примечание.
Описанные ранее действия требуют, чтобы средство развертывания подключалось к SQL Server как NT AUTHORITY\SYSTEM. Если имя входа NT AUTHORITY\SYSTEM удалено, отключено или запрещено разрешение CONNECT SQL, средство развертывания не может выполнить какие-либо из этих действий, а расширение Azure для SQL Server не удается подготовить. Предварительные требования для проверки и восстановления этого имени входа см. в разделе "Предварительные требования ".
SqlServerExtensionPermissionProvider — это задача Windows. Он выполняет Deployer.exe для предоставления или отзыва привилегий в SQL Server при обнаружении:
- Новый экземпляр SQL Server устанавливается на узле
- Экземпляр SQL Server удаляется с узла
- Опция уровня экземпляра либо активируется, либо деактивируется, либо обновляются настройки.
- Служба расширений перезапускается
- Разрешения Just-in-time (JIT) включены или отключены
Примечание.
До выпуска в июле 2024 года SqlServerExtensionPermissionProvider была запланированная задача, которая выполнялась каждый час.
Дополнительные сведения см. в разделе Настройка учетных записей служб Windows и разрешений для расширения Azure для SQL Server.
Если удалить расширение Azure для SQL Server, роли уровня сервера и уровня базы данных удаляются.
Сведения о разрешениях см. в разделе "Разрешения".
Связанный контент
- Роли уровня базы данных
- Представления каталога безопасности (Transact-SQL)
- Функция безопасности (Transact-SQL)
- Обеспечение безопасности SQL Server
- GRANT Разрешения учетной записи уровня сервера (Transact-SQL)
- REVOKE Разрешения учетной записи уровня сервера (Transact-SQL)
- DENY Разрешения учетной записи уровня сервера (Transact-SQL)
- Создание роли сервера
- роли сервера База данных SQL Azure для управления разрешениями