SQL Server Roles

Roles podem ser comparadas a grupos de permissão do Windows, onde se dá determinada permissão para um grupo e vincula usuários a esse grupo.

Existem as “Fixed Roles”, que são Roles que já são configuradas desde a instalação do SQL Server, e configuradas para novos Bancos de Dados por padrão. E podem ser criadas Roles personalizadas para atender determinado objetivo, tanto Server Roles, quanto Database Roles.

As Roles são divididas em “Server Roles” e “Database Roles”. A primeira se refere a Roles a nível da instância do SQL Server, com foco mais administrativo da instância do SQL Server. A segunda se refere a Roles a nível do Banco de Dados, com objetivo de permissões administrativas somente do Banco de Dados em questão, e de acesso a dados do mesmo.

 

SERVER ROLES

Para adicionar um Login a uma Server Role, há duas maneiras possíveis:

Via SSMS:

Vá até o item de Security > Logins > Selecione o login desejado e clique com botão direito e em “Propriedades”. Navegue até a guia “Server Roles” e selecione a Role a qual você quer adicionar o Login.

2

1

 

Via T-SQL:

EXEC sp_addsrvrolemember [MarcosLanzarini],‘sysadmin’;

 

Para remover o usuário da Role:

EXEC sp_dropsrvrolemember ‘MarcosLanzarini’, ‘sysadmin’;

 

Abaixo a lista das Server Roles e suas especificações.

SysAdmin: Permissão total para fazer qualquer coisa na instância.

ServerAdmin: Semelhante ao SysAdmin, porém com algumas restrições. Membros dessa role podem controlar configurações do servidor e desliga-lo. Pode ser muito útil para usar, por exemplo, para alguns DBAs, que você quer que os mesmos possam gerenciar as configurações do SQL Server, porém não quer que tenham acesso aos seus dados, então você deixa a permissão dessa Role como DENY nos User Databases.

SecurityAdmin: Como o próprio nome induz, essa Role dá permissão para gerenciar segurança no SQL Server. Membros dessa Role podem gerenciar Logins do SQL Server, liberando permissões, habilitando ou desabilitando Logins, liberando acesso a Bancos de Dados, etc. Membros dessa Role não podem inserir usuários como SysAdmin.

ProcessAdmin: Possui como finalidade principal a possibilidade de desconectar sessões/logins.

SetupAdmin: Outra Role não muito utilizada, com permissões para gerenciar Linked Servers.

BulkAdmin: Role com permissão para executar operações de BULK INSERT. Além de estar vinculado a essa Role, o usuário deve ter acesso de INSERT na tabela que receberá os dados do BULK INSERT.

DiskAdmin: Permite gerenciar dispositivos de disco. Normalmente liberada para usuários que executam Backups.

DBCreator: Permite criar Bancos de Dados.

Public: Somente possui permissão de conectar na instância e ver os nomes dos Bancos de Dados.

 

DATABASE ROLES

Database Roles existem em cada Banco de Dados. As “Fixed Database Roles”, que são as Roles padrão do SQL Server não podem ser deletadas, e são replicadas a todos os Bancos de Dados. Podem ser criadas Database Roles personalizadas, com acessos específicos que o DBA pode criar.

Para adicionar um usuário a uma Role específica, você pode fazer via interface gráfica do SSMS, ou via T-SQL.

 

Via SSMS:

Vá até o item de Security > Logins > Selecione o login desejado e clique com botão direito e em “Propriedades”.

2

 

Na tela que irá abrir, vá na guia “User Mapping”, selecione o Banco de Dados que deseja mapear a permissão e selecione mais abaixo a Role a qual deseja que o usuário faça parte.

3

 

Via T-SQL:

Primeiro deve-se criar um User para o Login, dentro do Banco de Dados:

USE LanzariniDBA;

CREATE USER MarcosLanzarini FOR LOGIN [MarcosLanzarini] ;

 

Segundo passo é mapear uma Role para o usuário:

USE LanzariniDBA;

EXEC sp_addrolemember ‘db_owner’, ‘MarcosLanzarini’;

 

Para remover o usuário da Role:

EXEC sp_droprolemember ‘db_owner’, ‘MarcosLanzarini’;

 

Abaixo a lista das Database Roles e suas especificações.

Db_owner: Podem realizar quaisquer atividades, no contexto do Banco de Dados. Não possui permissão de acesso administrativo à Instância.

Db_SecurityAdmin: Pode gerenciar associações de funções (exceto db_owner)

Db_AccessAdmin: Também gerencia segurança. Porém também lida com acesso ao Banco de Dados, liberando ou revogando permissões no Banco de Dados para Logins.

Db_BackupOperator: Permissão específica para executar backups do Database em questão.

Db_DDLAdmin: Considerada permissão elevada devido ao acesso para poder criar, deletar ou modificar qualquer objeto no Banco de Dados. Membros dessa Role não possuem permissão para gerenciar segurança.

Db_DataWriter: Permissão para INSERT, DELETE e UPDATE em todas Tabelas e Views do Banco de Dados.

Db_DataReader: Permite leitura de Tabelas e Views.

Db_DenyDataWriter: Nega explicitamente acesso de escrita. DENY sempre terá prioridade sobre GRANT, então se um Login tiver mapeado em “db_datawriter” e também em “db_denydatawriter”, então não terá permissão.

Db_DenyDatareader: Nega explicitamente acesso de leitura. DENY sempre terá prioridade sobre GRANT, então se um Login tiver mapeado em “db_datareader” e também em “db_denydatareader”, então não terá permissão.

 

Também pode-se mapear acessos a nível mais específico, liberando um acesso específico a um usuário específico, em um Banco de Dados específico.

Exemplos:

GRANT EXECUTE ON xp_cmdshell TO MarcosLanzarini;

GRANT SELECT ON dbo.TabelaDeVendas TO MarcosLanzarini;

GRANT VIEW SERVER STATE TO MarcosLanzarini

 

Aproveitando o assunto Segurança:

Diferença de Autenticação e Autorização:

Autenticação é o processo de identificação do usuário no SQL Server.

Autorização é o processo de determinar o que esse usuário pode fazer.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s