Funções de nível de servidor

Aplica-se a: SQL Server (todas as versões com suporte) Instância Gerenciada de SQL do Azure PDW (Analytics Platform System)

SQL Server fornece funções do nível de servidor para ajudar a gerenciar as permissões em um servidor. Estas funções são entidades de segurança que agrupam outras entidades de segurança. Essas funções abrangem todo o servidor em seus escopos de permissões. (Asfunções são como grupos no sistema operacional Windows.)

SQL Server 2019 e versões anteriores forneceram nove funções de servidor fixas. As permissões concedidas às funções de servidor fixas (exceto públicas) não podem ser alteradas. A partir do SQL Server 2012 (11.x), você pode criar funções de servidor definidas pelo usuário e adicionar permissões do nível de servidor às funções de servidor definidas pelo usuário. SQL Server 2022 (16.x) vem com 10 funções de servidor adicionais que foram projetadas especificamente com o Princípio do Privilégio Mínimo em mente, que têm o prefixo ##MS_ e o sufixo ## para distingui-los de outras entidades de segurança e funções de servidor personalizadas criadas pelo usuário regulares. Essas novas funções contêm privilégios que se aplicam ao escopo do servidor, mas também podem herdar para bancos de dados individuais (com exceção da função de servidor ##MS_LoginManager## #).

Assim como o SQL Server local, as permissões do servidor são organizadas hierarquicamente. As permissões mantidas por essas funções de nível de servidor podem ser propagadas para permissões de banco de dados. Para que as permissões sejam efetivamente úteis no nível do banco de dados, um logon precisa ser membro da função de nível de servidor ##MS_DatabaseConnector## (começando com SQL Server 2022 (16.x)), que concede a permissão CONNECT a todos os bancos de dados ou tem uma conta de usuário em bancos de dados individuais. Isso também se aplica ao master banco de dados. Considere o seguinte exemplo: a função no nível do servidor ##MS_ServerStateReader## contém a permissão VIEW SERVER STATE. Um logon que é membro dessa função tem uma conta de usuário nos bancos master de dados e WideWorldImporters. Esse usuário também terá a permissão VIEW DATABASE STATE nesses dois bancos de dados por herança.

Você pode adicionar entidades de segurança no nível do servidor (logons doSQL Server , contas do Windows e grupos do Windows) em funções de nível de servidor. Cada membro de uma função de servidor fixa pode adicionar outros logons a essa mesma função. Membros de funções de servidor definidas pelo usuário não podem adicionar outras entidades de segurança de servidor à função.

Funções fixas no servidor

Observação

Essas funções de nível de servidor introduzidas antes do SQL Server 2022 (16.x) não estão disponíveis no Banco de Dados SQL do Azure ou Azure Synapse Analytics. Há funções especiais SQL do Azure servidor de banco de dados para gerenciamento de permissões equivalentes às funções de nível de servidor introduzidas no SQL Server 2022 (16.x). Para obter mais informações sobre Banco de Dados SQL, consulte Controlando e concedendo acesso ao banco de dados..

A tabela a seguir mostra as funções fixas de nível de servidor e seus recursos.

Função fixa de nível de servidor Descrição
sysadmin Os membros da função de servidor fixa sysadmin podem executar qualquer atividade no servidor.
serveradmin Os membros da função de servidor fixa serveradmin podem alterar as opções de configuração de todo o servidor e fechar o servidor.
securityadmin Os membros da função de servidor fixa securityadmin gerenciam logons e suas propriedades. Eles podem ter as permissões de nível de servidor GRANT, DENY e REVOKE. Eles também podem ter permissões de nível de banco de dados GRANT, DENY e REVOKE se tiverem acesso ao banco de dados. Além disso, eles podem redefinir senhas para logons do SQL Server .

