Guia de Introdução às permissões do mecanismo de banco de dadosGetting Started with Database Engine Permissions

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure simSQL Data Warehouse do Azure simParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

As permissões no Mecanismo de Banco de DadosDatabase Engine são gerenciadas no nível do servidor por meio de funções de logon e de servidor, e no nível do banco de dados por meio de funções de usuários do banco de dados e funções de banco de dados.Permissions in the Mecanismo de Banco de DadosDatabase Engine are managed at the server level through logins and server roles, and at the database level through database users and database roles. O modelo para o Banco de Dados SQLSQL Database expõe o mesmo sistema dentro de cada banco de dados, mas as permissões no nível do servidor não estão disponíveis.The model for Banco de Dados SQLSQL Database exposes the same system within each database, but the server level permissions are not available. Este tópico examina alguns conceitos básicos de segurança e descreve uma implementação comum das permissões.This topic reviews some basic security concepts and then describes a typical implementation of the permissions.

Entidades de segurançaSecurity Principals

Entidade de segurança é o nome oficial das identidades que usam o SQL ServerSQL Server e que podem receber uma permissão para executar ações.Security principal is the official name of the identities that use SQL ServerSQL Server and that can be assigned permission to take actions. Geralmente são pessoas ou grupos de pessoas, mas podem ser outras entidades que fingem ser pessoas.They are usually people or groups of people, but can be other entities that pretend to be people. As entidades de segurança podem ser criadas e gerenciadas usando os Transact-SQLTransact-SQL listados, ou usando o SQL Server Management StudioSQL Server Management Studio.The security principals can be created and managed using the Transact-SQLTransact-SQL listed, or by using SQL Server Management StudioSQL Server Management Studio.

LogonsLogins
Logons são contas de usuário individuais para entrada no Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine.Logins are individual user accounts for logging on to the Mecanismo de Banco de Dados do SQL ServerSQL Server Database Engine. SQL ServerSQL Server e Banco de Dados SQLSQL Database oferecem suporte a logons com base na autenticação do Windows e a logons com base na autenticação do SQL ServerSQL Server . and Banco de Dados SQLSQL Database support logins based on Windows authentication and logins based on SQL ServerSQL Server authentication. Para saber mais sobre os dois tipos de logons, confira Choose an Authentication Mode.For information about the two types of logins, see Choose an Authentication Mode.

Funções de servidor fixasFixed Server Roles
No SQL ServerSQL Server, as funções de servidor fixas são um conjunto de funções pré-configuradas que fornecem um agrupamento conveniente de permissões no nível do servidor.In SQL ServerSQL Server, fixed server roles are a set of pre-configured roles that provide convenient group of server-level permissions. Os logons podem ser adicionados às funções usando a instrução ALTER SERVER ROLE ... ADD MEMBER .Logins can be added to the roles using the ALTER SERVER ROLE ... ADD MEMBER statement. Para mais informações, consulte ALTER SERVER ROLE (Transact-SQL).For more information, see ALTER SERVER ROLE (Transact-SQL). Banco de Dados SQLSQL Database não dá suporte a funções de servidor fixas, mas tem duas funções no banco de dados mestre (dbmanager e loginmanager) que atuam como funções de servidor. does not support the fixed server roles, but has two roles in the master database (dbmanager and loginmanager) that act like server roles.

Funções de servidor definidas pelo usuárioUser-defined Server Roles
No SQL ServerSQL Server, você pode criar suas próprias funções de servidor e atribuir a elas permissões no nível do servidor.In SQL ServerSQL Server, you can create your own server roles and assign server-level permissions to them. Os logons podem ser adicionados às funções de servidor usando a instrução ALTER SERVER ROLE ... ADD MEMBER .Logins can be added to the server roles using the ALTER SERVER ROLE ... ADD MEMBER statement. Para mais informações, consulte ALTER SERVER ROLE (Transact-SQL).For more information, see ALTER SERVER ROLE (Transact-SQL). Banco de Dados SQLSQL Database não dá suporte às funções de servidor definidas pelo usuário. does not support the user-defined server roles.

