C# - A sysprotects rendszertábla

MS SQL Server rendszertáblái 11. rész

forráskód letöltése
Cikkünkben a sysprotects rendszertábla jellemzőivel ismerkedhetünk meg részletesen. Bemutatásra kerül, milyen jogosultsággal összefüggő műveletek elvégzése után jelennek meg bejegyzések a rendszertábla oszlopaiban, az adott oszlopok milyen jelegű információkat tárolnak, és a bekerült adatok hogyan kapcsolódnak más rendszertáblákhoz.
A példához szükséges a SampleDatabase11 adatbázis, melyet a mellékelt SampleDatabase11.sql parancsállomány lefuttatásával hozhatunk létre. A SampleDatabase11.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A rendszertábla bejegyzései nagyon hasonlítanak a sorozat ezt megelőző számában ismertetett syspermissions rendszertábla bejegyzéseihez, mintegy kiegészítve azt. A sysprotects rendszertábla adatai is bizonyos objektumokhoz adott felhasználónak adott, illetőleg adott felhasználótól elvett jogokkal kapcsolatos információkat tartalmaznak, csak más csoportosításban. Az MS SQL Server igen nagy hangsúlyt fektet a többszintű jogosultsági rendszer kezelésére, valószínűleg az adatok több-szempontú tárolása is azt a célt szolgálja, hogy az adott jogok több formában tárolódjanak, és nagy felhasználószám esetén is könnyű legyen egy adott információt előkeresni bizonyos időn belül. Ezen túlmenően a módszer eredményeképpen az adatbázis sérülékenysége is kisebb.
Múlt heti cikkünkben bemutattuk, hogyan adhatunk szerverszintű, valamint adatbázisszintű felhasználókat rendszerünkhöz, így a példaprogramunk indítása utáni inicializációs lépésekben felhasznált rendszerfüggvények ismertetésétől eltekintünk.
Vizsgáljuk meg a rendszertábla oszlopait:
Oszlopnév Típus Leírás
id int Az objektum azonosítója, melyhez valamilyen felhasználói jog kapcsolódik.
uid smallint A felhasználó, vagy felhasználói csoport sysobjects rendszertáblabeli azonosítója, melyhez a jog kapcsolható.
action tinyint A felhasználói jog típusára utaló kód. Értékei: 26 = REFERENCES, 178 = CREATE FUNCTION, 193 = SELECT, 195 = INSERT, 196 = DELETE, 197 = UPDATE, 198 = CREATE TABLE, 203 = CREATE DATABASE, 207 = CREATE VIEW, 222 = CREATE PROCEDURE, 224 = EXECUTE, 228 = BACKUP DATABASE, 233 = CREATE DEFAULT, 235 = BACKUP LOG, 236 = CREATE RULE.
protecttype tinyint Az adott felhasználó joghoz kapcsolódó viszonya. Értékei: 204 = GRANT_W_GRANT, 205 = GRANT, 206 = REVOKE.
columns varbinary(4000) Annak az oszlopnak az azonosítója egy bitmintában megfogalmazva, melyhez a SELECT vagy UPDATE jog kapcsolódik. Értékei: 0: minden oszlopra vonatkozik a jogosultság, NULL: nincs információ.
grantor smallint A felhasználói jogot átruházó felhasználó azonosítója (ezzel a joggal rendelkező felhasználó).
A program kapcsolódó funkciói attól a pillanattól kezdve elérhetőek, hogy a rendszerben szerverszintű, majd adatbázisszintű felhasználót hoztunk létre. A program indulásakor az Indítás gombra kattintva érhető el, hogy a kezdeti beállítások megtörténjenek, a VISITOR nevű felhasználó létrejöjjön, és SAMPLEUSER néven – a PUBLIC csoport részeként – hozzáadódjon példa adatbázisunkhoz.
A felhasználó létrehozása a mellékelt script lefuttatása után az adatbázisba került AddLogin és AddUser tárolt eljárások végrehajtásával történik, melyek az sp_addlogin és sp_adduser rendszerfüggvényeket hívják meg, a múlt heti cikkben ismertetett módon.
A felhasználóhoz a Form-on elhelyezett ComboBox-ban felsorolt jogok közül adhatjuk a kiválasztottat, tetszőleges módon. A ’Választott jog hozzáadása’ gombbal GRANT, míg a ’Választott jog törlése’ gombbal REVOKE utasítást hajtunk végre a kiválasztott jog felhasználásával, melyek a Table1 adatbázistáblánkat érintik.
Az egyes jogok hozzáadása után a sysprotects rendszertáblába került bejegyzéseket ellenőrizhetjük a DataGrid kontrolban.

MS SQL Server rendszertáblái cikksorozat