IMPORTANTE: A capacidade de conceder acesso ao Mecanismo de Banco de Dados e de configurar permissões de usuário permite que o administrador de segurança atribua a maioria das permissões de servidor. A função securityadmin deve ser tratada como equivalente à função sysadmin . Como alternativa, a partir do SQL Server 2022 (16.x), considere usar a nova função de servidor fixa ##MS_LoginManager##.
processadmin Os membros da função de servidor fixa processadmin podem encerrar os processos em execução em uma instância do SQL Server.
setupadmin Os membros da função de servidor fixa setupadmin podem adicionar e remover servidores vinculados usando instruções Transact-SQL. (A associação sysadmin é necessária ao usar o Management Studio.)
bulkadmin Os membros da função de servidor fixa bulkadmin podem executar a instrução BULK INSERT.

A função bulkadmin ou as permissões ADMINISTER BULK OPERATIONS não têm suporte para SQL Server em Linux. Somente sysadmin pode executar inserções em massa para o SQL Server em Linux.
diskadmin A função de servidor fixa diskadmin é usada para gerenciar arquivos em disco.
dbcreator Os membros da função de servidor fixa dbcreator podem criar, alterar, remover e restaurar qualquer banco de dados.
público Todo logon do SQL Server pertence à função de servidor pública. Quando uma entidade de segurança do servidor não recebeu ou negou permissões específicas em um objeto protegível, o usuário herda as permissões concedidas ao público nesse objeto. Somente atribua permissões públicas em qualquer objeto quando você quiser que ele esteja disponível para todos os usuários. Você não pode alterar a associação em público.

Observação:public é implementado de maneira diferente de outras funções. Além disso, é possível conceder, negar ou revogar permissões das funções de servidor fixas públicas.

Importante

A maioria das permissões fornecidas pelas seguintes funções de servidor não é aplicável ao Azure Synapse Analytics – processadmin, serveradmin, setupadmin e diskadmin.

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

A tabela a seguir mostra funções de nível de servidor fixas adicionais introduzidas com SQL Server 2022 (16.x) e seus recursos.

Observação

Essas permissões no nível do servidor não estão disponíveis para Instância Gerenciada de SQL do Azure ou Azure Synapse Analytics. ##MS_PerformanceDefinitionReader##, ##MS_ServerPerformanceStateReader## e ##MS_ServerSecurityStateReader## são introduzidos no SQL Server 2022 (16.x) e não estão disponíveis no Banco de Dados SQL do Azure.

Função fixa de nível de servidor Descrição
##MS_DatabaseConnector## Os membros da função de servidor fixa ##MS_DatabaseConnector## podem se conectar a qualquer banco de dados sem exigir uma conta de usuário no banco de dados para se conectar.

