Zwykle podczas tworzenia procedury składowanej używam następującego szablonu jako szablonu sortowania

Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end 

Czy istnieje sposób, aby zezwolić na wykonywanie tylko tej procedury składowanej, podczas gdy ja jestem przy niej?
Na przykład …

Grant execute [User_Execute] 

… ale tylko dla tej procedury składowanej?

Widziałem kilka innych podobnych pytań, ale wydaje się, że wszystkie odnoszą się do WSZYSTKICH procedur składowanych, a nie tylko jednej, ani nie widziałem żadnego, w którym możesz określić uprawnienia w skrypcie create procedure. Nawet odpowiedzi na temat tego, jak mogę ustawić uprawnienia bez GUI dla określonych procedur składowanych, byłyby mile widziane.

Edytuj Górna odpowiedź z pewnością wskazała mi właściwy kierunek, to jest zasadniczo to, co szukałem, nie myślałem o grupowaniu poleceń, co ostatecznie zrobiłem, grupując polecenie razem 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 

Komentarze

  • Kod podany w redagowanym tekście jest prawidłowy i prawidłowa odpowiedź na to pytanie.

Odpowiedź

GRANT EXECUTE ON dbo.procname TO username; 

Odpowiedź

obetnij tabelę Ustawianie uprawnień do obiektów, takich jak procedury składowane, można wykonać za pomocą:

GRANT EXECUTE ON <schema>.<object> to <user>; 

Jednak możesz również chcieć nadać prawa bezpieczeństwa na zarówno login, jak i poziom użytkownika. Będziesz chciał określić i przyznać TYLKO niezbędne uprawnienia dla obiektów, które wymagają dostępu (takich jak wykonywanie). Rozważ użycie funkcji EXECUTE AS, która umożliwia podszywanie się pod innego użytkownika w celu sprawdzenia uprawnień wymaganych do wykonania kodu BEZ konieczności nadawania wszystkich niezbędnych praw wszystkim podstawowym obiektom (np. stoły). EXECUTE AS można dodać do procedur składowanych, funkcji, wyzwalaczy itp.

Dodaj do kodu w następujący sposób bezpośrednio w procedurze składowanej:

CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER 

W tym przypadku podszywasz się pod właściciela wywoływanego modułu. Możesz również podszywać się pod SIEBIE LUB użytkownika tworzącego lub modyfikującego moduł LUB … imperonować CALLER, co umożliwi modułowi przejęcie uprawnień bieżącego użytkownika LUB … podszywać się pod WŁAŚCICIELA, który przejmie uprawnienia od właściciel procedury nazywany OR… podszywa się pod „user_name”, co będzie podszywać się pod konkretnego użytkownika LUB… podszywać się pod „login_name”, będzie podszywał się pod określony login.

W większości przypadków będziesz wystarczy nadać EXECUTE prawa do przechowywanych procesów, a następnie prawa są nadawane wszystkim obiektom, do których odwołuje się przechowywana procedura.

W ten sposób NIE MUSISZ nadaj ukryte prawa (na przykład: do aktualizacji danych lub wywołania dodatkowych procesów). Tworzenie łańcucha własności załatwia to za Ciebie. Jest to szczególnie przydatne w przypadku dynamicznego sql lub jeśli musisz utworzyć zadania o podwyższonym poziomie bezpieczeństwa, takie jak CREATE TABLE. EXECUTE AS to przydatne narzędzie do rozważenia w tych przypadkach.

Ten przykład może pomóc wyjaśnić to wszystko:

Utwórz użytkownika o nazwie NoPrivUser z publiczny dostęp do bazy danych (np. dbadb):

USE [master]; GO CREATE LOGIN [NoPrivUser] WITH PASSWORD=N"ABC5%", DEFAULT_DATABASE=[dbadb], CHECK_EXPIRATION=ON, CHECK_POLICY=ON; GO USE [DBAdb]; GO CREATE USER [NoPrivUser] FOR LOGIN [NoPrivUser]; GO 

UWAGA: TWÓRCA LUB WŁAŚCICIEL TEGO PROCEDURY BĘDZIE POTRZEBNY UTWORZYĆ PRAWA DO TABELI w docelowej bazie danych.

use DBAdb go CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER truncate table MyTable GO GRANT EXEC ON dbo.MyProcedure TO NoPrivUser; GO -- Now log into your database server as NoPrivUser and run the following. 

Z klauzulą EXECUTE AS procedura składowana jest uruchamiana w kontekście właściciela obiektu. Ten kod pomyślnie tworzy dbo.MyTable, a wiersze zostały pomyślnie wstawione. W tym przykładzie użytkownik NoPrivUser nie ma żadnych nadanych praw do modyfikowania tabeli ani odczytu lub modyfikowania jakichkolwiek danych w tej tabeli.

Wystarczy o prawach potrzebnych do wykonania tego konkretnego zadania zakodowanych W RAMACH kontekstu tej procedury.

Bardzo przydatna jest ta metoda tworzenia procedur składowanych, które mogą wykonywać zadania wymagające podwyższonych praw bezpieczeństwa bez trwałego przypisywania tych praw.

Komentarze

Odpowiedź

tutaj wprowadź opis obrazu

wybierz login do bazy danych -> Przejdź do Securable i kliknij przycisk Search, jak na poprzednim obrazku. Po kliknięciu przycisku Wyszukaj, znajdziesz następujące okno, w którym można dodać typ obiektu.

Kliknij przycisk Typy obiektów, a pojawi się okno „Wybierz typy obiektów” z różnymi obiektami. Teraz, jeśli widzisz, procedura składowana jest wyświetlana w obszarze typów obiektów. Teraz wybierzemy naszą określoną procedurę składowaną, dla której chcemy udzielić pozwolenia.

Komentarze

  • Po pierwsze, odpowiedź na pytanie miało ponad pięć lat. To byłoby w porządku, gdyby program operacyjny poprosił o rozwiązania, które ' nie używają GUI i mogą być osadzone w skrypcie. Twoja odpowiedź nie dotyczy tego.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *