Partilhar via


Funções no nível do servidor

Aplica-se a:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

O SQL Server fornece funções ao nível do servidor para o ajudar a gerir as permissões num servidor. Estas funções são entidades de segurança que agrupam outras entidades. As funções a nível do servidor têm um âmbito de permissões global no servidor. (Os papéis são como grupos no sistema operativo Windows.)

O SQL Server 2019 (15.x) e versões anteriores forneciam nove funções fixas de servidor. As permissões concedidas aos papéis fixos do servidor (exceto públicos) não podem ser alteradas. A partir do SQL Server 2012 (11.x), pode criar papéis de servidor definidos pelo utilizador e adicionar permissões ao nível do servidor aos papéis de servidor definidos pelo utilizador. O SQL Server 2022 (16.x) vem com 10 funções extra de servidor que foram especificamente concebidas tendo em conta o Princípio do Menor Privilégio , que têm o prefixo ##MS_ e o sufixo ## para os distinguir de outros princípios regulares criados pelo utilizador e funções de servidor personalizadas. Essas novas funções contêm privilégios que se aplicam ao escopo do servidor, mas também se podem herdar para bases de dados individuais (exceto para a função de servidor ##MS_LoginManager##).

Tal como o SQL Server on-premises, as permissões dos servidores estão organizadas hierarquicamente. As permissões detidas por estes papéis ao nível do servidor podem propagar-se para permissões de base de dados. Para que as permissões sejam eficazmente úteis ao nível da base de dados, o login precisa de ser membro do papel ##MS_DatabaseConnector## ao nível do servidor (a partir do SQL Server 2022 (16.x)), que concede CONNECT permissão a todas as bases de dados, ou ter uma conta de utilizador em bases de dados individuais. Isto também se aplica à master base de dados.

Considere o seguinte exemplo: A função ##MS_ServerStateReader## no nível de servidor detém a permissão VIEW SERVER STATE. Um login que é membro desta função tem uma conta de utilizador nas bases de dados master e WideWorldImporters. Este utilizador também tem permissão VIEW DATABASE STATE nessas duas bases de dados por herança.

Pode adicionar princípios ao nível do servidor (logins SQL Server, contas Windows e grupos Windows) em funções ao nível do servidor. Cada membro de uma função fixa de servidor pode adicionar outros logins a essa mesma função. Os membros das funções de servidor definidas pelo usuário não podem adicionar outros principais do servidor à função.

Funções fixas no nível do servidor

Observação

Estas funções ao nível do servidor foram introduzidas antes do SQL Server 2022 (16.x) e não estão disponíveis no Azure SQL Database nem no Azure Synapse Analytics. Existem funções especiais de servidor Azure SQL Database para gestão de permissões equivalentes às funções ao nível do servidor introduzidas no SQL Server 2022 (16.x). Para mais informações sobre a Base de Dados SQL, consulte Controlo e concessão de acesso à base de dados..

A tabela seguinte mostra os papéis fixos ao nível do servidor e as suas capacidades.

Função fixa no nível do servidor Description
administrador de sistemas Os membros do papel fixo de servidor sysadmin podem realizar qualquer atividade no servidor. Importante: as permissões não podem ser negadas a membros desta função.
administrador do servidor Os membros da função fixa de servidor serveradmin podem alterar as opções de configuração do servidor e desligar o servidor.
administrador de segurança Os membros da função fixa de servidor securityadmin gerem logons e suas propriedades. Podem GRANT, DENY, e REVOKE permissões ao nível do servidor. securityadmin também pode GRANT, DENY e REVOKE permissões ao nível da base de dados, se tiver acesso a uma base de dados. Além disso, o securityadmin pode redefinir palavras-passe para os logins do SQL Server.

