fbpx

Permissão para ver metadados no SQL SERVER

Hoje fui abordado com uma questão interessante por um amigo:

“Tem um desenvolvedor aqui na empresa que mesmo que eu combine com ele que não é pra alterar uma procedure, ele vai lá e altera ela”

ps do Marcelo: dar poder pro DEV e pedir pra não alterar algo é que nem dar doce pra criança e pedir pra não comer!

Brincadeiras à parte, se não fossem Desenvolvedores não haveria a necessidade de banco de dados e eu morreria de fome! Sou amigo de vários inclusive.

A necessidade dele é simples:

  • O dev pode ver qualquer definição de PROC, VIEW, TABLE, etc.
  • O dev NÃO pode alterar absolutamente NADA!
  • Se um sistema criar uma procedure futuramente o dev precisa ter permissão automaticamente pra essa nova proc sem que eu (lazy) dba mova um dedo.

A solução: GRANT VIEW DEFINITION, caso precise permitir também que ele execute as procs no mesmo padrão, GRANT EXECUTE on schema::[schema]

No vídeo abaixo ilustro melhor e mostro o funcionamento com exemplos. Os scripts estão um pouco mais abaixo.

Espero que ajude!

Happy SQLSERVING!

[feather_share]

Scripts:

Para excutar como DBA logado:

[sql]

–um usuario
–usuario pode VER definições de metadados (corpo de procedures, views, etc)
–não deve alterar nada
–10 procs as 16:00
–grant view definition on proc to user
–18:00 – sistema criou mais 5 procs
–GRANT VIEW DEFINITION TO user
——————————–
–10 procs
–grant execute on proc to user
–cria mais 5 procs
–grant execute on schema::[dbo] to user
—————————————————

–Script para teste de validação de grant:

create login pombo with password = ‘Pa$$w0rd’;
GO
create user pombo for login [pombo]
GO
——————————————–
–cria procs:
–1
create procedure proc_teste_1
as
begin
print ‘Hello proc 1’
end
GO
–2
create procedure proc_teste_2
as
begin
print ‘Hello proc 2’
end
GO
–3
create procedure proc_teste_3
as
begin
print ‘Hello proc 3’
end
GO

——————————————————————–
–valida permissões:
sp_helprotect
———————-
–grants:
GRANT VIEW DEFINITION to Pombo;

GRANT EXECUTE ON schema::[dbo] to Pombo;

[/sql]

Para excutar como usuário POMBO logado:

[sql]
–ver metadados
sp_helptext ‘proc_teste_1’

sp_helptext ‘proc_teste_2’

–altera a definição
–nao funciona, não há permissão de ALTER
GO
alter procedure proc_teste_2
as
begin
print ‘Hello proc 22’
end
GO

–execução das procs
exec proc_teste_1
go
exec proc_teste_2
–depois de criada
exec proc_teste_3

[/sql]

 

Marcelo

Marcelo

Deixe um comentário!

Cadastre-se e fique por dentro das novidades!

Categorias

Siga-nos:

Weekly Tutorial