Transact-sql, felhasználói jogosultság
GRANT utasítás
A GRANT utasítás engedélyezi a védett objektumokkal foglalkozó megbízókat. Ez az állítás a következő szintaxissal rendelkezik:
Az ALL záradék azt jelenti, hogy a megadott főnek minden, a védett objektumra érvényes engedély van megadva. A permission_list paraméter határozza meg megoldani utasításokat vagy tárgyak (vesszővel elválasztott értékek), és a paraméter osztály - az osztály vagy a nevét a védett objektum, amelyre engedélyt biztosított. A biztonságosan felajánlott ajánlat jelöli azt a védett tárgyat, amelyre az engedélyt megadják. A prinicpal_list paraméter felsorolja az összes engedélyezett fiókot (vesszővel elválasztva). Paraméter és főkomponens principal_list lista lehet Windows felhasználói fiók bejelentkezési név vagy a felhasználói fiók van társítva a tanúsítvány, a bejelentkezési név van leképezve egy aszimmetrikus kulcs, az adatbázis-felhasználó, adatbázis szerepe, vagy az alkalmazás szerepet.
Az alábbi táblázat felsorolja azokat az engedélyeket és védett objektumokat, amelyekre érvényesek, valamint az egyes engedélyek által biztosított képességek rövid leírása:
Engedélyek és megfelelő védett objektumok
Biztosítja a védett adatbázis objektumok létrehozását
A táblázat csak a legfontosabb jogosultságokat sorolja fel. Mivel az adatbázismotor biztonsági modellje hierarchikus, számos granulált engedélyt tartalmaz, amelyek nem szerepelnek a listában. Az engedélyek leírásához olvassa el az online dokumentációt.
A GRANT utasítás az alábbi példákban látható. A következő példa bemutatja a CREATE engedélyének használatát:
Ebben a példában a Vasya és a [ProfessorWeb \ Alexandr] felhasználóinak joguk van végrehajtani a Transact-SQL CREATE TABLE és a CREATE PROCEDURE utasításokat. (Amint ez a példában látható, a GRANT utasítás a CREATE engedélyhez nem tartalmazza az ON paramétert.)
Az alábbi példában a Vasya felhasználónak lehetősége nyílik felhasználó által meghatározott függvények létrehozására a SampleDb adatbázisban:
Az alábbiakban bemutatjuk, hogyan kell használni a SELECT engedélyt a GRANT utasításban:
Itt a Vasya felhasználó megkapja az engedélyt arra, hogy elolvassa a vonalakat a Munkavállalói táblázatból. Ha engedélyt kap egy Windows felhasználói fiókra vagy bejelentkezési névre, akkor ez az engedély kizárólag arra a fiókra vonatkozik (bejelentkezési név). Másrészről a csoporthoz vagy szerephez adott engedélyek kiterjednek egy adott csoport vagy szerepkör összes felhasználójára.
A következő példa bemutatja, hogyan használhatja az UPDATE engedélyt a GRANT utasításban:
A GRANT utasítás végrehajtása után a Vasya felhasználója módosíthatja a Works_on táblázat Id és EnterDate oszlopainak értékeit.
A következő példa a MEGJEGYZÉS DEFINÍCIÓ engedélyét használja, amely a felhasználók számára hozzáférést biztosít az olvasási metaadatokhoz:
A következő példa bemutatja a CONTROL használatát:
Itt a felhasználó Vasya biztosított, sőt, mind a meghatározott hozzáférési jogokat egy rögzíthető (ebben az esetben az adatbázis SampleDb adatok). A védett objektum CONTROL jogosultsággal rendelkező megbízottja számára is hallgatólagosan lehetőséget biztosítanak arra, hogy engedélyeket adjon az objektumnak. Más szavakkal, a CONTROL engedély tartalmazza a WITH GRANT OPTION záradékot. A CONTROL engedély a legmagasabb felbontás, ami számos védett adatbázis objektumot illeti. Emiatt a CONTROL engedély egy bizonyos területen szintjén implicit módon tartalmazza a CONTROL engedélyt az összes védett objektumra ezen a területen. Ezért engedély CONTROL használati Vasya alapozni SampleDb adatok hallgatólagosan magában foglalja az összes engedélyeket az adatbázisban, valamint az összes jogot minden szerelvények az adatbázis minden jogot minden rendszer és adatbázis-objektumok.
Ha az A felhasználó alapértelmezés szerint engedélyt ad a B felhasználó számára, akkor a B felhasználó jogosultságokat adhat a Transact-SQL utasítások GRANT utasításban történő végrehajtásakor. A WITH GRANT OPTION záradék megadja a B felhasználónak a további lehetőséget, hogy engedélyt adjon más felhasználóknak:
Ebben a példában a Vasya felhasználó engedélyt kap arra, hogy a SELECT utasítás végrehajtsa a sorok lekérését a Works_on táblából, valamint az engedélyt a SampleDb adatbázis többi felhasználójának.
DENY utasítás
A DENY utasítás megtiltja a felhasználó számára, hogy a megadott objektumokon végrehajtsa a megadott műveleteket. Más szóval, ez az utasítás megszünteti a felhasználói fiók meglévő engedélyeit, és megakadályozza a felhasználó számára, hogy engedélyeket szerezzen a csoportban való tagsága vagy a jövőben általa betöltött szerepében. Ez az állítás a következő szintaxissal rendelkezik:
A DENY utasítás összes paraméterének pontosan ugyanaz a logikai értéke, mint az azonos nevű GRANT utasítás paraméterei. A DENY nyilatkozat további CASCADE paraméterrel rendelkezik. amelyben jelzik, hogy az A felhasználó számára tiltott engedélyek tiltottak azoknak a felhasználóknak is, akiknek azokat átadta. Ha az utasítások megtagadási CASCADE opciót kihagyjuk, és ebben az esetben már korábban engedélyt a megfelelő objektumot WITH GRANT OPTION javaslatok alapján DENY nyilatkozat sikertelen.
A DENY utasítás blokkolja a felhasználók, csoportok vagy szerepek által egy csoportban vagy szerepkörben való tagságukon keresztül kapott engedélyeket. Ez azt jelenti, hogy ha egy olyan csoport tagja, amelyről egy csoportnak engedélyezték az engedélyt, akkor ez a felhasználó lesz az egyetlen a csoportban, aki nem tudja használni ezt az engedélyt. Másrészt, ha az egész csoport számára tilos az engedély, akkor ennek a csoportnak a tagjai nem használhatják ezt az engedélyt.
A DENY utasítás használatát az alábbi példák mutatják. A következő példában nem engedélyezzük a Vasya felhasználónak két korábbi engedélyét:
Kezdetben engedélyt kap arra, hogy a projekt táblából minden sorot a SampleDb adatbázis minden felhasználójára lekérjen. Ezt követően ezt az engedélyt törli a Vasya felhasználó számára.
A Database Engine biztonsági modell magasabb szintű engedélyeinek letiltása érvényteleníti az alacsonyabb szintű engedélyeket. Például, ha a SELECT engedély nélkül tilos a SampleDb adatbázis, és ez az állásfoglalás várható a Munkavállaló asztalra, ami egy SELECT engedélye tilos lesz az Employee tábla ugyanúgy, mint az összes többi táblák az adatbázis.
REVOKE utasítás
A REVOKE utasítás eltávolítja a korábban kiadott vagy elutasított engedélyt. Ez az állítás a következő szintaxissal rendelkezik:
A REVOKE utasítás egyetlen új paramétere a GRANT OPTION FOR paraméter. Az utasítás minden más paraméterének pontosan ugyanaz a logikai értéke, mint a GRANT vagy a DENY utasításainak azonos paraméterei. A GRANT OPTION FOR paraméter a WITH GRANT OPTION záradék hatásának megszüntetésére szolgál a megfelelő GRANT utasításban. Ez azt jelenti, hogy a felhasználó továbbra is rendelkezik a korábban megadott jogosultságokkal, de többé nem tudja őket továbbadni más felhasználóknak.
A REVOKE utasítás törli mind a "pozitív" engedélyeket, amelyeket a GRANT utasítás és a "negatív" engedélyek adnak a DENY nyilatkozatnak. Így a funkciója az előzőekben említett engedélyek (pozitív és negatív) semlegesítése.
A REVOKE utasítás használata az alábbi példában látható:
A REVOKE utasítás ebben a példában felülbírálja az engedélyezett adathozzáférési engedélyt a nyilvános szerephez. Ebben az esetben a fennálló tilalma engedélyezésére ezeket az utasításokat a felhasználó Vasya nem távolítható el, mert az engedélyeket megadott vagy elutasított kifejezetten a csoport tagjai (vagy tagjai) nem befolyásolja az eltávolítása ezen engedélyek (pozitív vagy negatív) a csoporthoz.
Az engedélyek kezelése az Adminisztrációs stúdió használatával
Az engedélyek kezelése az Adminisztrációs stúdió használatával bontsa ki a kiszolgálót, majd bontsa ki az "Adatbázisok" mappát. Kattintson a jobb gombbal a kívánt adatbázisra, és válassza a Tulajdonságok parancsot a helyi menüből. Az Adatbázis tulajdonságai párbeszédpanelen Adatbázis tulajdonságai - SampleDb válassza ki az Oldal Engedélyek, majd kattintson a Keresés gombra, hogy kiválassza, hogy mely felhasználók megadásáról vagy megtagadásáról engedélyt. A sajtóban a Tallózás gombra, a Tallózás objektumok párbeszédablak párbeszédablakban válassza ki a kívánt felhasználó vagy szerepet (például a vendég és állami), majd kattintson az OK gombra a megfelelő ablakok hozzáadja a kiválasztott felhasználó (szerepek).
Az így kiválasztott felhasználók a Felhasználók vagy szerepek mezőben találhatók az adatbázis tulajdonságai ablakban.
Mostantól kiválasztott felhasználók számára engedélyezheti vagy letilthatja bizonyos műveleteket. A jóváhagyás engedélyezéséhez jelölje be a Grant oszlopban található jelölőnégyzetet a végrehajtandó művelethez, és kapcsolja ki a műveletet, jelölje be a Deny oszlop jelölőnégyzetét. A With Grant oszlopban lévő jelölőnégyzet azt jelzi, hogy az engedély címzettjének joga van megadni más felhasználóknak is. Az engedélyek vagy tiltások oszlopának jelölőnégyzetének hiánya azt jelenti, hogy nincsenek kifejezett engedélyek vagy tiltások a felhasználó számára a megfelelő műveletek végrehajtásához.
Rendelkezés és tiltó engedélyeket a felhasználókhoz vagy szerepeket műveleteket végeznek az egyes adatbázis-táblák segítségével Management Studio történik, ugyanúgy, mint a teljes adatbázis: az Object Explorer Object Explorer fordul a teljes hierarchia a szerver mappákat, amíg a kívánt táblázatot, nyissa meg a Tulajdonságok ablakot a asztalok vannak kiválasztva, és hozzáadjuk a területen a felhasználók vagy szerepkörök a felhasználók által igényelt, ami után megadja vagy megtagadja engedélyeket végrehajtásához szükséges bizonyos intézkedéseket telepítés wo tvetstvuyuschih zászlók:
Korlátok használata nézeteken keresztül
Az egyes oszlopok és / vagy sorok használatának átfedése azt jelenti, hogy a bemutató motor szabályozza az adatokhoz való hozzáférést. Ha például a Munkaterület-táblázat tartalmaz egy oszlopot az alkalmazotti rátaadatokkal kapcsolatban, akkor az oszlopban lévő összes oszlopot megjelenítő nézet segítségével korlátozhatja az elérést, kivéve az ajánlat oszlopát. Hasonlóképpen, az ilyen korlátozott számú adatmintának engedélyezése egy táblázatból az adatbázis minden felhasználójához az adott nézet használatával biztosítható, míg csak néhány felhasználó (akik magasabb jogokkal rendelkeznek) jogosult hozzáférni a táblázatban szereplő összes adathoz.
A következő három példa bemutatja, hogyan kell használni az adatokhoz való hozzáférés korlátozását. A következő példában a projekt táblázathoz való hozzáférés korlátozását két oszlop adja hozzá:
Amint azt az alábbi példa mutatja, a kilátás view_without lehetővé teszi a felhasználóknak, hogy két csoportra osztották: aki tud látni a költségvetés az összes projekt, és azok, akiknek a hozzáférést egy táblázatoszlophoz olcsó projektek nem állnak rendelkezésre.
Ebben a példában módosul a Munkatábla sémája, hozzá egy új oszlop felhasználónév. Most, amikor egy sor be van helyezve a táblázatba, a beillesztést végrehajtó felhasználó bejelentkezési neve a felhasználói név oszlopába kerül. Megfelelő nézetek létrehozásával a felhasználók ezeket a nézeteket használhatják arra, hogy csak a beillesztett sorokat válasszák ki a táblából.
A példában a view_analyst nézet a munkavállalói táblázat vízszintes és függőleges részhalmazát jelenti. Más szavakkal korlátozza a táblázat egyes sorainak és oszlopainak elérését.