Általában tárolt eljárás létrehozásakor a következőket használom rendezési sablonként

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

Van-e mód arra, hogy a végrehajtási engedély megadását csak arra a tárolt eljárásra vonják be, amíg én vagyok benne?
Például, mint például …

Grant execute [User_Execute] 

… de csak erre a tárolt eljárásra?

Láttam még néhány hasonló kérdést, de úgy tűnik, hogy ezek mind az összes tárolt eljárásra vonatkoznak, és nem csak egyre, és nem is láttam olyat, ahol megadhat engedélyeket a create procedure szkript belsejében. Még azok a válaszok is örömmel fogadhatók, hogy miként állíthatok be engedélyeket GUI nélkül bizonyos tárolt eljárásokhoz.

Szerkesztés A legfelsőbb válasz minden bizonnyal a helyes irányba mutatott, lényegében ez kerestem, nem gondoltam a parancsok kötegelésére, amit végül meg is tettem, a parancsot a tárolt eljárásommal együtt kötegeltem. Egyébként úgy gondolom, hogy ez elég csúnya.

Create procedure <procedurename> <@param1 <type>, @param2 <type>, etc..> as begin <procedure> end GO GRANT EXECUTE ON <procedurename> to <username> GO 

Megjegyzések

  • A szerkesztett szövegben megadott kód érvényes és a kérdésre adott helyes válasz.

Válasz

GRANT EXECUTE ON dbo.procname TO username; 

Válasz

tábla csonkolása Az objektumok, például a tárolt eljárások engedélyének beállítása a következő műveletekkel hajtható végre:

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

Biztonsági jogokat azonban megadhat a következő címen is: mind a bejelentkezési, mind a felhasználói szintet. Kizárólag a hozzáférést igénylő objektumokhoz szükséges jogokat szeretné meghatározni és megadni (például végrehajtáshoz). Fontolja meg a EXECUTE AS képesség használatát, amely lehetővé teszi egy másik felhasználó megszemélyesítését a kód végrehajtásához szükséges engedélyek érvényesítéséhez anélkül, hogy minden szükséges jogot meg kellene adnia az összes mögöttes objektumnak (pl. táblázatok). A EXECUTE AS hozzáadható a tárolt eljárásokhoz, függvényekhez, aktiválókhoz stb.

Hozzáadhatja a kódhoz a következőképpen a Tárolt eljáráson belül:

CREATE PROCEDURE dbo.MyProcedure WITH EXECUTE AS OWNER 

Ebben az esetben a meghívandó modul tulajdonosának adja ki magát. Megadhatja magának, VAGY a modult létrehozó vagy módosító felhasználónak VAGY … imperonate CALLER-t, amely lehetővé teszi a modul számára, hogy felvegye az aktuális felhasználó engedélyeit, VAGY … megszemélyesítheti TULAJDONOSAT, aki megkapja Az eljárás tulajdonosának VAGY hívják … a “felhasználónév” személyazonosságát adja le, amely egy adott felhasználót fog megszemélyesíteni. VAGY … a “bejelentkezési_név” névvel megszemélyesíti a megadott bejelentkezést.

Az idő nagy részében Ön csak EXECUTE jogokat kell megadnia a tárolt prociknak, majd jogokat kapnak a tárolt procon belül hivatkozott összes objektumra.

Ilyen módon NEM kell adj implicit jogokat (például: adatok frissítésére vagy további procok meghívására). A tulajdonosi láncolás ezt kezeli az Ön számára. Ez különösen hasznos dinamikus sql esetén, vagy ha magasabb szintű biztonsági feladatokat kell létrehoznia, például CREATE TABLE. A EXECUTE AS egy hasznos eszköz, amelyet érdemes figyelembe venni.

Ez a példa segíthet mindezek tisztázásában:

Hozzon létre egy NoPrivUser nevű felhasználót a következővel: nyilvános hozzáférés egy adatbázishoz (pl. 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 

MEGJEGYZÉS: A MEGHATÁROZÓ LÉTREHOZÓJA VAGY TULAJDONOSA TÁBLÁZATI JOGOK KÉSZÍTÉSÉT KELL A Céladatbázisban.

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. 

A EXECUTE AS záradékkal a tárolt eljárás az objektumtulajdonos környezetében fut. Ez a kód sikeresen létrehozza a dbo.MyTable fájlt, és a sorokat sikeresen beszúrja. Ebben a példában a (z) NoPrivUser felhasználónak nincs semmilyen joga a táblázat módosítására, vagy a táblázat bármely adatának elolvasására vagy módosítására.

Csak ehhez kell az eljárás keretein belül kódolt konkrét feladat végrehajtásához szükséges jogokról.

Nagyon hasznos ez a módszer olyan tárolt eljárások létrehozására, amelyek képesek megnövelt biztonsági jogokat igénylő feladatokat végrehajtani anélkül, hogy véglegesen kiosztanák ezeket a jogokat.

Megjegyzések

Válasz

írja ide a kép leírását

válassza ki az adatbázis bejelentkezést -> Lépjen a Biztonságos elemhez és kattintson a Keresés gombra, mint az előző képen. A Keresés gombra kattintva a következő ablakban találja meg az objektum típusát.

Kattintson az Objektumtípusok gombra, és megjelenik az „Objektumtípusok kiválasztása” ablak különböző objektumokkal. Ha látja, a tárolt eljárás az objektumtípusok területen szerepel. Most kiválasztjuk azt a konkrét tárolt eljárást, amelyhez engedélyt akarunk adni.

Megjegyzések

  • Először is, a kérdés több mint öt éves volt, amikor válaszoltál rá. Ez rendben lenne, kivéve, ha az OP kifejezetten olyan megoldásokat kért, amelyek nem ' nem használják a GUI-t, és beágyazhatók egy szkriptbe. Válasza nem foglalkozik ezzel.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük