Funções de nível de banco de dados

Para gerenciar facilmente as permissões em seus bancos de dados, o SQL Server fornece várias funções, que são entidades de segurança que agrupam outras entidades. Elas são como grupos no sistema operacional Microsoft Windows. As funções de nível de banco de dados são permitidas em todo banco de dados em seus escopos de permissões. 

Há dois tipos de funções no nível do banco de dados no SQL Server: funções de banco de dados fixas, que são predefinidas no banco de dados, e funções de banco de dados flexíveis, que você cria.

As funções de banco de dados fixas são definidas no nível de banco de dados e existem em cada banco de dados. Os membros das funções de banco de dados db_owner e db_securityadmin podem gerenciar a associação de funções de banco de dados fixas. Porém, apenas os membros da função de banco de dados db_owner podem adicionar membros à função de banco de dados fixa db_owner. Também há algumas funções de banco de dados fixas com finalidade especial no banco de dados msdb.

Você pode adicionar qualquer conta de banco de dados e outras funções do SQL Server nas funções de nível de banco de dados. Cada membro de uma função de banco de dados fixa pode adicionar outros logons a essa mesma função.

Observação importanteImportante

Não adicione funções de banco de dados flexíveis como membros de funções fixas. Isso poderia habilitar o escalonamento não intencional de privilégios.

A tabela a seguir mostra as funções de nível de banco de dados fixas e seus recursos. Essas funções existem em todos os bancos de dados.

Nome da função no nível do banco de dados

Descrição

db_owner

Os membros da função de banco de dados fixa db_owner podem executar todas as atividades de configuração e manutenção no banco de dados, bem como descartar o banco de dados.

db_securityadmin

Os membros da função de banco de dados fixa db_securityadmin podem modificar a associação de funções e gerenciar permissões. A adição de entidades nesta função pode habilitar o escalonamento não intencional de privilégios.

db_accessadmin

Os membros da função de banco de dados fixa db_accessadmin podem adicionar ou remover o acesso ao banco de dados para logons do Windows, grupos do Windows e logons do SQL Server.

db_backupoperator

Os membros da função de banco de dados fixa db_backupoperator podem fazer backup do banco de dados.

db_ddladmin

Os membros da função de banco de dados fixa db_ddladmin podem executar qualquer comando Data Definition Language (DDL) em um banco de dados.

db_datawriter

Os membros da função de banco de dados fixa db_datawriter podem adicionar, excluir ou alterar dados em todas as tabelas de usuário.

db_datareader

Os membros da função de banco de dados fixa db_datareader podem ler todos os dados de todas as tabelas de usuário.

db_denydatawriter

Os membros da função de banco de dados fixa db_denydatawriter não podem adicionar, modificar ou excluir nenhum dado nas tabelas de usuário de um banco de dados.

db_denydatareader

Os membros da função de banco de dados fixa db_denydatareader não podem ler nenhum dado nas tabelas de usuário de um banco de dados.

Para obter informações específicas sobre as permissões de funções fixas de nível de banco de dados, consulte Permissões de funções de banco de dados fixas (Mecanismo de Banco de Dados).

Funções msdb

O banco de dados msdb contém as funções com finalidade especial que são mostradas na tabela a seguir.

Nome da função msdb

Descrição

db_ssisadmin

db_ssisoperator

db_ssisltduser

Os membros dessas funções de banco de dados podem administrar e usar o SSIS. As instâncias do SQL Server que são atualizadas de uma versão anterior podem conter uma versão mais antiga da função que foi nomeada com o Data Transformation Services (DTS), e não com o SSIS. Para obter mais informações, consulte Usando funções do Integration Services.

dc_admin

dc_operator

dc_proxy

Os membros dessas funções de banco de dados podem administrar e usar o coletor de dados. Para obter mais informações, consulte Segurança do coletor de dados.

PolicyAdministratorRole

Os membros da função de banco de dados db_ PolicyAdministratorRole podem executar todas as atividades de configuração e manutenção nas políticas condições do Gerenciamento Baseado em Políticas. Para obter mais informações, consulte Administrando servidores com Gerenciamento Baseado em Políticas.

ServerGroupAdministratorRole

ServerGroupReaderRole

Os membros dessas funções de banco de dados podem administrar e usar grupos de servidores registrados. Para obter mais informações, consulte Criando grupos de servidores.

dbm_monitor

Criada no banco de dados msdb quando o primeiro banco de dados é registrado no Monitor de Espelhamento de Banco de Dados. A função dbm_monitor não tem nenhum membro até que um administrador de sistemas atribua usuários à função.

Observação importanteImportante

Os membros das funções db_ssisadmin e dc_admin talvez possam elevar seus privilégios para sysadmin. Essa elevação de privilégio pode ocorrer porque essas funções podem modificar os pacotes do Integration Services e os pacotes do Integration Services podem ser executados pelo SQL Server usando o contexto de segurança sysadmin do SQL Server Agent. Como proteção contra essa elevação de privilégio ao executar planos de manutenção, conjuntos de coletas de dados e outros pacotes do Integration Services, configure os trabalhos do SQL Server Agent que executam pacotes para usar uma conta proxy com privilégios limitados ou adicionar apenas membros sysadmin às funções db_ssisadmin e dc_admin.

Trabalhando com funções de nível de banco de dados

A tabela a seguir explica os comandos, exibições e funções para trabalhar com funções de nível de banco de dados.

Recurso

Tipo

Descrição

sp_helpdbfixedrole (Transact-SQL)

Metadados

Retorna uma lista das funções de banco de dados fixas.

sp_dbfixedrolepermission (Transact-SQL)

Metadados

Exibe as permissões de uma função de banco de dados fixa.

sp_helprole (Transact-SQL)

Metadados

Retorna informações sobre as funções no banco de dados atual.

sp_helprolemember (Transact-SQL)

Metadados

Retorna informações sobre os membros de uma função no banco de dados atual.

sys.database_role_members (Transact-SQL)

Metadados

Retorna uma linha para cada membro de cada função de banco de dados.

IS_MEMBER (Transact-SQL)

Metadados

Indica se o usuário atual é um membro do grupo Microsoft Windows especificado ou da função de banco de dados do Microsoft SQL Server.

CREATE ROLE (Transact-SQL)

Comando

Cria uma nova função de banco de dados no banco de dados atual.

ALTER ROLE (Transact-SQL)

Comando

Altera o nome de uma função de banco de dados.

DROP ROLE (Transact-SQL)

Comando

Remove uma função do banco de dados.

sp_addrole (Transact-SQL)

Comando

Cria uma nova função de banco de dados no banco de dados atual.

sp_droprole (Transact-SQL)

Comando

Remove uma função de banco de dados do banco de dados atual.

sp_addrolemember (Transact-SQL)

Comando

Adiciona um usuário de banco de dados, uma função de banco de dados, o logon do Windows ou um grupo do Windows em uma função de banco de dados no banco de dados atual.

sp_droprolemember (Transact-SQL)

Comando

Remove uma conta de segurança de uma função do SQL Server no banco de dados atual.

Função de banco de dados pública

Cada usuário do banco de dados pertence à função de banco de dados pública. Quando permissões específicas não são concedidas ou são negadas a um usuário em um objeto seguro, o usuário herda as permissões concedidas como públicas naquele objeto.