Zwykle, gdy tworzę procedurę przechowywaną, używam następujących jako szablonu sortowania
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
Czy istnieje sposób, aby uwzględnić udzielanie uprawnień do wykonywania tylko tej procedury przechowywanej, gdy ja jestem na niej?
Na przykład jak ...
Grant execute [User_Execute]
... ale tylko w przypadku tej procedury składowanej?
Widziałem inne podobne pytania, ale wszystkie odnoszą się do WSZYSTKICH procedur przechowywanych, a nie tylko jednego, ani nie widziałem takiego, w którym można określić uprawnienia w create procedure
skrypcie. Mile widziane są nawet odpowiedzi na temat tego, w jaki sposób mogę ustawić uprawnienia bez GUI dla określonych procedur przechowywanych.
Edytuj Najlepsza odpowiedź z pewnością skierowała mnie we właściwym kierunku, to jest to, czego właściwie szukałem, nie myślałem o grupowaniu komend, co właśnie skończyłem, grupowaniu komend wraz z moją procedurą składowaną. W każdym razie myślę, że to całkiem sprytne.
Create procedure <procedurename>
<@param1 <type>, @param2 <type>, etc..>
as begin
<procedure>
end
GO
GRANT EXECUTE ON <procedurename> to <username>
GO
źródło
Odpowiedzi:
źródło
obciąć tabelę Ustawienie uprawnień do obiektów takich jak procedury składowane można wykonać za pomocą:
Możesz jednak także przyznać uprawnienia bezpieczeństwa zarówno na poziomie logowania, jak i na poziomie użytkownika. Będziesz chciał określić i przyznać TYLKO niezbędne prawa do obiektów wymagających dostępu (takich jak wykonanie). Rozważ skorzystanie z
EXECUTE AS
możliwości, która umożliwia podszywanie się pod innego użytkownika w celu sprawdzenia uprawnień wymaganych do wykonania kodu BEZ konieczności przyznawania wszystkich niezbędnych uprawnień wszystkim bazowym obiektom (np. Tabelom).EXECUTE AS
można dodawać do procedur przechowywanych, funkcji, wyzwalaczy itp.Dodaj do kodu w następujący sposób bezpośrednio w Procedurze składowanej:
W tym przypadku podszywasz się pod właściciela wywoływanego modułu. Możesz także podszyć się pod SELF, LUB użytkownika tworzącego lub zmieniającego moduł LUB ... imperonować CALLER, co pozwoli modułowi na przejęcie uprawnień bieżącego użytkownika, LUB ... podszywać się pod WŁAŚCICIELA, który przejmie pozwolenie właściciel procedury nazywa się OR ... personifikuje „nazwa_użytkownika”, który podszywa się pod konkretnego użytkownika LUB ... personifikuje „login_name” za pomocą personifikuje określonego loginu.
W większości przypadków wystarczy przyznać
EXECUTE
uprawnienia do przechowywanych procesów, a następnie prawa są przyznawane wszystkim obiektom, do których istnieją odniesienia w przechowywanym procesie.W ten sposób NIE musisz udzielać uprawnień domyślnych (na przykład: aktualizować dane lub wywoływać dodatkowe procy). Łańcuch własności obsługuje to za Ciebie. Jest to szczególnie przydatne w przypadku dynamicznego SQL-a lub jeśli chcesz utworzyć zadania o podwyższonym poziomie bezpieczeństwa, takie jak
CREATE TABLE
.EXECUTE AS
jest przydatnym narzędziem do rozważenia.Ten przykład może pomóc wyjaśnić to wszystko:
Utwórz użytkownika o nazwie NoPrivUser z publicznym dostępem do bazy danych (np. Dbadb):
UWAGA: TWÓRCA LUB WŁAŚCICIEL NINIEJSZEJ PROCEDURY BĘDZIE WYMAGAĆ TWORZENIA PRAW TABELI w docelowej bazie danych.
Dzięki
EXECUTE AS
klauzuli procedura przechowywana jest uruchamiana w kontekście właściciela obiektu. Ten kod został pomyślnie utworzony,dbo.MyTable
a wiersze zostały pomyślnie wstawione. W tym przykładzie użytkownikNoPrivUser
nie ma absolutnie żadnych przyznanych uprawnień do modyfikowania tabeli lub odczytu lub modyfikacji dowolnych danych w tej tabeli.Przyjmuje tylko prawa potrzebne do wykonania tego konkretnego zadania zakodowanego W RAMACH tej procedury.
Ta metoda tworzenia procedur składowanych, które mogą wykonywać zadania wymagające podwyższonych uprawnień bezpieczeństwa bez trwałego przypisywania tych praw, jest bardzo przydatna.
źródło
wybierz login bazy danych -> Idź do Securable i kliknij przycisk Wyszukaj jak na poprzednim obrazku. Po kliknięciu przycisku Wyszukaj zobaczysz następujące okno, aby dodać typ obiektu.
Kliknij przycisk Typy obiektów, a otrzymasz okno „Wybierz typy obiektów” z różnymi obiektami. Teraz, jeśli widzisz, procedura przechowywana jest wymieniona w obszarze typów obiektów. Teraz wybierzemy naszą konkretną procedurę składowaną, na którą chcemy udzielić zgody.
źródło