2011-06-26 13 views
7

Czy można odmówić uprawnień do wszystkiego w SQL Server (np. Wybrać, wstawić, itp.) I dać tymczasowe uprawnienia za pośrednictwem procedur składowanych. Chcę używać tylko procedur przechowywanych, aby uzyskać dostęp do danych w bazie danych sql.Procedury i uprawnienia przechowywane w programie SQL Server

Czy to możliwe, czy istnieje inny sposób?

Odpowiedz

6

To jest dobry wzór obsługiwany przez mój serwer SQL.

Zasadniczo każdy, kto ma uprawnienia do procedur przechowywanych, nie potrzebuje w ogóle żadnych uprawnień do tabel, jeśli proc i tabele mają tego samego właściciela (zazwyczaj dbo). To się nazywa ownership chaining

Uwaga: uprawnienia na stołach po prostu nie są sprawdzane w tej sytuacji, tak wyraźne „Odmów” będą ignorowane zbyt (ODMÓW różni się od „Brak uprawnień”)

To samo odnosi się do poglądów , funkcje itd. (np. widok tabeli wywołań, widok wywołań proc, ...)

5

Tak to się nazywa ownership chaining, jeśli dasz wykonać uprawnienie do proc użytkownik będzie mógł wykonać proc i to będzie działać, będzie on uzyskać dane z powrotem

jeśli potem próbuje zrobić wybierz z tabela z SSMS nie zadziała (pod warunkiem, że nie jest w czytniku danych lub w wyższej roli)

Należy pamiętać, że dynamiczne łamanie SQL ownership chaining, jeśli w procedurze przechowywanej zastosowano dynamiczny SQL, będzie potrzebne dodatkowe uprawnienia w tym przypadku:

+3

"Łańcuch własności": http://msdn.microsoft.com/en-us/library/ms188676.aspx – gbn

+0

Prawidłowo, to właśnie Miałem na myśli...... – SQLMenace

1

Działa to nie tylko w przypadku procedur składowanych, ale także widoków.
Ogólnie rzecz biorąc, możesz dać użytkownikowi uprawnienia do obiektu "wyższego poziomu", takiego jak widok lub sproc, bez konieczności udzielania tego samego pozwolenia użytkownikom na podstawie tabeli (tabel).

Powiązane problemy