Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 SQL Database e no Azure Synapse, algumas atividades de manutenção requerem permissões ao nível do servidor e não podem ser realizadas pelos membros do db_owner.) |
| 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 |
CONTROL DATABASE: Tem todas as permissões na base de dados. |
| db_securityadmin | ALTER ANY APPLICATION ROLECREATE SCHEMAALTER ANY ROLEVIEW DEFINITION |
| db_accessadmin | ALTER ANY USERCREATE SCHEMACREATE USER |
| db_backupoperator | BACKUP DATABASEBACKUP LOGCHECKPOINT |
| db_ddladmin | ALTER ANY ASSEMBLYALTER ANY ASYMMETRIC KEYALTER ANY CERTIFICATEALTER ANY CONTRACTALTER ANY DATABASE DDL TRIGGERALTER ANY DATABASE EVENT NOTIFICATIONALTER ANY DATASPACEALTER ANY EXTERNAL LIBRARYALTER ANY FULLTEXT CATALOGALTER ANY MESSAGE TYPEALTER ANY REMOTE SERVICE BINDINGALTER ANY ROUTEALTER ANY SCHEMAALTER ANY SERVICEALTER ANY SYMMETRIC KEYCHECKPOINTCREATE AGGREGATECREATE ASSEMBLYCREATE ASYMMETRIC KEYCREATE CERTIFICATECREATE CONTRACTCREATE DATABASE DDL EVENT NOTIFICATIONCREATE DEFAULTCREATE EXTERNAL LIBRARYCREATE FULLTEXT CATALOGCREATE FUNCTIONCREATE MESSAGE TYPECREATE PROCEDURECREATE QUEUECREATE REMOTE SERVICE BINDINGCREATE ROUTECREATE RULECREATE SCHEMACREATE SERVICECREATE SYMMETRIC KEYCREATE SYNONYMCREATE TABLECREATE TYPECREATE VIEWCREATE XML SCHEMA COLLECTIONREFERENCESAplica-se a: SQL Server 2019 (15.x) e versões posteriores: ALTER ANY EXTERNAL LANGUAGECREATE EXTERNAL LANGUAGEAplica-se a: SQL Server 2022 (16.x) e versões posteriores: ALTER ANY EXTERNAL DATA SOURCEALTER ANY EXTERNAL FILE FORMATALTER ANY EXTERNAL JOBALTER ANY EXTERNAL STREAMALTER LEDGERENABLE LEDGER |
| db_datareader | GRANT SELECT ON DATABASE::<database-name> |
| db_denydatareader | DENY SELECT ON DATABASE::<database-name> |
| db_datawriter | GRANT INSERT ON DATABASE::<database-name>GRANT UPDATE ON DATABASE::<database-name>GRANT DELETE ON DATABASE::<database-name> |
| db_denydatawriter | DENY INSERT ON DATABASE::<database-name>DENY UPDATE ON DATABASE::<database-name>DENY DELETE ON DATABASE::<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, VIEW ANY COLUMN ENCRYPTION KEY DEFINITION, VIEW ANY COLUMN MASTER KEY DEFINITION, e SELECT 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 conhecido como 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 realizar todas as atividades de configuração e manutenção das 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