MCDBA Brasil


  • Home
  • Sobre
  • Contato

Livros





Links Rápidos

SQL Server Builds (All Versions/Editions)


Download SQL Server 2017 (trial)


SQL Server 2017 Feature Pack


SQL Server 2016 Feature Pack


Cumulative Update SQL Server 2017 builds


Cumulative Update SQL Server 2016 builds


Cumulative Update SQL Server 2014 builds


Cumulative Update SQL Server 2012 builds


SQL Server 2005/2008 Samples Databases


Documentando o Servidor SQL Server


Analisando a Performance do Servidor-CheckList


Virtual PASS PT


Faça parte do maior virtual chapter do PASS com conteúdos técnicos em Português sobre SQL Server.

Todos os meses um evento Online para você! Acompanhe aqui os WebCasts já agendados

Sindicalize seu blog ou site ao VirtualPASSPT

SQL Server Blogs

SQL Server Query Processing Team


SQL Programmability & API Development Team


SQL Server Manageability Team


Latin America Support Team


Database + Disk + Performance


Microsoft SQL Server Support


SQL CLR Team


SQL Query Optimization Team


SQL 2005 Code Samples


SQL Server Express Team


SQL SMO Samples


SQL Storage Engine Team


SQL CAT Team


SQL Protocols Team


PSS SQL Server Engineers


Slava Oks on SQLOS


Ken Henderson’s blog


LUTI@Microsoft Blog


kimberly L. Trip’s blog


Fernando Garcia Blog

Artigos

Administrando Permissões com Ownership Chains

por Nilton Pinheiro maio 14, 2006 Nenhum comentário

Imagine que temos uma tabela crítica e importante em um sistema e precisamos atribuir permissão de DELETE a um grupo de usuários. A prática normalmente utilizada por muitos DBAs e desenvolvedores é conceder a permissão diretamente na tabela como no exemplo abaixo:

GRANT DELETE ON NomeTabela TO NomeGrupo


O grande problema aqui é que esta prática torna os dados vulneráveis, pois nada impede que um usuário execute a ação de DELETE através de outras ferramentas que não seja sua aplicação. Por exemplo, utilizando o Query Analyzer ou qualquer outra ferramenta de execução de script.


Entretanto, o que poucos sabem é que utilizando o recurso Ownership Chains podemos atribuir permissões de SELECT, INSERT, UPDATE ou DELETE de forma indireta, através da utilização de store procedures ou views, permitindo assim uma melhor segurança aos dados e facilidade na administração de permissões.


Isto é possível porque quando um usuário acessa uma view, o SQL Server não realiza a checagem de permissão nos objetos que a view faz referência se estes objetos e a view tiverem o mesmo owner e se todos os objetos referenciados pela view estiverem no mesmo banco de dados. No caso de stored procedures, o SQL Server faz a checagem de permissão apenas na procedure. No entanto, se a cadeia for quebrada, ou seja, nem todos os objetos referenciados possuem o mesmo owner, o SQL Server realiza a checagem de permissão em cada objeto referenciado pela view ou stored procedure.


Aproveitando o exemplo mostrado acima, para que a nossa digamos “cadeia de permissões” funcione, basta criar uma stored procedure que execute a ação de DELETE e ao invés de atribuir a permissão diretamente na tabela, podemos simplesmente conceder a permissão de EXEC na stored srocedure. Com isso, o SQL Server entenderá que uma vez que o owner dos objetos envolvidos é o mesmo, o usuário que possuir a permissão de executar a stored procedure também terá permissão para executar as ações definidas na mesma, seja um SELECT, INSERT, UPDATE ou DELETE.


Veja o exemplo abaixo:


–Cria a tabela Tabela1
CREATE Table dbo.Tabela1 (Col1 as int, Col2 as varchar (10))


— Insere 3 registros na Tabela1
INSERT Tabela1 VALUES (1, ‘aaa’)
INSERT Tabela1 VALUES (2, ‘bbb’)
INSERT Tabela1 VALUES (3, ‘ccc’)


–Cria Stored Procedure DelTabela1
CREATE Proc dbo.DelTabela1 AS
 DELETE From Tabela1 Where Col1 = 2
Go
— Atribui permissão para executar a procedure
GRANT EXEC ON DELTabela1 TO NomeGrupo