IMPORTANTE: A capacidade de conceder acesso ao Motor de Base de Dados e de configurar permissões de utilizador permite ao administrador de segurança atribuir a maioria das permissões dos servidores. O papel de administrador de segurança deve ser tratado como equivalente ao papel de administrador de sistemas . Como alternativa, a partir do SQL Server 2022 (16.x), considere usar o novo papel fixo de servidor ##MS_LoginManager##.
processadmin Os membros do papel fixo de servidor processadmin podem terminar processos que estão a correr numa instância do SQL Server.
setupadmin Os membros da função de servidor fixa setupadmin podem adicionar e remover servidores ligados usando instruções Transact-SQL. (a adesão ao administrador de sistemas é necessária ao utilizar o Management Studio.)
bulkadmin Os membros da função fixa de servidor bulkadmin podem executar a BULK INSERT instrução. Os membros deste cargo podem potencialmente elevar os seus privilégios sob certas condições. Aplicar o princípio do menor privilégio ao atribuir este papel e monitorizar toda a atividade realizada pelos seus membros.

O papel bulkadmin ou as permissões ADMINISTER BULK OPERATIONS não são suportados no SQL Server no Linux.

Operações em massa (BULK INSERT declarações) não são suportadas para logins baseados na autenticação Microsoft Entra, seja no sistema operativo Linux ou no Windows. Neste cenário, apenas os membros do papel de sysadmin podem realizar inserções em massa para SQL Server.
diskadmin O papel de servidor fixo de administrador de discos é usado para gerir ficheiros de disco.
dbcreator Os membros da função de servidor fixo dbcreator podem criar, alterar, eliminar e restaurar qualquer base de dados.
public Todo o login do SQL Server pertence ao papel de servidor público . Quando um principal de servidor não recebe ou recusa permissões específicas sobre um objeto securável, o utilizador herda as permissões concedidas ao público sobre esse objeto. Atribua permissões públicas a qualquer objeto apenas quando quiseres que o objeto esteja disponível para todos os utilizadores. Não se pode mudar de membro em público.

Nota:o public é implementado de forma diferente de outros papéis, e as permissões podem ser concedidas, negadas ou revogadas dos papéis fixos do servidor público.

Importante

A maioria das permissões fornecidas pelos seguintes papéis de servidor não é aplicável ao Azure Synapse Analytics - processadmin, serveradmin, setupadmin e diskadmin.

Funções fixas ao nível do servidor introduzidas no SQL Server 2022

A tabela seguinte mostra os papéis fixos ao nível do servidor introduzidos no SQL Server 2022 (16.x) e as suas capacidades.

Observação

Estas permissões ao nível do servidor não estão disponíveis para Azure SQL Managed Instance ou Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader##, e ##MS_ServerSecurityStateReader## é introduzido no SQL Server 2022 (16.x), e não está disponível no Azure SQL Database.

Função fixa no nível do servidor Description
##MS_DatabaseConnector## Os membros da ##MS_DatabaseConnector## função de servidor fixo podem ligar-se a qualquer base de dados sem necessidade de terem uma conta de utilizador na base de dados.

Para negar a CONNECT permissão a uma base de dados específica, os utilizadores podem criar uma conta de utilizador correspondente para esse login na base de dados e depois DENY a CONNECT permissão para o utilizador da base de dados. Esta DENY autorização sobrepõe a permissão GRANT CONNECT proveniente desta função.
##MS_LoginManager## Os membros do ##MS_LoginManager## papel fixo do servidor podem criar, eliminar e modificar logins. Ao contrário do antigo papel fixo de securityadmin do servidor, este cargo não permite privilégios aos membros GRANT . É um papel mais limitado que ajuda a cumprir o Princípio do Menor Privilégio.
##MS_DatabaseManager## Os membros do ##MS_DatabaseManager## papel fixo de servidor podem criar e eliminar bases de dados. Um membro da função ##MS_DatabaseManager## que cria uma base de dados torna-se o proprietário dessa base de dados, o que permite que esse utilizador se ligue a essa base de dados como o utilizador dbo. O dbo utilizador tem todas as permissões na base de dados. Os membros do ##MS_DatabaseManager## cargo não têm necessariamente permissão para aceder a bases de dados que não possuem. Este papel de servidor tem os mesmos privilégios que o papel de dbcreator no SQL Server, mas recomendamos usar este novo papel em vez do anterior, uma vez que este papel também existe no Azure SQL Database e, por isso, ajuda a usar os mesmos scripts em diferentes ambientes.