Para negar a permissão CONNECT a um banco de dados específico, os usuários podem criar uma conta de usuário correspondente para esse logon no banco de dados e DENY a permissão CONNECT ao usuário do banco de dados. Essa permissão DENY anulará a permissão GRANT CONNECT proveniente dessa função.
##MS_LoginManager## Os membros da função de servidor fixa ##MS_LoginManager## podem criar, excluir e modificar logons. Ao contrário do antigo administrador de função de servidor fixa, essa função não permite privilégios aos GRANT membros. É uma função mais limitada que ajuda a cumprir o Princípio de privilégios mínimos.
##MS_DatabaseManager## Os membros da função de servidor fixa ##MS_DatabaseManager## podem criar e excluir bancos de dados. Um membro da função ##MS_DatabaseManager## que cria um banco de dados se torna o proprietário desse banco de dados, o que permite ao usuário se conectar ao banco de dados como o usuário dbo. O usuário dbo tem todas as permissões de banco de dados no banco de dados. Os membros da função ##MS_DatabaseManager## não têm necessariamente permissão para acessar bancos de dados que eles não sejam proprietários.
##MS_ServerStateManager## Os membros da função de servidor fixa ##MS_ServerStateManager## têm as mesmas permissões que a função ##MS_ServerStateReader## . Além disso, ele contém a permissão ALTER SERVER STATE , que permite o acesso a várias operações de gerenciamento, como: DBCC FREEPROCCACHE, DBCC FREESYSTEMCACHE ('ALL'), DBCC SQLPERF()
##MS_ServerStateReader## Os membros da função de servidor fixa ##MS_ServerStateReader## podem ler todas as DMVs (exibições de gerenciamento dinâmico) e funções cobertas por VIEW SERVER STATE e, respectivamente, têm a permissão VIEW DATABASE STATE em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário.
##MS_ServerPerformanceStateReader ## Os membros da função de servidor fixa ##MS_ServerPerformanceStateReader## podem ler todas as DMVs (exibições de gerenciamento dinâmico) e funções cobertas pelo VIEW SERVER PERFORMANCE STATE e, respectivamente, têm a permissão VIEW DATABASE PERFORMANCE STATE em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário. Esse é um subconjunto do que a função de servidor ##MS_ServerStateReader## tem acesso, o que ajuda a cumprir o Princípio de privilégios mínimos.
##MS_ServerSecurityStateReader ## Os membros da função de servidor fixa ##MS_ServerSecurityStateReader## podem ler todas as DMVs (exibições de gerenciamento dinâmico) e funções cobertas por VIEW SERVER SECURITY STATE e, respectivamente, têm a permissão VIEW DATABASE SECURITY STATE em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário. Esse é um pequeno subconjunto do que a função de servidor ##MS_ServerStateReader## tem acesso, o que ajuda a cumprir o Princípio de privilégios mínimos.
##MS_DefinitionReader## Os membros da função de servidor fixa ##MS_DefinitionReader## podem ler todas as exibições de catálogo cobertas por VIEW ANY DEFINITION e, respectivamente, têm a permissão VIEW DEFINITION em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário.
##MS_PerformanceDefinitionReader ## Os membros da função de servidor fixa ##MS_PerformanceDefinitionReader## podem ler todas as exibições de catálogo cobertas por VIEW ANY PERFORMANCE DEFINITION e, respectivamente, têm a permissão VIEW PERFORMANCE DEFINITION em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário. Esse é um subconjunto do que a função de servidor ##MS_DefinitionReader## tem acesso.
##MS_SecurityDefinitionReader## Os membros da função de servidor fixa ##MS_SecurityDefinitionReader## podem ler todas as exibições do catálogo cobertas por VIEW ANY SECURITY DEFINITION e respectivamente tem a permissão VIEW SECURITY DEFINITION em qualquer banco de dados no qual o membro dessa função tenha uma conta de usuário. Esse é um pequeno subconjunto do que a função de servidor ##MS_DefinitionReader## tem acesso, o que ajuda a cumprir o Princípio de privilégios mínimos.

Permissões de funções de servidor fixas

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

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

Cada função fixa no servidor tem certas permissões atribuídas. A tabela a seguir mostra as permissões atribuídas às funções de nível de servidor. Ela também mostra as permissões no nível do banco de dados que são herdadas desde que o usuário possa se conectar a bancos de dados individuais.

Função fixa de nível de servidor Permissões no nível de servidor Permissões no nível do banco de dados
##MS_DatabaseConnector## CONNECT ANY DATABASE CONECTAR
##MS_LoginManager## CREATE LOGIN
ALTER ANY LOGIN
N/D
##MS_DatabaseManager## CREATE ANY DATABASE
ALTER ANY DATABASE
ALTER
##MS_ServerStateManager## ALTER SERVER STATE
VIEW SERVER STATE
EXIBIR ESTADO DE DESEMPENHO DO SERVIDOR
EXIBIR ESTADO DE SEGURANÇA DO SERVIDOR
VIEW DATABASE STATE
EXIBIR ESTADO DE DESEMPENHO DO BANCO DE DADOS
EXIBIR ESTADO DE SEGURANÇA DO BANCO DE DADOS
##MS_ServerStateReader## VIEW SERVER STATE
EXIBIR ESTADO DE DESEMPENHO DO SERVIDOR
EXIBIR ESTADO DE SEGURANÇA DO SERVIDOR
VIEW DATABASE STATE
EXIBIR ESTADO DE DESEMPENHO DO BANCO DE DADOS
EXIBIR ESTADO DE SEGURANÇA DO BANCO DE DADOS
##MS_ServerPerformanceStateReader ## EXIBIR ESTADO DE DESEMPENHO DO SERVIDOR EXIBIR ESTADO DE DESEMPENHO DO BANCO DE DADOS
##MS_ServerSecurityStateReader ## EXIBIR ESTADO DE SEGURANÇA DO SERVIDOR EXIBIR ESTADO DE SEGURANÇA DO BANCO DE DADOS
##MS_DefinitionReader## VIEW ANY DATABASE
VIEW ANY DEFINITION
EXIBIR QUALQUER DEFINIÇÃO DE DESEMPENHO
VIEW ANY SECURITY DEFINITION
VIEW DEFINITION
EXIBIR DEFINIÇÃO DE DESEMPENHO
VIEW SECURITY DEFINITION
##MS_PerformanceDefinitionReader ## EXIBIR QUALQUER DEFINIÇÃO DE DESEMPENHO EXIBIR DEFINIÇÃO DE DESEMPENHO
##MS_SecurityDefinitionReader## VIEW ANY SECURITY DEFINITION VIEW SECURITY DEFINITION

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

