Funções no nível do servidor
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure Analytics Platform System (PDW)
O 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.)
O SQL Server 2019 e versões anteriores ofereciam nove funções de servidor fixas. A permissões que são concedidas às funções de servidor fixas (exceto public) 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.
O SQL Server 2022 (16.x) vem com dez funções de servidor extras, criadas especificamente com o princípio do privilégio mínimo em mente, que têm o prefixo ##MS_
e o sufixo ##
para distingui-las de outras entidades de segurança e funções de servidor personalizadas criadas pelo usuário regular. Essas novas funções contêm privilégios que se aplicam ao escopo do servidor, mas também podem ser herdados para bancos de dados individuais (exceto para a 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, o logon precisa ser membro da função de nível de servidor ##MS_DatabaseConnector##, a partir da versão SQL Server 2022 (16.x), que concede a permissão CONNECT a todos os bancos de dados, ou ter uma conta de usuário em bancos de dados individuais. Isso também se aplica ao banco de dados master
.
Veja este exemplo: a função de nível de servidor ##MS_ServerStateReader## tem a permissão VIEW SERVER STATE. Um logon que é membro dessa função tem conta de usuário nos bancos de dados master
e WideWorldImporters
. O usuário também terá a permissão, VIEW DATABASE STATE nos dois bancos de dados, por herança.
Você pode adicionar entidades de segurança no nível do servidor (logons do SQL Server, contas do Windows e grupos do Windows) em funções no nível do 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 acrescentar 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 no Azure Synapse Analytics. Há funções especiais do servidor do banco de dados SQL do Azure 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 o Banco de Dados SQL, confira 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 . O securityadmin pode também ter permissões de nível de banco de dados GRANT , DENY e REVOKE se tiver acesso ao banco de dados. Além disso, o securityadmin pode redefinir senhas para logons do SQL Server.IMPORTANTE: a capacidade de permitir acesso ao mecanismo de banco de dados e de configurar permissões de usuário permitem 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 . Se preferir, começando com o SQL Server 2022 (16.x), use 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 são compatíveis com o SQL Server no 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. |
public | Cada logon do SQL Server pertence à função de servidor public. Quando permissões específicas não são concedidas ou são negadas a uma entidade de segurança do servidor em um objeto protegível, o usuário herda as permissões concedidas a public naquele objeto. Somente atribua permissões públicas em qualquer objeto quando você quiser que ele esteja disponível para todos os usuários. Não é possível alterar a associação em public. 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 se aplica 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 outras funções fixas no nível do servidor que são introduzidas com o SQL Server 2022 (16.x) e suas capacidades.
Observação
Essas permissões no nível do servidor não estão disponíveis na Instância Gerenciada de SQL do Azure ou no 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 anula 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 da antiga função de servidor fixa securityadmin, essa função não permite que os membros tenham privilégios GRANT . Essa é uma função mais limitada que ajuda a cumprir o princípio do privilégio mínimo. |
##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. Essa função de servidor tem os mesmos privilégios que a função dbcreator no SQL Server, mas recomendamos usar essa nova função, pois ela também existe no banco de dados SQL do Azure e ajuda a usar os mesmos scripts em ambientes diferentes. |
##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, tem a permissão ALTER SERVER STATE, que permite o acesso a diversas 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 têm, respectivamente, 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 por VIEW SERVER PERFORMANCE STATE e têm, respectivamente, 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. É um subconjunto do que a função de servidor ##MS_ServerStateReader## tem acesso, o que ajuda a cumprir o princípio do privilégio mínimo. |
##MS_ServerSecurityStateReader## | Os membros da função de servidor fixa ##MS_ServerSecurityStateReader## podem ler todas as exibições de gerenciamento dinâmico (DMVs) e funções cobertas por VIEW SERVER SECURITY STATE e têm, respectivamente, 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. É um pequeno subconjunto do que a função de servidor ##MS_ServerStateReader## tem acesso, o que ajuda a cumprir o princípio do privilégio mínimo. |
##MS_DefinitionReader## | Os membros da função de servidor fixa ##MS_DefinitionReader## podem ler todas as exibições do catálogo cobertas por VIEW ANY DEFINITION e têm, respectivamente, 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 do catálogo cobertas por VIEW ANY PERFORMANCE DEFINITION e têm, respectivamente, 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. É um pequeno subconjunto do que a função de servidor ##MS_DefinitionReader## tem acesso, o que ajuda a cumprir o princípio do privilégio mínimo. |
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
A tabela a seguir mostra as permissões atribuídas às funções de nível de servidor. 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 VIEW SERVER PERFORMANCE STATE VIEW SERVER SECURITY STATE |
EXIBIR ESTADO DO BANCO DE DADOS VIEW DATABASE PERFORMANCE STATE VIEW DATABASE SECURITY STATE |
##MS_ServerStateReader## | VIEW SERVER STATE VIEW SERVER PERFORMANCE STATE VIEW SERVER SECURITY STATE |
EXIBIR ESTADO DO BANCO DE DADOS 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 de funções de servidor para SQL Server 2019 e versões 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).
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 a associação à função de servidor fixa sysadmin.) Porém, às vezes é possível usurpar a identidade 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 .
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, veja Permissões (Mecanismo de Banco de Dados) e sys.fn_builtin_permissions (Transact-SQL).
Trabalhar 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 | Tipo | 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. |
Funções específicas do SQL Server habilitadas pelo Azure Arc
Quando você instala a extensão do Azure para o SQL Server, a instalação:
Cria uma função de nível de servidor: SQLArcExtensionServerRole
Cria uma função no nível do banco de dados: SQLArcExtensionUserRole
Adiciona a conta NT AUTHORITY\SYSTEM* a cada função
Realiza o mapeamento de NT AUTHORITY\SYSTEM* no nível de banco de dados para cada banco de dados
Concede permissões mínimas para os recursos habilitados
*Como alternativa, é possível configurar o SQL Server habilitado pelo Azure Arc para ser executado no modo de privilégio mínimo (disponível na preview). Para obter detalhes, faça a revisão do artigo Operar o SQL Server habilitado pelo Azure Arc com privilégios mínimos (preview).
Além disso, a extensão do Azure para SQL Server revoga permissões para essas funções quando elas não são mais necessárias para recursos específicos.
SqlServerExtensionPermissionProvider
é uma tarefa do Windows. Ela concede ou revoga privilégios no SQL Server quando detecta:
- Se uma nova instância do SQL Server for instalada no host
- A desinstalação de instância do SQL Server do host
- A habilitação ou desabilitação de um recurso de nível de instância ou a atualização das configurações
- A reinicialização do serviço de extensão
Observação
Antes da versão de julho de 2024, SqlServerExtensionPermissionProvider
é uma tarefa agendada. Ela funciona de hora em hora.
Para obter detalhes, consulte Configurar contas de serviço do Windows e permissões para a extensão do Azure para SQL Server.
Se você desinstalar a extensão do Azure para SQL Server, funções de nível de servidor e banco de dados serão removidas.
Para obter permissões, revise Permissões.
Conteúdo relacionado
- 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