Partilhar via


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

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Base de dados SQL no Microsoft Fabric

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. Eles são como grupos no sistema operacional Windows. As funções no nível de banco de dados abrangem todo o escopo de permissões.

Para adicionar e remover usuários a uma função de banco de dados, use as ADD MEMBER opções e DROP MEMBER da instrução ALTER ROLE . O Analytics Platform System (PDW) e o Azure Synapse Analytics não suportam a utilização do ALTER ROLE. Em vez disso, use os procedimentos sp_addrolemember e sp_droprolemember mais antigos.

Há dois tipos de funções no nível de banco de dados: funções de banco de dados fixas predefinidas no banco de dados e funções de banco de dados definidas pelo usuário que você pode criar.

As funções de banco de dados fixas são definidas no nível do banco de dados e existem em cada banco de dados. Os membros da função de banco de dados db_owner podem gerenciar a associação à função de banco de dados fixa. Há também algumas funções de banco de dados para fins especiais no msdb banco de dados.

Você pode adicionar qualquer conta de banco de dados e outras funções do SQL Server em funções no nível de banco de dados.

Tip

Não adicione funções de banco de dados definidas pelo usuário como membros de funções fixas. Isso poderia permitir o escalonamento de privilégios não intencionais.

As permissões das funções de banco de dados definidas pelo usuário podem ser personalizadas usando as instruções GRANT, DENY e REVOKE . Para obter mais informações, consulte Permissões (Mecanismo de Banco de Dados).

Para obter uma lista de todas as permissões, consulte o cartaz Permissões do Mecanismo de Banco de Dados . As permissões no nível do servidor não podem ser concedidas a funções de banco de dados. Logons e outras entidades de nível de servidor (como funções de servidor) não podem ser adicionados a funções de banco de dados. Para segurança no nível de servidor no SQL Server, use funções de servidor. As permissões no nível do servidor não podem ser concedidas por meio de funções no Banco de Dados SQL do Azure e no Azure Synapse Analytics.

Funções de banco de dados fixas

A tabela a seguir mostra as funções de banco de dados fixas e seus recursos. Essas funções existem em todos os bancos de dados. Exceto para a função de banco de dados público , as permissões atribuídas às funções de banco de dados fixas não podem ser alteradas.

Nome da função de banco de dados fixa Description
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 e também DROP podem usar o banco de dados no SQL Server. (No Banco de Dados SQL e no Azure Synapse, algumas atividades de manutenção exigem permissões no nível do servidor e não podem ser executadas por db_owners.)
db_securityadmin Os membros da função fixa de banco de dados db_securityadmin podem modificar a associação para funções personalizadas e gerenciar permissões. Os membros dessa função podem potencialmente elevar seus privilégios e suas ações devem ser monitoradas.
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 DDL (Data Definition Language) em um banco de dados. Os membros dessa função podem potencialmente elevar seus privilégios manipulando código que pode ser executado sob altos privilégios e suas ações devem ser monitoradas.
db_datawriter Os membros da função de base de dados fixa db_datawriter podem adicionar, eliminar ou alterar dados em todas as tabelas de utilizador. Na maioria dos casos de uso, esta função é combinada com a associação db_datareader para permitir a leitura dos dados a serem modificados.
db_datareader Os membros da função fixa de banco de dados db_datareader podem ler todos os dados de todas as tabelas e visualizações do usuário. Os objetos de usuário podem existir em qualquer esquema, exceto sys e INFORMATION_SCHEMA.
db_denydatawriter Os membros da função de base de dados fixa db_denydatawriter não podem adicionar, modificar ou excluir qualquer dado nas tabelas de usuário dentro 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 das tabelas e vistas de usuário dentro de um banco de dados. Os membros dessa função também não podem ler metadados sobre o banco de dados e seus objetos, como exibir exibições do sistema.

As permissões atribuídas às funções de banco de dados fixas não podem ser alteradas. Todas as funções (incluindo a public função) têm as permissões CONNECT. A figura a seguir mostra as permissões atribuídas às funções de banco de dados fixas:

Nome da função Permissions
db_owner BANCO DE DADOS DE CONTROLE: Tem todas as permissões no banco de dados.
db_securityadmin ALTERAR QUALQUER FUNÇÃO DE APLICATIVO
CRIAR ESQUEMA
ALTERAR QUALQUER FUNÇÃO
VER DEFINIÇÃO
db_accessadmin ALTERAR TODOS OS UTILIZADORES
CRIAR ESQUEMA
CRIAR UTILIZADOR
db_backupoperator BANCO DE DADOS DE BACKUP
REGISTO DE CÓPIA DE SEGURANÇA
CHECKPOINT
db_ddladmin ALTERAR QUALQUER MONTAGEM
ALTERAR QUALQUER CHAVE ASSIMÉTRICA
ALTERAR QUALQUER CERTIFICADO
ALTERAR QUALQUER CONTRATO
ALTERAR QUALQUER GATILHO DDL DE BANCO DE DADOS
ALTERAR QUALQUER NOTIFICAÇÃO DE EVENTO DO BANCO DE DADOS
ALTERAR QUALQUER ESPAÇO DE DADOS
ALTERAR QUALQUER BIBLIOTECA EXTERNA
ALTERAR QUALQUER CATÁLOGO DE TEXTO COMPLETO
ALTERAR QUALQUER TIPO DE MENSAGEM
ALTERAR QUALQUER LIGAÇÃO DE SERVIÇO REMOTO
ALTERAR QUALQUER ROTA
ALTERAR QUALQUER ESQUEMA
ALTERAR QUALQUER SERVIÇO
ALTERAR QUALQUER CHAVE SIMÉTRICA
CHECKPOINT
CRIAR AGREGAÇÃO
CRIAR ASSEMBLY
CRIAR CHAVE ASSIMÉTRICA
CRIAR CERTIFICADO
CRIAR CONTRATO
CRIAR NOTIFICAÇÃO DE EVENTO DDL DO BANCO DE DADOS
CRIAR PADRÃO
CRIAR BIBLIOTECA EXTERNA
CRIAR CATÁLOGO DE TEXTO COMPLETO
CRIAR FUNÇÃO
CRIAR TIPO DE MENSAGEM
CRIAR PROCEDIMENTO
CRIAR FILA
CRIAR VINCULAÇÃO DE SERVIÇO REMOTO
CRIAR ROTA
CRIAR REGRA
CRIAR ESQUEMA
CRIAR SERVIÇO
CRIAR CHAVE SIMÉTRICA
CRIAR SINÓNIMO
CREATE TABLE
CRIAR TIPO
CRIAÇÃO DE VISÃO
CRIAR COLEÇÃO DE ESQUEMA XML
REFERÊNCIAS

Aplica-se a: SQL Server 2019 e posterior
ALTERAR QUALQUER IDIOMA EXTERNO
CRIAR IDIOMA EXTERNO

Aplica-se a: SQL Server 2022 e posterior
ALTERAR QUALQUER FONTE DE DADOS EXTERNA
ALTERAR QUALQUER FORMATO DE ARQUIVO EXTERNO
ALTERAR QUALQUER TRABALHO EXTERNO
ALTERAR QUALQUER FLUXO EXTERNO
ALTER LEDGER
ATIVAR LEDGER
db_datareader CONCEDER SELEÇÃO NO BANCO DE DADOS::<database-name>
db_denydatareader NEGAR SELECIONAR NA BASE DE DADOS::<database-name>
db_datawriter INSERIR SUBVENÇÃO NA BASE DE DADOS::<database-name>
CONCEDER ATUALIZAÇÃO NA BASE DE DADOS::<database-name>
CONCEDER EXCLUSÃO NO BANCO DE DADOS::<database-name>
db_denydatawriter NEGAR INSERÇÃO NA BASE DE DADOS::<database-name>
NEGAR ATUALIZAÇÃO NO BANCO DE DADOS::<database-name>
NEGAR EXCLUSÃO NA BASE DE DADOS::<database-name>
public Não há permissões no nível de banco de dados inerentes à função de banco de dados público. No entanto, algumas permissões de banco de dados estão presentes por padrão. Especificamente, EXIBIR QUALQUER DEFINIÇÃO DE CHAVE DE CRIPTOGRAFIA DE COLUNA, EXIBIR QUALQUER DEFINIÇÃO DE CHAVE MESTRA DE COLUNA e SELECIONAR permissão em muitas tabelas individuais do sistema. Essas permissões podem ser revogadas.

Funções especiais para o Banco de Dados SQL do Azure e o Azure Synapse

Essas funções de banco de dados existem apenas no banco de dados virtual master . Suas permissões são restritas a ações executadas no master. Somente os usuários do banco de dados em master podem ser adicionados a essas funções. Os logins não podem ser adicionados a essas funções, mas os usuários podem ser criados com base em logins e, em seguida, esses usuários podem ser adicionados às funções. Usuários de banco de dados contidos em master também podem ser adicionados a essas funções. No entanto, os utilizadores de bases de dados contidos que foram adicionados à função dbmanager em master não podem ser usados para criar novas bases de dados.

Nome da função Description
dbmanager Pode criar e excluir bancos de dados. Um membro da função dbmanager que cria um banco de dados, torna-se o proprietário desse banco de dados, o que permite que o usuário se conecte a esse banco de dados como o usuário dbo. O utilizador dbo tem todas as permissões de base de dados na base de dados. Os membros da função dbmanager não têm necessariamente permissão para acessar bancos de dados que não possuem.
db_exporter Os membros da função fixa de banco de dados db_exporter podem executar todas as atividades de exportação de dados. As permissões concedidas por meio dessa função são CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.

Aplica-se a: Pools SQL dedicados do Azure Synapse Analytics (anteriormente SQL DW)
loginmanager Pode criar e excluir logins no banco de dados virtual master .

Note