O gráfico a seguir mostra as permissões atribuídas às funções de servidor herdadas (SQL Server 2019 e versões anteriores).
fixed_server_role_permissions

Importante

A permissão CONTROL SERVER é semelhante, mas não idêntica à função de servidor fixa do sysadmin . As permissões não implicam associações de função e as associações de função não concedem permissões. (Por exemplo, CONTROL SERVER não implica associação na função de servidor fixa sysadmin .) No entanto, às vezes é possível representar entre funções e permissões equivalentes. A maioria dos comandos DBCC e muitos procedimentos do sistema requerem associação na função de servidor fixa sysadmin . Para obter uma lista dos 171 procedimentos armazenados do sistema que exigem associação ao sysadmin , veja a seguinte postagem de blog de Andreas Wolter CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation – caveats.

Permissões no nível de servidor

Somente podem ser acrescentadas permissões do nível de servidor a funções de servidor definidas pelo usuário. Para listar as permissões em nível de servidor, execute a instrução a seguir. As permissões em nível de servidor são:

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

Para obter mais informações sobre permissões, consulte Permissões (Mecanismo de Banco de Dados) e sys.fn_builtin_permissions (Transact-SQL).

Trabalhando com funções de nível de servidor

A tabela a seguir explica os comandos, exibições e funções que você pode usar para trabalhar com funções de nível de servidor.

Recurso Type Descrição
sp_helpsrvrole (Transact-SQL) Metadados Retorna uma lista de funções de nível de servidor.
sp_helpsrvrolemember (Transact-SQL) Metadados Retorna informações sobre os membros de uma função de nível de servidor.
sp_srvrolepermission (Transact-SQL) Metadados Exibe as permissões de uma função de nível de servidor.
IS_SRVROLEMEMBER (Transact-SQL) Metadados Indica se um logon do SQL Server é membro da função de nível de servidor especificada.
sys.server_role_members (Transact-SQL) Metadados Retorna uma linha para cada membro de cada função de nível de servidor.
CREATE SERVER ROLE (Transact-SQL) Comando Cria uma função de servidor definida pelo usuário.
ALTER SERVER ROLE (Transact-SQL) Comando Altera a associação de uma função de servidor ou altera nome de uma função de servidor definida pelo usuário.
DROP SERVER ROLE (Transact-SQL) Comando Remove uma função de servidor definida pelo usuário.
sp_addsrvrolemember (Transact-SQL) Comando Adiciona um logon como um membro de uma função de nível de servidor. Preterido. Use ALTER SERVER ROLE em vez disso.
sp_dropsrvrolemember (Transact-SQL) Comando Remove um logon do SQL Server ou um usuário ou grupo do Windows de uma função de nível de servidor. Preterido. Use ALTER SERVER ROLE em vez disso.

Confira também

Funções de nível de banco de dados
Exibições do catálogo de segurança (Transact-SQL)
Funções de segurança (Transact-SQL)
Protegendo o SQL Server
Permissões de entidade de segurança do servidor GRANT (Transact-SQL)
Permissões do principal do servidor REVOKE (Transact-SQL)
Permissões de principal do servidor DENY (Transact-SQL)
Criar uma função de servidor
Funções do servidor do Banco de Dados SQL do Azure para gerenciamento de permissões