Usuários de banco de dadosDatabase Users
Os logons recebem acesso a um banco de dados por meio da criação de um usuário de banco de dados em um banco de dados, e por meio do mapeamento desse usuário de banco de dados para o logon.Logins are granted access to a database by creating a database user in a database and mapping that database user to login. Normalmente, o nome de usuário do banco de dados é igual ao nome de logon, mas não precisa ser o mesmo.Typically the database user name is the same as the login name, though it does not have to be the same. Cada usuário de banco de dados é mapeado para um logon único.Each database user maps to a single login. Um logon pode ser mapeado para apenas um usuário em um banco de dados, mas pode ser mapeado como um usuário de banco de dados em vários bancos de dados diferentes.A login can be mapped to only one user in a database, but can be mapped as a database user in several different databases.

Os usuários de banco de dados também podem ser criados em um logon correspondente.Database users can also be created that do not have a corresponding login. Eles são chamados de usuários de banco de dados independente.These are called contained database users. MicrosoftMicrosoft incentiva o uso de usuários de banco de dados independente, pois isso facilita a movimentação do banco de dados para um servidor diferente. encourages the use of contained database users because it makes it easier to move your database to a different server. Como um logon, um usuário de banco de dados independente pode usar a autenticação do Windows ou a autenticação do SQL ServerSQL Server .Like a login, a contained database user can use either Windows authentication or SQL ServerSQL Server authentication. Para obter mais informações, consulte Usuários de bancos de dados independentes – Tornando seu banco de dados portátil.For more information, see Contained Database Users - Making Your Database Portable.

Há 12 tipos de usuários com pequenas diferenças no modo como são autenticados e quem eles representam.There are 12 types of users with slight differences in how they authenticate, and who they represent. Para ver uma lista de usuários, consulte CREATE USER (Transact-SQL).To see a list of users, see CREATE USER (Transact-SQL).

Funções de banco de dados fixasFixed Database Roles
As funções de banco de dados fixas são um conjunto de funções pré-configuradas que fornecem um agrupamento conveniente de permissões no nível do banco de dados.Fixed database roles are a set of pre-configured roles that provide convenient group of database-level permissions. Os usuários de banco de dados e funções de banco de dados definidas pelo usuário podem ser adicionadas às funções de banco de dados fixas usando a instrução ALTER ROLE ... ADD MEMBER.Database users and user-defined database roles can be added to the fixed database roles using the ALTER ROLE ... ADD MEMBER statement. Para obter mais informações, veja ALTER ROLE (Transact-SQL).For more information, see ALTER ROLE (Transact-SQL).

Funções de banco de dados definidas pelo usuárioUser-defined Database Roles
Usuários com a permissão CREATE ROLE podem criar novas funções de banco de dados definidas pelo usuário para representar grupos de usuários com permissões comuns.Users with the CREATE ROLE permission can create new user-defined database roles to represent groups of users with common permissions. Normalmente, as permissões são concedidas ou negadas para toda a função, simplificando o gerenciamento e o monitoramento de permissões.Typically permissions are granted or denied to the entire role, simplifying permissions management and monitoring. É possível adicionar usuários de banco de dados às funções de banco de dados usando a instrução ALTER ROLE ... ADD MEMBER .Database users can be added to the database roles by using the ALTER ROLE ... ADD MEMBER statement. Para obter mais informações, veja ALTER ROLE (Transact-SQL).For more information, see ALTER ROLE (Transact-SQL).

Outras entidadesOther principals
Entre as outras entidades de segurança que não são discutidas aqui estão as funções de aplicativo, logons e usuários baseados em certificados ou chaves assimétricas.Additional security principals not discussed here include application roles, and logins and users based on certificates or asymmetric keys.

Para ver um gráfico mostrando as relações entre usuários do Windows, grupos do Windows, logons e usuários de banco de dados, confira Create a Database User.For a graphic showing the relationships between Windows users, Windows groups, logins, and database users, see Create a Database User.

Cenário típicoTypical Scenario

Veja a seguir um exemplo que representa um método comum e recomendado de configuração de permissões.The following example represents a common and recommended method of configuring permissions.

No Active Directory ou no Azure Active Directory:In Active Directory or Azure Active Directory:

  1. Crie um usuário do Windows para cada pessoa.Create a Windows user for each person.

  2. Crie grupos do Windows que representam as unidades de trabalho e as funções de trabalho.Create Windows groups that represent the work units and the work functions.

  3. Adicione usuários do Windows aos grupos do Windows.Add the Windows users to the Windows groups.