A principal ao nível de servidor e o administrador do Microsoft Entra (se configurado) têm todas as permissões no Banco de Dados SQL e no Azure Synapse Analytics sem necessidade de serem membros de qualquer função. Para obter mais informações, consulte Autorizar o acesso ao banco de dados ao Banco de Dados SQL, à Instância Gerenciada SQL e ao Azure Synapse Analytics.

Algumas funções de banco de dados não são aplicáveis ao Azure SQL ou ao Azure Synapse:

  • db_backupoperator não é aplicável no Banco de Dados SQL do Azure (não na Instância Gerenciada SQL do Azure) e no pool sem servidor do Azure Synapse Analytics porque os comandos T-SQL de backup e restauração não estão disponíveis.

  • db_datawriter e db_denydatawriter não são aplicáveis ao Azure Synapse Analytics sem servidor porque ele apenas lê dados externos.

Funções no banco de dados msdb

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

msdb nome da função Description
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 usando o DTS (Data Transformation Services) em vez do SSIS. Para obter mais informações, consulte Funções do Integration Services (Serviço SSIS).
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 Coleta 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 em políticas e condições de Gestão Baseada em Políticas. Para obter mais informações, consulte Administrar servidores usando o gerenciamento baseado em políticas.
ServerGroupAdministratorRole
ServerGroupReaderRole
Os membros dessas funções de banco de dados podem administrar e usar grupos de servidores registrados.
dbm_monitor É criado no msdb banco de dados quando o primeiro banco de dados é registrado no Monitor de Espelhamento de Dados. A função dbm_monitor não tem membros até que um administrador de sistema atribua usuários à função.

Os membros da função db_ssisadmin e da função dc_admin podem elevar seus privilégios a administrador de sistemas. Essa elevação de privilégio pode ocorrer porque essas funções podem modificar pacotes do Integration Services e pacotes do Integration Services podem ser executados pelo SQL Server usando o contexto de segurança sysadmin do SQL Server Agent. Para se proteger contra essa elevação de privilégio ao executar planos de manutenção, conjuntos de coleta 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 adicione apenas membros sysadmin às funções db_ssisadmin e dc_admin.

Trabalhar com funções no nível de banco de dados

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

Feature Tipo Description
sp_helpdbfixedrole Metadata Retorna uma lista das funções de banco de dados fixas.
sp_dbfixedrolepermission Metadata Exibe as permissões de uma função de banco de dados fixa.
sp_helprole Metadata Retorna informações sobre as funções no banco de dados atual.
sp_helprolemember Metadata Retorna informações sobre os membros de uma função no banco de dados atual.
sys.database_role_members Metadata Retorna uma linha para cada membro de cada função de banco de dados.
IS_MEMBER Metadata Indica se o usuário atual é membro do grupo especificado do Microsoft Windows, do grupo Microsoft Entra ou da função de banco de dados do Microsoft SQL Server.
CRIAR DE FUNÇÕES Command Cria uma nova função de banco de dados no banco de dados atual.
FUNÇÃO ALTER Command Altera o nome ou a associação de uma função de banco de dados.
PAPEL DE DESCIDA Command Remove uma função do banco de dados.
sp_addrole Command Cria uma nova função de banco de dados no banco de dados atual.
sp_droprole Command Remove uma função de banco de dados do banco de dados atual.
sp_addrolemember Command Adiciona um usuário de banco de dados, função de banco de dados, logon do Windows ou grupo do Windows a uma função de banco de dados no banco de dados atual. Todas as plataformas, exceto o Analytics Platform System (PDW) e o Azure Synapse, devem usar ALTER ROLE em vez disso.
sp_droprolemember Command Remove uma conta de segurança de uma função do SQL Server no banco de dados atual. Todas as plataformas, exceto o Analytics Platform System (PDW) e o Azure Synapse, devem usar ALTER ROLE em vez disso.
GRANT Permissions Adiciona permissão a uma função.
DENY Permissions Nega uma permissão para uma função.
REVOKE Permissions Remove permissões concedidas ou negadas anteriormente.

Função de banco de dados público

Cada usuário de banco de dados pertence à função de banco de dados público . Quando um usuário não recebe ou nega permissões específicas em um objeto protegível, o usuário herda as permissões concedidas ao público nesse objeto. Os usuários do banco de dados não podem ser removidos da função pública .

Examples

Os exemplos nesta seção mostram como trabalhar com funções no nível de banco de dados.

A. Adicionar um usuário a uma função no nível de banco de dados

O exemplo a seguir adiciona o usuário 'Ben' à função db_datareaderfixa no nível do banco de dados.

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Listar todos os principais de banco de dados que são membros de uma função a nível de banco de dados

A instrução a seguir retorna todos os membros de qualquer função de banco de dados.

SELECT roles.principal_id AS RolePrincipalID,
    roles.name AS RolePrincipalName,
    database_role_members.member_principal_id AS MemberPrincipalID,
    members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
INNER JOIN sys.database_principals AS roles
    ON database_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.database_principals AS members
    ON database_role_members.member_principal_id = members.principal_id;
GO