Neste exemplo, embora a permissão de DELETE não tenha sido atribuída diretamente na tabela, o usuário que executar a procedure conseguirá excluir os registros afetados.


Até o SQL Server 2000 SP3 o recurso de OwnerShip Chains também funcionava entre banco de dados (Cross Database). Neste caso, se o owner dos objetos e dos bancos de dados nos quais os objetos estavam alocados fossem o mesmo, o SQL Server não realizava a checagem de permissão nos objetos referenciados, mesmo estando estes objetos em outro banco de dados.


Com a aplicação do SP3, por default esta funcionalidade é desativada, mas você pode escolher se mantém ou não a funcionalidade selecionando a opção Allow cross-database ownership chaining durante a instalação do SP3. Mesmo após a instalação do SP3 também é possível ativá-la no nível banco de dados selecionando a opção Allow cross-database ownership chaining nas propriedades do banco de dados ou no nível servidor, configurando a opção Cross DB Ownership Chaining para 1 através da procedure de sistema sp_configure.


Como podemos observar, as duas grandes vantagens da utilização do Ownership Chains são:


1. Facilidade na administração de permissões: permite a administração de permissões em múltiplos objetos (por exemplo, várias tabelas), configurando permissão em um único objeto (por exemplo, uma view ou procedure). Dessa forma, se temos uma procedure que acessa cinco ou mais tabelas, precisamos atribuir permissão apenas na procedure e não nas cinco ou mais tabelas.


2. Segurança das informações: os usuários terão acesso às informações somente através da aplicação. Eles jamais terão acesso direto às tabelas, o que pode evitar grandes dores de cabeça.


Obs: Embora este recurso também esteja disponível no SQL Server 2005, até o recente release (April CTP), é possível configurar o Ownership Chains apenas no nível servidor.


Para saber mais sobre Ownership Chains, consulte o Books Online do SQL Server 2000 ou SQL Server 2005.

Avaliação:
Compartilhe:
  • Anterior Roles e Permissões no SQL Server20 anos atrás
  • Próximo Administrando e Mantendo o TEMPDB no SQL Server20 anos atrás

Deixe uma resposta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MVP Reconnect Award

Categorias

  • Artigos (359)
  • Dica da Semana (95)
  • Documentação (54)
  • Downloads (113)
  • MSDE 2000 (3)
  • Sem categoria (1)
  • Tutoriais (9)

Posts recentes

  • #FechouBrasil #PartiuPortugal
  • Brigando com o erro “The cached MSI file is missing”
  • MCDBABRASIL está de volta
  • Documentando o Servidor SQL Server
  • Brigando com os Erros 17182, 17826 e 17120

SQL Server AlwaysOn Video Series

Video1: Introdução ao SQLServer2012 AlwaysOn


Video2: Introdução ao SQLServer2012 AlwaysOn Availability Group


Video3: Introdução ao SQLServer2012 AlwaysOn AVG-Demo


Video4: Introdução ao SQLServer2012 AlwaysOn Listener


Video5: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries


Video6: Introdução ao SQLServer2012 AlwaysOn Readable Secondaries-Demo


Video7: Introdução ao SQLServer2012 AlwaysOn Failover Clustering


Serie SQL Server Failover Clustering End-to-End

Parte 1: Configuração da Rede e Ambiente


Parte 2: Configurando o Windows 2008 R2 Domain Controler e DNS


Parte 3: Preparando os nós para o Failover Cluster


Parte 4: Configurando um Failover Cluster de 2 nós


Parte 5: Configurando as LUNs no iSCSI Software Target (Parte 1)


Parte 6: Configurando as LUNs no iSCSI Software Target (Parte 2)


Parte 7: Apresentando as LUNs para os nós do Failover Cluster


Parte 8: Configurando os discos no Failover Cluster


Parte 9: Instalando a primeira instância virtual do SQL Server 2008


Parte 10: Instalando a segunda instância virtual do SQL Server 2008


Parte 11: Instalando e Configurando o MSDTC no Failover Cluster


Parte 12: Configurando Mount Points no Cluster e SQL Server 2008


Vídeo Extra: Removendo uma Instância do SQL Server 2008 R2 em Cluster


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering Overview


Alta Disponibilidade no SQL Server 2008 R2: Failover Clustering na Prática

Menu

  • Home
  • Sobre
  • Contato

Mais

  • RSS Feeds
2026 MCDBA Brasil.