Os membros deste cargo podem potencialmente elevar os seus privilégios sob certas condições. Aplicar o princípio do menor privilégio ao atribuir este papel e monitorizar toda a atividade realizada pelos seus membros.
##MS_ServerStateManager## Os membros da ##MS_ServerStateManager## função de servidor fixa têm as mesmas permissões que a função ##MS_ServerStateReader##. Além disso, detém a ALTER SERVER STATE permissão, que permite o acesso a várias operações de gestão, tais como: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()
##MS_ServerStateReader## Os membros da função de servidor fixo ##MS_ServerStateReader## podem ler todas as vistas de gestão dinâmica (DMVs) e funções abrangidas por VIEW SERVER STATE e, respetivamente, têm permissão VIEW DATABASE STATE em qualquer base de dados onde o membro desta função tenha uma conta de utilizador.
##MS_ServerPerformanceStateReader## Os membros do ##MS_ServerPerformanceStateReader## papel de servidor fixo podem ler todas as vistas de gestão dinâmica (DMVs) e funções que são cobertas por VIEW SERVER PERFORMANCE STATE, e têm VIEW DATABASE PERFORMANCE STATE , respetivamente, permissão em qualquer base de dados onde o membro deste papel tenha uma conta de utilizador. Subconjunto do que a ##MS_ServerStateReader## função de servidor tem acesso, o que ajuda a cumprir o Princípio do menor Privilégio.
##MS_ServerSecurityStateReader## Os membros da função de servidor fixo ##MS_ServerSecurityStateReader## podem ler todas as vistas de gestão dinâmica (VMDs) e funções abrangidas por VIEW SERVER SECURITY STATE, e têm respetivamente a permissão VIEW DATABASE SECURITY STATE em qualquer base de dados onde o membro desta função tenha uma conta de utilizador. Um pequeno subconjunto do que a ##MS_ServerStateReader## função de servidor tem acesso a, o que ajuda a cumprir o Princípio do menor privilégio.
##MS_DefinitionReader## Os membros do ##MS_DefinitionReader## papel fixo do servidor podem ler todas as visualizações de catálogo que estejam cobertas por VIEW ANY DEFINITION e, respetivamente, têm permissão VIEW DEFINITION em qualquer base de dados na qual o membro deste papel tenha uma conta de utilizador.
##MS_PerformanceDefinitionReader## Os membros da função fixa do servidor ##MS_PerformanceDefinitionReader## podem ler todas as visualizações de catálogo que estejam cobertas por VIEW ANY PERFORMANCE DEFINITION e, respetivamente, têm permissão VIEW PERFORMANCE DEFINITION em qualquer base de dados onde o membro desta função tenha uma conta de utilizador. Subconjunto do que a função de servidor ##MS_DefinitionReader## tem acesso.
##MS_SecurityDefinitionReader## Os membros da função fixa ##MS_SecurityDefinitionReader## do servidor podem ler todas as visualizações de catálogo abrangidas por VIEW ANY SECURITY DEFINITION e, respetivamente, têm permissão de VIEW SECURITY DEFINITION em qualquer base de dados na qual o membro desta função possua uma conta de utilizador. Um pequeno subconjunto do que a ##MS_DefinitionReader## função do servidor tem acesso ao, o qual ajuda a cumprir o Princípio do menor privilégio.

Permissões de funções fixas de servidor

Cada função fixa de servidor tem certas permissões atribuídas.

Permissões de novas funções fixas de servidor no SQL Server 2022

A tabela seguinte mostra as permissões atribuídas às funções de nível de servidor. Mostra também as permissões ao nível da base de dados que são herdadas desde que o utilizador possa ligar-se a bases de dados individuais.

Função fixa no nível do servidor Permissões no nível do servidor Permissões no nível do banco de dados
##MS_DatabaseConnector## - CONNECT ANY DATABASE - CONNECT
##MS_LoginManager## - CREATE LOGIN
- ALTER ANY LOGIN
N/A
##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

Permissões das funções de servidor no SQL Server 2019 e anteriores

O gráfico seguinte mostra as permissões atribuídas aos papéis de servidor legado (SQL Server 2019 (15.x) e versões anteriores).

