Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema 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