Engedélyek: ENGEDÉLYEZÉS, MEGTAGADÁS, VISSZAVONÁS
A következőkre vonatkozik:Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL-végpont a Microsoft FabricWarehouse-ban a Microsoft Fabricben
A GRANT és DENY utasításokkal engedélyt adhat vagy tagadhat meg (például FRISSÍTÉS) egy biztonságos (például adatbázis, tábla, nézet stb.) rendszerbiztonsági tagnak (bejelentkezés, adatbázis-felhasználó vagy adatbázis-szerepkör) való megadásához vagy megtagadásához. A VISSZAVONÁS paranccsel eltávolíthatja az engedély megadását vagy megtagadását.
A rendszer kiszolgálószintű engedélyeket alkalmaz a bejelentkezésekre. Az adatbázisszintű engedélyek adatbázis-felhasználókra és adatbázis-szerepkörökre lesznek alkalmazva.
A megadott és megtagadott engedélyek megtekintéséhez kérdezze le a sys.server_permissions és sys.database_permissions nézeteket. A rendszerbiztonsági tag számára explicit módon nem adott vagy megtagadott engedélyek öröklődhetnek, ha engedélyekkel rendelkező szerepkörben tagsággal rendelkeznek. A rögzített adatbázis-szerepkörök engedélyei nem módosíthatók, és nem jelennek meg a sys.server_permissions és sys.database_permissions nézetekben.
A GRANT explicit módon egy vagy több engedélyt ad meg.
A DENY explicit módon megtagadja a rendszerbiztonsági tagot egy vagy több engedélytől.
A REVOKE eltávolítja a meglévő GRANT vagy DENY engedélyeket.
Transact-SQL szintaxis konvenciók
Szintaxis
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumentumok
<engedély>[ ,... n ]
Egy vagy több engedély megadása, megtagadása vagy visszavonása.
ON [ <class_type> :: ] securable Az ON záradék azt a biztonságos paramétert írja le, amelyre engedélyeket kell megadni, megtagadni vagy visszavonni.
<> class_type A biztonságos osztály típusa. Ez lehet BEJELENTKEZÉS, ADATBÁZIS, OBJEKTUM, SÉMA, SZEREPKÖR VAGY FELHASZNÁLÓ. A KISZOLGÁLÓclass_type is megadhat engedélyeket, de a KISZOLGÁLÓ nincs megadva ezekhez az engedélyekhez. A DATABASE nincs megadva, ha az engedély tartalmazza az ADATBÁZIS szót (például ALTER ANY DATABASE). Ha nincs megadva class_type, és az engedélytípus nem korlátozódik a kiszolgáló- vagy adatbázisosztályra, a rendszer objektumnak tekinti a osztályt.
Securable
Annak a bejelentkezésnek, adatbázisnak, táblának, nézetnek, sémának, eljárásnak, szerepkörnek vagy felhasználónak a neve, amelyen engedélyeket kell megadni, megtagadni vagy visszavonni. Az objektum neve megadható a Transact-SQL szintaxiskonvenciáiban leírt háromrészes elnevezési szabályokkal.
TO principal [ ,... n ]
Egy vagy több rendszerbiztonsági tag kap, megtagad vagy visszavont engedélyeket. A rendszerbiztonsági tag egy bejelentkezési, adatbázis-felhasználó vagy adatbázis-szerepkör neve.
FROM principal [ ,... n ]
Egy vagy több résztvevő, akitől visszavonhatja az engedélyeket. A rendszerbiztonsági tag egy bejelentkezési, adatbázis-felhasználó vagy adatbázis-szerepkör neve. A FROM csak REVOKE utasítással használható. A TO a GRANT, DENY vagy REVOKE utasítással használható.
A MEGADÁS LEHETŐSÉGGEL
Azt jelzi, hogy a kedvezményezettnek lehetősége lesz a megadott engedélyt más tagoknak is megadni.
CASCADE
Azt jelzi, hogy a rendszer megtagadja vagy visszavonja az engedélyt a megadott rendszerbiztonsági tagnak és az összes olyan résztvevőnek, amelyhez a rendszerbiztonsági tag engedélyt adott. Akkor szükséges, ha a rendszerbiztonsági tag rendelkezik a GRANT OPTION engedéllyel.
ENGEDÉLYEZÉSI LEHETŐSÉG A KÖVETKEZŐHÖZ:
Azt jelzi, hogy a megadott engedély megadásának lehetősége vissza lesz vonva. Erre a CASCADE argumentum használatakor van szükség.
Fontos
Ha a rendszerbiztonsági tag rendelkezik a megadott engedéllyel a GRANT lehetőség nélkül, az engedélyt maga a rendszer visszavonja.
Engedélyek
Az engedély megadásához az engedélyezőnek magával az engedéllyel kell rendelkeznie a WITH GRANT LEHETŐSÉGgel, vagy olyan magasabb szintű engedéllyel kell rendelkeznie, amely magában foglalja az engedély megadását. Az objektumtulajdonosok engedélyeket adhatnak a saját objektumaikhoz. Azok a rendszerbiztonsági tagok, amelyek control engedéllyel rendelkeznek egy biztonságos eszközön, engedélyt adhatnak a biztonságossá tételhez. A db_owner és db_securityadmin rögzített adatbázis-szerepkörök tagjai bármilyen engedélyt megadhatnak az adatbázisban.
Általános megjegyzések
A rendszerbiztonsági tag engedélyeinek megtagadása vagy visszavonása nem érinti azokat a kéréseket, amelyek már át lettek adva az engedélyezésen, és jelenleg futnak. A hozzáférés azonnali korlátozásához le kell mondania az aktív kéréseket, vagy le kell tiltania az aktuális munkameneteket.
Megjegyzés
A legtöbb rögzített kiszolgálói szerepkör ebben a kiadásban nem érhető el. Használjon inkább felhasználó által definiált adatbázis-szerepköröket. Bejelentkezések nem adhatók hozzá a sysadmin rögzített kiszolgálói szerepkörhöz. A CONTROL SERVER engedély megadása megközelíti a sysadmin rögzített kiszolgálói szerepkör tagságát.
Egyes utasításokhoz több engedély szükséges. Egy tábla létrehozásához például szükség van a CREATE TABLE engedélyre az adatbázisban, és az ALTER SCHEMA engedélyre a táblát tartalmazó táblához.
Az Analytics Platform System (PDW) néha tárolt eljárásokat hajt végre a felhasználói műveletek számítási csomópontokra való elosztásához. Ezért a teljes adatbázis végrehajtási engedélye nem tagadható meg. (Például DENY EXECUTE ON DATABASE::<name> TO <user>;
sikertelen lesz.) Megkerülő megoldásként tiltsa le a felhasználói sémákra vagy adott objektumokra (eljárásokra) vonatkozó végrehajtási engedélyt.
A Microsoft Fabricben a CREATE USER jelenleg nem hajtható végre explicit módon. A GRANT vagy a DENY végrehajtásakor a rendszer automatikusan létrehozza a felhasználót.
A Microsoft Fabricben a kiszolgálószintű engedélyek nem kezelhetők.
Implicit és explicit engedélyek
Az explicit engedély egy GRANT vagy DENY utasítás által a rendszerbiztonsági tagnak adott GRANT vagy DENY engedély.
Az implicit engedély olyan GRANT vagy DENY engedély, amelyet egy rendszerbiztonsági tag (bejelentkezési, felhasználói vagy adatbázis-szerepkör) örökölt egy másik adatbázis-szerepkörtől.
Az implicit engedélyek egy burkoló vagy szülő engedélytől is öröklődhetnek. Például a tábla UPDATE engedélye örökölhető úgy, hogy a táblát tartalmazó sémára frissítési engedéllyel, vagy a táblára vonatkozó CONTROL engedéllyel rendelkezik.
Tulajdonosi láncolás
Ha több adatbázis-objektum egymás után éri el egymást, a sorozatot láncnak nevezzük. Bár ezek a láncok egymástól függetlenül nem léteznek, amikor SQL Server bejárják a láncban lévő hivatkozásokat, SQL Server másképp értékeli ki az összetevőkre vonatkozó engedélyeket, mint ha külön-külön férne hozzá az objektumokhoz. A tulajdonjog-láncolás fontos hatással van a biztonság kezelésére. További információ a tulajdonjogi láncokról: Tulajdonjogi láncok és oktatóanyag: Tulajdonjogi láncok és környezetváltás.
Engedélylista
Kiszolgálószintű engedélyek
A kiszolgálószintű engedélyek megadhatók, megtagadhatók és visszavonhatók a bejelentkezésekből.
Kiszolgálókra vonatkozó engedélyek
VEZÉRLŐKISZOLGÁLÓ
TÖMEGES MŰVELETEK FELÜGYELETE
BÁRMELY KAPCSOLAT MÓDOSÍTÁSA
BÁRMELY ADATBÁZIS MÓDOSÍTÁSA
BÁRMELY ADATBÁZIS LÉTREHOZÁSA
KÜLSŐ ADATFORRÁS MÓDOSÍTÁSA
KÜLSŐ FÁJLFORMÁTUM MÓDOSÍTÁSA
BÁRMELY BEJELENTKEZÉS MÓDOSÍTÁSA
A KISZOLGÁLÓ ÁLLAPOTÁNAK MÓDOSÍTÁSA
SQL CSATLAKOZTATÁSA
BÁRMELY DEFINÍCIÓ MEGTEKINTÉSE
BÁRMELY ADATBÁZIS MEGTEKINTÉSE
KISZOLGÁLÓ ÁLLAPOTÁNAK MEGTEKINTÉSE
Bejelentkezésekre vonatkozó engedélyek
BEJELENTKEZÉS VEZÉRLÉSE
MÓDOSÍTÁS BEJELENTKEZÉSKOR
BEJELENTKEZÉS MEGSZEMÉLYESÍTÉSE
DEFINÍCIÓ MEGTEKINTÉSE
Adatbázisszintű engedélyek
Az adatbázisszintű engedélyeket az adatbázis-felhasználóktól és a felhasználó által definiált adatbázis-szerepköröktől lehet megadni, megtagadni és visszavonni.
Az összes adatbázisosztályra vonatkozó engedélyek
ELLENŐRZÉS
ALTER
DEFINÍCIÓ MEGTEKINTÉSE
Az összes adatbázisosztályra vonatkozó engedélyek a felhasználók kivételével
- TULAJDONJOG ÁTVÉTELE
Csak az adatbázisokra vonatkozó engedélyek
BÁRMELY ADATBÁZIS MÓDOSÍTÁSA
ALTER ON DATABASE
BÁRMELY ADATTÉR MÓDOSÍTÁSA
BÁRMELY SZEREPKÖR MÓDOSÍTÁSA
SÉMA MÓDOSÍTÁSA
BÁRMELY FELHASZNÁLÓ MÓDOSÍTÁSA
BIZTONSÁGI MENTÉSI ADATBÁZIS
CSATLAKOZÁS AZ ADATBÁZISHOZ
LÉTREHOZÁSI ELJÁRÁS
SZEREPKÖR LÉTREHOZÁSA
SÉMA LÉTREHOZÁSA
CREATE TABLE
CREATE VIEW
SHOWPLAN
Csak a felhasználókra vonatkozó engedélyek
- MEGSZEMÉLYESÍTENI
Adatbázisokra, sémákra és objektumokra vonatkozó engedélyek
ALTER
DELETE
VÉGRE
INSERT
SELECT
UPDATE
HIVATKOZÁSOK
Az egyes engedélytípusok definícióját az Engedélyek (adatbázismotor) című témakörben tekintheti meg.
Engedélyek diagramja
Minden engedély grafikusan jelenik meg ezen a poszteren. Ez a legegyszerűbb módja az engedélyek beágyazott hierarchiájának megtekintésének. Például az ALTER ON LOGIN engedély önmagában is megadható, de akkor is, ha a bejelentkezéshez control engedélyt kap az adott bejelentkezéshez, vagy ha a bejelentkezés az ALTER ANY LOGIN engedélyt kapja.
Alapértelmezett engedélyek
Az alábbi lista az alapértelmezett engedélyeket ismerteti:
Ha a CREATE LOGIN utasítással hoz létre bejelentkezést, az új bejelentkezés megkapja a CONNECT SQL-engedélyt .
Minden bejelentkezés a nyilvános kiszolgálói szerepkör tagja, és nem távolítható el a nyilvánosból.
Ha egy adatbázis-felhasználó a CREATE USER engedéllyel jön létre, az adatbázis-felhasználó a CONNECT engedélyt kapja az adatbázisban.
Minden rendszerbiztonsági tag, beleértve a nyilvános szerepkört is, alapértelmezés szerint nem rendelkezik explicit vagy implicit engedélyekkel.
Amikor egy bejelentkezés vagy felhasználó egy adatbázis vagy objektum tulajdonosa lesz, a bejelentkezés vagy a felhasználó mindig rendelkezik az adatbázisra vagy objektumra vonatkozó összes engedéllyel. A tulajdonosi engedélyek nem módosíthatók, és nem láthatók explicit engedélyként. A GRANT, a DENY és a REVOKE utasítás nincs hatással a tulajdonosokra.
Az sa-bejelentkezés minden engedéllyel rendelkezik a berendezésen. A tulajdonosi engedélyekhez hasonlóan az sa-engedélyek nem módosíthatók, és nem láthatók explicit engedélyként. A GRANT, a DENY és a REVOKE utasítás nincs hatással az sa loginra. Az sa bejelentkezési név nem nevezhető át.
A USE utasításhoz nincs szükség engedélyekre. Minden rendszerbiztonsági tag futtathatja a USE utasítást bármely adatbázisban.
Példák: Azure Synapse Analytics and Analytics Platform System (PDW)
A. Kiszolgálószintű engedély megadása bejelentkezéshez
Az alábbi két utasítás kiszolgálószintű engedélyt ad a bejelentkezéshez.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Kiszolgálószintű engedély megadása bejelentkezéshez
Az alábbi példa kiszolgálószintű engedélyt ad egy kiszolgálónévhez való bejelentkezéshez (egy másik bejelentkezéshez).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Adatbázisszintű engedély megadása egy felhasználónak
Az alábbi példa adatbázisszintű engedélyt ad egy felhasználónak egy adatbázis-résztvevőnek (egy másik felhasználónak).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Sémaengedély megadása, elutasítása és visszavonása
A következő GRANT utasítás lehetővé teszi Yuen számára, hogy adatokat válasszon ki a dbo sémában lévő bármely táblából vagy nézetből.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
Az alábbi DENY utasítás megakadályozza, hogy Yuen adatokat válasszon ki a dbo sémában lévő bármely táblából vagy nézetből. Yuen akkor sem tudja olvasni az adatokat, ha más módon, például szerepkör-tagsággal rendelkezik.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
A következő REVOKE utasítás eltávolítja a DENY engedélyt. Yuen explicit engedélyei semlegesek. Yuen más implicit engedély, például szerepkör-tagság révén bármely táblából kiválaszthat adatokat.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. A választható OBJECT:: záradék bemutatása
Mivel az OBJECT egy engedélyutasítás alapértelmezett osztálya, a következő két utasítás megegyezik. Az OBJECT:: záradék megadása nem kötelező.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];