Diagrama que mostra permissões fixas da função do servidor.

A CONTROL SERVER permissão é semelhante, mas não idêntica ao papel fixo de sysadmin. Os utilizadores com a permissão CONTROL SERVER podem ter permissões específicas negadas. Do ponto de vista da segurança, considere princípios com CONTROL SERVER idênticos aos membros do sysadmin, devido a várias formas possíveis de elevar permissões de CONTROL SERVER sysadmin para sysadmin completo. Vários DBCC comandos e muitos procedimentos do sistema exigem ser membro da função fixa de servidor sysadmin.

Permissões no nível do servidor

Apenas permissões ao nível do servidor podem ser adicionadas aos papéis de servidor definidos pelo utilizador. Para listar as permissões ao nível do servidor, execute a seguinte instrução. As permissões ao nível do servidor são:

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

Para mais informações sobre permissões, consulte Permissões (Motor de Base de Dados) e sys.fn_builtin_permissions.

Trabalho com funções ao nível de servidor

A tabela seguinte explica os comandos, vistas e funções que pode usar para trabalhar com funções ao nível do servidor.

Característica Tipo Description
sp_helpsrvrole Metadados Devolve uma lista de funções ao nível do servidor.
sp_helpsrvrolemember Metadados Devolve informações sobre os membros de um papel ao nível do servidor.
sp_srvrolepermission Metadados Exibe as permissões de um papel ao nível do servidor.
IS_SRVROLEMEMBER Metadados Indica se um login do SQL Server pertence ao papel especificado ao nível do servidor.
sys.server_role_members Metadados Devolve uma linha para cada membro de cada função ao nível do servidor.
CRIAR FUNÇÃO DE SERVIDOR Command Cria um papel de servidor definido pelo utilizador.
ALTERAR FUNÇÃO DE SERVIDOR Command Altera a pertença a um papel de servidor ou altera o nome de um papel de servidor definido pelo utilizador.
REMOVER FUNÇÃO DE SERVIDOR Command Remove um papel de servidor definido pelo utilizador.
sp_addsrvrolemember Command Adiciona um login como membro de uma função ao nível do servidor. Deprecated. Utilize ALTERAR ROLE DO SERVIDOR em vez disso.
sp_dropsrvrolemember Command Remove um login do SQL Server ou um utilizador ou grupo Windows de uma função a nível de servidor. Deprecated. Utilize ALTER SERVER ROLE em vez disso.

Funções específicas do SQL Server ativadas pelo Azure Arc

Quando instala a extensão do Azure para o SQL Server, a instalação:

  1. Cria um papel ao nível do servidor: SQLArcExtensionServerRole

  2. Cria um papel ao nível da base de dados: SQLArcExtensionUserRole

  3. Adiciona a conta NT AUTHORITY\SYSTEM* a cada função

  4. Mapeia NT AUTHORITY\SYSTEM* ao nível da base de dados para cada base de dados

  5. Concede permissões mínimas para as funcionalidades ativadas

    *Em alternativa, pode configurar o SQL Server ativado pelo Azure Arc para correr em modo de mínimo privilégio (disponível em pré-visualização). Para mais detalhes, consulte Operar o SQL Server ativado pelo Azure Arc com o menor privilégio (pré-visualização).

Além disso, a extensão Azure para SQL Server revoga permissões para estes papéis quando já não são necessários para funcionalidades específicas.

SqlServerExtensionPermissionProvider é uma tarefa do Windows. Concede ou revoga privilégios no SQL Server quando deteta:

  • Uma nova instância do SQL Server é instalada no host
  • A instância do SQL Server é desinstalada do host
  • Uma funcionalidade ao nível da instância é ativada ou desativada, ou as definições são atualizadas
  • O serviço de extensão é reiniciado

Observação

Antes do lançamento em julho de 2024, SqlServerExtensionPermissionProvider é uma tarefa programada. Funciona de hora a hora.

Para mais detalhes, consulte Configurar contas de serviço Windows e permissões para a extensão Azure para SQL Server.

Se desinstalar a extensão Azure para SQL Server, os papéis ao nível do servidor e da base de dados são removidos.

Para permissões, consulte as Permissões.