Se a pessoa que está se conectando for se conectar a muitos bancos de dadosIf the person connecting will be connecting to many databases

  1. Crie um logon para os grupos do Windows.Create a login for the Windows groups. (Se você estiver usando a autenticação do SQL ServerSQL Server , ignore as etapas do Active Directory e crie os logons de autenticação do SQL ServerSQL Server aqui.)(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create SQL ServerSQL Server authentication logins here.)

  2. No banco de dados de usuário, crie um usuário de banco de dados para o logon que representa os grupos do Windows.In the user database, create a database user for the login representing the Windows groups.

  3. No banco de dados de usuário, crie uma ou mais funções de banco de dados definidas pelo usuário, cada uma representando uma função semelhante.In the user database, create one or more user-defined database roles, each representing a similar function. Por exemplo, analista financeiro e analista de vendas.For example financial analyst, and sales analyst.

  4. Adicione os usuários do banco de dados a uma ou mais funções de banco de dados definidas pelo usuário.Add the database users to one or more user-defined database roles.

  5. Conceda permissões às funções de banco de dados definidas pelo usuário.Grant permissions to the user-defined database roles.

Se a pessoa que está se conectando for se conectar a apenas um bancos de dadosIf the person connecting will be connecting to only one database

  1. Crie um logon para os grupos do Windows.Create a login for the Windows groups. (Se você estiver usando a autenticação do SQL ServerSQL Server , ignore as etapas do Active Directory e crie os logons de autenticação do SQL ServerSQL Server aqui.)(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create SQL ServerSQL Server authentication logins here.)

  2. No banco de dados de usuário, crie um usuário de banco de dados independente para o grupo do Windows.In the user database, create a contained database user for the Windows group. (Se você estiver usando a autenticação do SQL ServerSQL Server , ignore as etapas do Active Directory e crie a autenticação do SQL ServerSQL Server do usuário de banco de dados independente aqui.(If using SQL ServerSQL Server authentication, skip the Active Directory steps, and create contained database user SQL ServerSQL Server authentication here.

  3. No banco de dados de usuário, crie uma ou mais funções de banco de dados definidas pelo usuário, cada uma representando uma função semelhante.In the user database, create one or more user-defined database roles, each representing a similar function. Por exemplo, analista financeiro e analista de vendas.For example financial analyst, and sales analyst.

  4. Adicione os usuários do banco de dados a uma ou mais funções de banco de dados definidas pelo usuário.Add the database users to one or more user-defined database roles.

  5. Conceda permissões às funções de banco de dados definidas pelo usuário.Grant permissions to the user-defined database roles.

    O resultado mais comum neste ponto é um usuário do Windows membro de um grupo do Windows.The typical result at this point, is that a Windows user is a member of a Windows group. O grupo do Windows tem um logon no SQL ServerSQL Server ou no Banco de Dados SQLSQL Database.The Windows group has a login in SQL ServerSQL Server or Banco de Dados SQLSQL Database. O logon é mapeado para uma identidade de usuário no banco de dados do usuário.The login is mapped to a user identity in the user-database. O usuário é membro de uma função de banco de dados.The user is a member of a database role. Agora, você precisa adicionar permissões à função.Now you need to add permissions to the role.

Atribuição de permissõesAssigning Permissions

A maioria das instruções de permissão tem o formato:Most permission statements have the format:

AUTHORIZATION  PERMISSION  ON  SECURABLE::NAME  TO  PRINCIPAL;  
  • AUTHORIZATION deve ser GRANT, REVOKE ou DENY.AUTHORIZATION must be GRANT, REVOKE or DENY.

  • O PERMISSION estabelece qual ação é permitida ou proibida.The PERMISSION establishes what action is allowed or prohibited. SQL Server 2016 (13.x)SQL Server 2016 (13.x) pode especificar 230 permissões. can specify 230 permissions. Banco de Dados SQLSQL Database tem menos permissões, pois algumas ações não são relevantes no Azure. has fewer permissions because some actions are not relevant in Azure. As permissões são listadas no tópico Permissões (Mecanismo de Banco de Dados) e no gráfico referenciado abaixo.The permissions are listed in the topic Permissions (Database Engine) and in the chart referenced below.

  • ON SECURABLE::NAME é o tipo de item protegível (servidor, objeto de servidor, banco de dados ou objeto de banco de dados) e seu nome.ON SECURABLE::NAME is the type of securable (server, server object, database, or database object) and its name. Algumas permissões não exigem ON SECURABLE::NAME , pois ele não é ambíguo ou inadequado ao contexto.Some permissions do not require ON SECURABLE::NAME because it is unambiguous or inappropriate in the context. Por exemplo, a permissão CREATE TABLE não exige a cláusula ON SECURABLE::NAME .For example the CREATE TABLE permission doesn’t require the ON SECURABLE::NAME clause. (Por exemplo, GRANT CREATE TABLE TO Mary; permite que a Maria crie tabelas.)(For example GRANT CREATE TABLE TO Mary; allows Mary to create tables.)

  • PRINCIPAL é a entidade de segurança (logon, usuário ou função) que recebe ou perde a permissão.PRINCIPAL is the security principal (login, user, or role) which receives or loses the permission. Conceda permissões às funções sempre que possível.Grant permissions to roles whenever possible.

    O exemplo de instrução de concessão a seguir concede a permissão UPDATE na tabela ou modo de exibição Parts contido no esquema Production à função chamada PartsTeam:The following example grant statement, grants the UPDATE permission on the Parts table or view which is contained in the Production schema to the role named PartsTeam:

GRANT UPDATE ON OBJECT::Production.Parts TO PartsTeam;  

As permissões são concedidas a entidades de segurança (logons, usuários e funções) usando a instrução GRANT .Permissions are granted to security principals (logins, users, and roles) by using the GRANT statement. As permissões são explicitamente negadas usando o comando DENY .Permissions are explicitly denied by using the DENY command. Um permissão concedida ou negada anteriormente é removida usando a instrução REVOKE .A previously granted or denied permission is removed by using the REVOKE statement. As permissões são cumulativas, com o usuário recebendo todas as permissões concedidas ao usuário, logon e quaisquer associações de grupo; no entanto, qualquer negação de permissão substitui todas as concessões.Permissions are cumulative, with the user receiving all the permissions granted to the user, login, and any group memberships; however any permission denial overrides all grants.

Dica

Um erro comum é tentar remover um GRANT usando DENY em vez de REVOKE.A common mistake is to attempt to remove a GRANT by using DENY instead of REVOKE. Isso pode causar problemas quando um usuário recebe permissões de várias fontes, o que é bastante comum.This can cause problems when a user receives permissions from multiple sources; which is quite common. O exemplo a seguir demonstra a entidade.The following example demonstrates the principal.

O grupo de Vendas recebe as permissões SELECT na tabela OrderStatus por meio da instrução GRANT SELECT ON OBJECT::OrderStatus TO Sales;.The Sales group receives SELECT permissions on the OrderStatus table through the statement GRANT SELECT ON OBJECT::OrderStatus TO Sales;. O usuário Ted é membro da função Vendas.User Ted is a member of the Sales role. Ted também recebeu a permissão SELECT para a tabela OrderStatus em seu próprio nome de usuário por meio da instrução GRANT SELECT ON OBJECT::OrderStatus TO Ted;.Ted has also been granted SELECT permission to the OrderStatus table under his own user name through the statement GRANT SELECT ON OBJECT::OrderStatus TO Ted;. Vamos supor que o administrador deseja remover GRANT da função Vendas.Presume the administer wishes to remove the GRANT to the Sales role.

  • Se o administrador executar corretamente REVOKE SELECT ON OBJECT::OrderStatus TO Sales;, Ted manterá o acesso SELECT à tabela OrderStatus por meio de sua instrução GRANT individual.If the administrator correctly executes REVOKE SELECT ON OBJECT::OrderStatus TO Sales;, then Ted will retain SELECT access to the OrderStatus table through his individual GRANT statement.

  • Se o administrador executar incorretamente DENY SELECT ON OBJECT::OrderStatus TO Sales; , Ted, como um membro da função Vendas, terá a permissão SELECT negada, pois DENY para Vendas substitui essa GRANTindividual.If the administrator incorrectly executes DENY SELECT ON OBJECT::OrderStatus TO Sales; then Ted, as a member of the Sales role, will be denied the SELECT permission because the DENY to Sales overrides his individual GRANT.

Observação

As permissões podem ser configuradas usando Management StudioManagement Studio.Permissions can be configured using Management StudioManagement Studio. Encontre o item protegível no Pesquisador de Objetos, clique nele com o botão direito do mouse e clique em Propriedades.Find the securable in Object Explorer, right-click the securable, and then click Properties. Selecione a página Permissões .Select the Permissions page. Para obter ajuda sobre como usar a página de permissão, confira Permissions or Securables Page.For help on using the permission page, see Permissions or Securables Page.

Hierarquia de permissõesPermission Hierarchy

Permissões têm uma hierarquia de pai/filho.Permissions have a parent/child hierarchy. Ou seja, se você conceder a permissão SELECT em um banco de dados, essa permissão incluirá a permissão SELECT em todos os esquemas (filho) no banco de dados.That is, if you grant SELECT permission on a database, that permission includes SELECT permission on all (child) schemas in the database. Se você conceder a permissão SELECT em um esquema, ela incluirá a permissão SELECT em todas as tabelas (filho) e modos de exibição no esquema.If you grant SELECT permission on a schema, it includes SELECT permission on all the (child) tables and views in the schema. As permissões são transitivas, ou seja, se você conceder a permissão SELECT em um banco de dados, ele incluirá a permissão SELECT em todos os esquemas (filho) e em todos os modos de exibição e tabelas (netos).The permissions are transitive; that is, if you grant SELECT permission on a database, it includes SELECT permission on all (child) schemas, and all (grandchild) tables and views.

As permissões também têm permissões de cobertura.Permissions also have covering permissions. A permissão CONTROL em um objeto, normalmente fornece a você todas as outras permissões no objeto.The CONTROL permission on an object, normally gives you all other permissions on the object.

Como a hierarquia de pai/filho e a hierarquia de cobertura podem agir na mesma permissão, o sistema de permissões pode ficar complicado.Because both the parent/child hierarchy and the covering hierarchy can act on the same permission, the permission system can get complicated. Por exemplo, vamos usar uma tabela (Região) em um esquema (Clientes) em um banco de dados (SalesDB).For example, let's take a table (Region), in a schema (Customers), in a database (SalesDB).

  • CONTROL na tabela Região inclui todas as outras permissões na tabela Região, incluindo ALTER, SELECT, INSERT, UPDATE, DELETEe algumas outras permissões.CONTROL permission on table Region includes all the other permissions on the table Region, including ALTER, SELECT, INSERT, UPDATE, DELETE, and some other permissions.

  • SELECT no esquema Clientes que possui a tabela Região inclui a permissão SELECT na tabela Região.SELECT on the Customers schema that owns the Region table includes the SELECT permission on the Region table.

    Então, a permissão SELECT na tabela Região pode ser obtida por meio de qualquer uma das seis instruções a seguir:So SELECT permission on the Region table can be achieved through any of these six statements:

GRANT SELECT ON OBJECT::Region TO Ted;   

GRANT CONTROL ON OBJECT::Region TO Ted;   

GRANT SELECT ON SCHEMA::Customers TO Ted;   

GRANT CONTROL ON SCHEMA::Customers TO Ted;   

GRANT SELECT ON DATABASE::SalesDB TO Ted;   

GRANT CONTROL ON DATABASE::SalesDB TO Ted;  

Concessão da permissão mínimaGrant the Least Permission

A primeira permissão listada acima (GRANT SELECT ON OBJECT::Region TO Ted;) é a mais granular, ou seja, essa instrução é a permissão mínima possível que concede a SELECT.The first permission listed above (GRANT SELECT ON OBJECT::Region TO Ted;) is the most granular, that is, that statement is the least permission possible that grants the SELECT. Nenhuma permissão para subordinar objetos vem com ela.No permissions to subordinate objects come with it. É um bom princípio conceder sempre a permissão mínima possível, mas (contradizendo isso) conceda em níveis mais altos para simplificar o sistema a concessão.It's a good principal to always grant the least permission possible, but (contradicting that) grant at higher levels in order to simplify the granting system. Então, se o Ted precisar de permissões para o esquema inteiro, conceda SELECT uma vez no nível do esquema, em vez de conceder SELECT várias vezes no nível da tabela ou do modo de exibição.So if Ted needs permissions to the entire schema, grant SELECT once at the schema level, instead of granting SELECT at the table or view level many times. O design do banco de dados afeta bastante o quão bem-sucedida essa estratégia pode ser.The design of the database has a great deal of impact on how successful this strategy can be. Essa estratégia funcionará melhor quando o banco de dados for projetado de modo que os objetos que precisam de permissões idênticas forem incluídos em um único esquema.This strategy will work best when your database is designed so that objects needing identical permissions are included in a single schema.

Lista de permissõesList of Permissions

SQL Server 2016 (13.x)SQL Server 2016 (13.x) tem 230 permissões. has 230 permissions. SQL Server 2014 (12.x)SQL Server 2014 (12.x) tem 219 permissões. has 219 permissions. SQL Server 2012 (11.x)SQL Server 2012 (11.x) tem 214 permissões. has 214 permissions. SQL Server 2008 R2SQL Server 2008 R2 tem 195 permissões. has 195 permissions. Banco de Dados SQLSQL Database, SQL Data WarehouseSQL Data Warehousee Sistema de plataforma de análiseAnalytics Platform System têm menos permissões, pois expõem apenas uma parte do mecanismo de banco de dados, mas cada um tem algumas permissões que não se aplicam a SQL ServerSQL Server., SQL Data WarehouseSQL Data Warehouse, and Sistema de plataforma de análiseAnalytics Platform System have fewer permissions because they expose only a portion of the database engine, though each have some permissions that do not apply to SQL ServerSQL Server.

O gráfico a seguir mostra as permissões e as relações entre elas.The following graphic shows the permissions and their relationships to each other. Algumas das permissões de nível superior (como CONTROL SERVER) são listadas várias vezes.Some of the higher level permissions (such as CONTROL SERVER) are listed many times. Neste artigo, o cartaz é pequeno demais para ser lido.In this article, the poster is far too small to read. Clique na imagem para baixar o Cartaz de permissões do Mecanismo de Banco de Dados no formato pdf.Click the image to download the Database Engine Permissions Poster in pdf format.
Permissões do Mecanismo de Banco de DadosDatabase Engine Permissions

Para conferir um gráfico mostrando as relações entre as entidades Mecanismo de Banco de DadosDatabase Engine e o servidor e objetos de banco de dados, consulte Hierarquia de permissões (Mecanismo de Banco de Dados).For a graphic showing the relationships among the Mecanismo de Banco de DadosDatabase Engine principals and server and database objects, see Permissions Hierarchy (Database Engine).

Permissões versus Funções fixas de banco de dados e de servidorPermissions vs. Fixed Server and Fixed Database Roles

As permissões das funções fixas de servidor e de banco de dados são semelhantes, mas não são exatamente as mesmas que as permissões granulares.The permissions of the fixed server roles and fixed database roles are similar but not exactly the same as the granular permissions. Por exemplo, membros da função de servidor fixa sysadmin têm todas as permissões na instância do SQL ServerSQL Server, assim como os logons com a permissão CONTROL SERVER .For example, members of the sysadmin fixed server role have all permissions on the instance of SQL ServerSQL Server, as do logins with the CONTROL SERVER permission. Mas a concessão da permissão CONTROL SERVER não torna um logon membro da função de servidor fixa sysadmin e a adição de um logon à função de servidor fixa sysadmin não concede explicitamente ao logon a permissão CONTROL SERVER.But granting the CONTROL SERVER permission does not make a login a member of the sysadmin fixed server role, and adding a login to the sysadmin fixed server role does not explicitly grant the login the CONTROL SERVER permission. Às vezes, um procedimento armazenado verificará as permissões consultando a função fixa e não verificando a permissão granular.Sometimes a stored procedure will check permissions by checking the fixed role and not checking the granular permission. Por exemplo, desanexar um banco de dados exige a associação à função de banco de dados fixa db_owner .For example detaching a database requires membership in the db_owner fixed database role. A permissão CONTROL DATABASE equivalente não é suficiente.The equivalent CONTROL DATABASE permission is not enough. Esses dois sistemas operam em paralelo, mas raramente interagem entre si.These two systems operate in parallel but rarely interact with each other. A Microsoft recomenda, sempre que possível, o uso do sistema de permissão granular mais recente em vez das funções fixas.Microsoft recommends using the newer, granular permission system instead of the fixed roles whenever possible.

Permissões de monitoramentoMonitoring Permissions

Os modos de exibição a seguir retornam informações de segurança.The following views return security information.

  • Os logons e funções de servidor definidas pelo usuário em um servidor podem ser examinadas usando o modo de exibição sys.server_principals .The logins and user-defined server roles on a server can be examined by using the sys.server_principals view. Esse modo de exibição não está disponível em Banco de Dados SQLSQL Database.This view is not available in Banco de Dados SQLSQL Database.

  • Os usuários e funções definidas pelo usuário em um banco de dados podem ser examinadas usando o modo de exibição sys.database_principals .The users and user-defined roles in a database can be examined by using the sys.database_principals view.

  • As permissões concedidas para logons e funções de servidor fixas definidas pelo usuário podem ser examinadas usando o modo de exibição sys.server_permissions .The permissions granted to logins and user-defined fixed server roles can be examined by using the sys.server_permissions view. Esse modo de exibição não está disponível em Banco de Dados SQLSQL Database.This view is not available in Banco de Dados SQLSQL Database.

  • As permissões concedidas para usuários e funções de banco de dados fixas definidas pelo usuário podem ser examinadas usando o modo de exibição sys.database_permissions .The permissions granted to users and user-defined fixed database roles can be examined by using the sys.database_permissions view.

  • A associação à função de banco de dados pode ser examinada usando o modo de exibição sys. sys.database_role_members .Database role membership can be examined by using the sys. sys.database_role_members view.

  • A associação à função de servidor pode ser examinada usando o modo de exibição sys.server_role_members .Server role membership can be examined by using the sys.server_role_members view. Esse modo de exibição não está disponível em Banco de Dados SQLSQL Database.This view is not available in Banco de Dados SQLSQL Database.

  • Para exibições relacionadas à segurança adicional, consulte Exibições de catálogo de segurança (Transact-SQL) .For additional security related views, see Security Catalog Views (Transact-SQL) .

Instruções Transact-SQL úteisUseful Transact-SQL Statements

As instruções a seguir retornam informações úteis sobre as permissões.The following statements return useful information about permissions.

Para retornar as permissões explícitas concedidas ou negadas em um banco de dados ( SQL ServerSQL Server e Banco de Dados SQLSQL Database), execute a seguinte instrução no banco de dados.To return the explicit permissions granted or denied in a database ( SQL ServerSQL Server and Banco de Dados SQLSQL Database), execute the following statement in the database.

SELECT   
    perms.state_desc AS State,   
    permission_name AS [Permission],   
    obj.name AS [on Object],   
    dPrinc.name AS [to User Name]  
FROM sys.database_permissions AS perms  
JOIN sys.database_principals AS dPrinc  
    ON perms.grantee_principal_id = dPrinc.principal_id  
JOIN sys.objects AS obj  
    ON perms.major_id = obj.object_id;  

Para retornar os membros das funções de servidor (apenas SQL ServerSQL Server ), execute a seguinte instrução.To return the members of the server roles ( SQL ServerSQL Server only), execute the following statement.

SELECT sRole.name AS [Server Role Name] , sPrinc.name AS [Members]  
FROM sys.server_role_members AS sRo  
JOIN sys.server_principals AS sPrinc  
    ON sRo.member_principal_id = sPrinc.principal_id  
JOIN sys.server_principals AS sRole  
    ON sRo.role_principal_id = sRole.principal_id;  

Para retornar os membros das funções de banco de dados ( SQL ServerSQL Server e Banco de Dados SQLSQL Database), execute a seguinte instrução no banco de dados.To return the members of the database roles ( SQL ServerSQL Server and Banco de Dados SQLSQL Database), execute the following statement in the database.

SELECT dRole.name AS [Database Role Name], dPrinc.name AS [Members]  
FROM sys.database_role_members AS dRo  
JOIN sys.database_principals AS dPrinc  
    ON dRo.member_principal_id = dPrinc.principal_id  
JOIN sys.database_principals AS dRole  
    ON dRo.role_principal_id = dRole.principal_id;  

Next StepsNext Steps

Para conferir mais tópicos introdutórios, consulte:For more topics to get you started, see:

Consulte TambémSee Also

Central de segurança do Mecanismo de Banco de Dados do SQL Server e Banco de Dados SQL do Azure Security Center for SQL Server Database Engine and Azure SQL Database
Funções de segurança (Transact-SQL) Security Functions (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas à segurança (Transact-SQL) Security-Related Dynamic Management Views and Functions (Transact-SQL)
Exibições de catálogo de segurança (Transact-SQL) Security Catalog Views (Transact-SQL)
sys.fn_builtin_permissions (Transact-SQL) sys.fn_builtin_permissions (Transact-SQL)
Determinando permissões eficientes do Mecanismo de Banco de DadosDetermining Effective Database Engine Permissions