Funções no nível do servidor

Aplica-se a: SQL ServerAzure SQL Managed Instance

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. Não é possível alterar as permissões atribuídas às funções fixas de servidor (exceto public). 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 desenhadas especificamente com o Princípio do Privilégio Mínimo em mente. Estes papéis têm o prefixo ##MS_ e o sufixo ##, que os distinguem dos princípios criados pelo utilizador regular e dos papéis de servidor personalizados. Essas novas funções incluem privilégios que se aplicam ao nível do servidor, mas que também podem ser herdados ao nível de bases de dados individuais (exceto 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. Este requisito aplica-se também à 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 foram introduzidas antes do SQL Server 2022 (16.x), e não estão disponíveis no Base de Dados SQL do Azure ou no Azure Synapse Analytics. O Base de Dados SQL do Azure tem os seus próprios papéis ao nível do servidor, que correspondem aos papéis introduzidos no SQL Server 2022 (16.x). Para mais informações, consulte funções de servidor Base de Dados SQL do Azure para gestão de permissões e Autorizar o acesso a bases de dados ao SQL Database, SQL Managed Instance e Azure Synapse Analytics.

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. Também podem GRANT, DENY e REVOKE permissões ao nível da base de dados, se tiverem acesso a uma base de dados. Além disso, eles podem redefinir senhas para logons 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. Trate o papel de administrador de segurança 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 INSERTdeclarações) não são suportadas para logins baseados na autenticação Microsoft Entra, nem no Linux nem no Windows. Neste cenário, apenas os membros do papel de sysadmin podem realizar inserções em massa para SQL Server.
diskadmin Os membros da função de servidor fixa diskadmin podem gerenciar arquivos 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 público funciona de forma diferente dos outros papéis. Pode conceder, negar ou revogar permissões para a função de servidor fixa public.

Importante

A maioria das permissões fornecidas pelos seguintes papéis de servidor não se aplica ao Azure Synapse Analytics: administrador de processos, administrador de servidores, administrador de configuração e administrador de disco.

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

O Base de Dados SQL do Azure e o Azure SQL Managed Instance suportam estes papéis. Azure Synapse Analytics não.

Para ver quais as funções atribuídas a um servidor, consulte as linhas de sys.server_principals em que type_desc é SERVER_ROLE.

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 da ##MS_DatabaseManager## função fixa de servidor podem criar bases de dados e eliminar as bases de dados de que são proprietários. 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 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. Na Base de Dados SQL do Azure, utilize esta função de servidor em vez da função fixa de base de dados dbmanager que existe em master.
##MS_ServerStateManager## Os membros da ##MS_ServerStateManager## função de servidor fixa têm as mesmas permissões que a função ##MS_ServerStateReader##. A função também 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 ##MS_ServerStateReader## função fixa de servidor podem ler todas as vistas de gestão dinâmicas (DMVs) e funções abrangidas por VIEW SERVER STATE. Os membros também têm VIEW DATABASE STATE permissão para qualquer base de dados onde tenham uma conta de utilizador.
##MS_ServerPerformanceStateReader## Os membros da ##MS_ServerPerformanceStateReader## função fixa de servidor podem ler todas as vistas de gestão dinâmicas (DMVs) e funções abrangidas por VIEW SERVER PERFORMANCE STATE. Os membros também têm VIEW DATABASE PERFORMANCE STATE permissão para qualquer base de dados onde tenham uma conta de utilizador. Este papel é um subconjunto de ##MS_ServerStateReader##, o que ajuda a cumprir o Princípio do menor privilégio.
##MS_ServerSecurityStateReader## Os membros da ##MS_ServerSecurityStateReader## função fixa de servidor podem ler todas as vistas de gestão dinâmicas (DMVs) e funções abrangidas por VIEW SERVER SECURITY STATE. Os membros também têm VIEW DATABASE SECURITY STATE permissão para qualquer base de dados onde tenham uma conta de utilizador. Esta função é um pequeno subconjunto de ##MS_ServerStateReader##, o que ajuda a cumprir o Princípio do Menor Privilégio.
##MS_DefinitionReader## Os membros da ##MS_DefinitionReader## função fixa de servidor podem ler todas as vistas de catálogo abrangidas por VIEW ANY DEFINITION. Os membros também têm VIEW DEFINITION permissão para qualquer base de dados onde tenham uma conta de utilizador.
##MS_PerformanceDefinitionReader## Os membros da ##MS_PerformanceDefinitionReader## função fixa de servidor podem ler todas as vistas de catálogo abrangidas por VIEW ANY PERFORMANCE DEFINITION. Os membros também têm VIEW PERFORMANCE DEFINITION permissão para qualquer base de dados onde tenham uma conta de utilizador. Esta função constitui um subconjunto de ##MS_DefinitionReader##.
##MS_SecurityDefinitionReader## Os membros da ##MS_SecurityDefinitionReader## função fixa de servidor podem ler todas as vistas de catálogo abrangidas por VIEW ANY SECURITY DEFINITION. Os membros também têm VIEW SECURITY DEFINITION permissão para qualquer base de dados onde tenham uma conta de utilizador. Esta função é um pequeno subconjunto de ##MS_DefinitionReader##, o que 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.
CREATE SERVER ROLE Command Cria um papel de servidor definido pelo utilizador.
ALTER SERVER ROLE Command Altera a pertença a um papel de servidor ou altera o nome de um papel de servidor definido pelo utilizador.
DROP SERVER ROLE 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 ALTER SERVER ROLE em substituição.
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 substituição.

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

Quando instala a Azure Extension for SQL Server em modo não-privilégio mínimo, 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 cargo
  4. Mapas NT AUTHORITY\SYSTEM ao nível de 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. Para mais informações, veja Operar SQL Server ativado por Azure Arc com menor privilégio.

Além disso, o Azure Extension for SQL Server revoga permissões para estas funções quando já não são necessárias para funcionalidades específicas.

Observação

As ações anteriormente descritas exigem que o Deployer se ligue a SQL Server como NT AUTHORITY\SYSTEM. Se o login NT AUTHORITY\SYSTEM for removido, desativado ou negado CONNECT SQL permissão, o Deployer não pode realizar nenhuma destas ações, e a Extensão Azure para SQL Server falha no provisionamento. Consulte Pré-requisitos para os passos para verificar e restaurar este login.

SqlServerExtensionPermissionProvider é uma tarefa do Windows. Executa Deployer.exe para conceder ou revogar privilégios em SQL Server quando detecta:

  • Uma nova instância do SQL Server é instalada no host
  • Uma 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
  • As permissões just-in-time (JIT) estão ativadas ou desativadas

Observação

Antes do lançamento em julho de 2024, SqlServerExtensionPermissionProvider havia uma tarefa agendada que decorria a cada hora.

Para mais detalhes, reveja Configurar contas de serviço do Windows e permissões para a Azure Extension for 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.