HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A syspermissions rendszertábla


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

Példaprogram letöltése

10097 bájt

Cikkünkben a felhasználói adatbázisokban is megjelenő syspermissions rendszertáblával foglalkozunk, melynek kapcsán ejtünk néhány szót a MS SQL Server jogosultsági rendszeréről, valamint bemutatunk néhány olyan rendszerfüggvényt, melyek kapcsolatba hozhatók a rendszertáblával. Ezek felhasználásával modellezzük a syspermissions és más rendszertáblák kapcsolatát.

A példához szükséges a SampleDatabase10 adatbázis, melyet a mellékelt SampleDatabase10.sql lefuttatásával hozhatunk létre. A SampleDatabase10.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 syspermissions rendszertábla arra vonatkozóan tartalmaz adatokat, hogy az adatbázis objektumaihoz az egyes felhasználóknak milyen természetű jogosultsága van. Minden objektum minden jogosultágához egy bejegyzést tartalmaz.
A bejegyzések másik típusa a tiltások, vagyis hogy az egyes objektumokhoz mely felhasználók milyen joggal nem rendelkeznek. Erre azért van szükség, mert az egyes objektumok létrehozásakor alapértelmezett módon járnak bizonyos jogok. Az utóbbi típusú bejegyzések a szűkítő értelmű jogosultságokat tartalmazzák.
Ahhoz, hogy eligazodjunk a syspermissions rendszertábla adatain, vagyis hogy milyen felhasználói objektumokat jelentenek az egyes oszlopokban található értékek, ejtsünk pár szót a MS SQL Server felhasználóiról.
Elindítva a MS SQL Server Enterprise Manager segédalkalmazását, és megkeresve az aktív szerverünket láthatjuk, hogy a Security mappa Logins alkönyvtárában van néhány felhasználó. Ezek az objektumok jelentik a szerverhez valamilyen szintű hozzáférési jogosultsággal rendelkező felhasználói „profilokat”.
Ezeket az objektumokat a szerver ’master’ nevű rendszeradatbázisának sysxlogins rendszertábláján keresztül érhetjük el. Az Enterprise Manager alkalmazással létrehozott új profilokkal kapcsolatos információk is ide kerülnek.
Ezen profilok létrehozáskor kapnak alapértelmezett jogosultságokat, melyeket az egyes adatbázisok szintjén felüldefiniálhatunk. Ezt olyan módon tesszük, hogy a vizuális eszköz, vagy a Query Analyzer alkalmazás segítségével megadjuk őket az adatbázis felhasználóiként valamilyen jogokkal.
Az egyes adatbázisok felhasználóit az Enterprise Manager-ben az adatbázis mappájának Users almappájában találjuk meg. Ezen a szinten már akár táblák oszlopainak szintjéig is finomíthatjuk a hozzáadott felhasználók jogait.
A fent említett műveletekhez természetesen rendszerfüggvényeket is használhatunk, melyeket programjainkból is elérhetünk. Ezeket használjuk a mellékelt példánkban is, saját tárolt eljárásainkba ágyazva őket. A rendszerfüggvények rendre: sp_addlogin, sp_droplogin, sp_adduser, sp_dropuser. Vizsgáljuk meg ezeket:
sp_adduser
A rendszerfüggvénnyel felhasználói profilt adhatunk a szerverhez.
Szintaxisa:
sp_addlogin [ @loginname = ] 'login' 
            [ , [ @passwd = ] 'password' ] 
            [ , [ @defdb = ] 'database' ]
Paraméterek:
Paraméter Típus Leírás
@loginname sysname A szerver-szinten létrehozandó felhasználó profil felhasználóneve.
@passwd sysname Esetlegesen megadandó jelszó.
@defdb sysname Alapértelmezett adatbázis, melyet a felhasználó elérhet.
Példa:
EXEC sp_addlogin ’Visitor’,’Visitor’,’SampleDatabase10’
sp_droplogin
A felhasználói profilok valamelyikének törlésére szolgál.
Szintaxisa:
sp_droplogin [ @loginname = ] 'login'
Paramétere értelemszerűen egy létező profil neve.
Példa:
EXEC sp_droplogin ’Visitor’
sp_adduser
Segítségével hozzáadhatunk egy profil, vagy más szóval biztonságos hozzáférést (hiszen más rendszerszinten létező felhasználóról van szó) az adott adatbázishoz. Az ily módon megadott felhasználóval kapcsolatos információ az adatbázis sysusers rendszertáblájában jelenik meg.
Szintaxisa:
sp_adduser [ @loginname = ] 'login' 
           [ , [ @name_in_db = ] 'user' ] 
           [ , [ @grpname = ] 'group' ]
Paraméterek:
Paraméter Típus Leírás
@loginname sysname A szerver-szinten létező felhasználónév.
@name_in_db sysname Az adott adatbázisban használni kívánt felhasználói név.
@grpname sysname Csoport vagy szerep neve, melyhez a hozzáadott felhasználó automatikusan tartozni fog.
Példa:
EXEC sp_adduser ’Visitor’,’sampleuser’
sp_dropuser
Az adatbázishoz adott felhasználó törlése adatbázis szinten.
Szintaxisa:
sp_dropuser [ @name_in_db = ] 'user'
Paraméterként az adatbázisban használt nevet kell használni.
Példa:
EXEC sp_dropuser ’sampleuser’
Az adott adatbázis sysusers rendszertáblájában minden bekerült felhasználó kap egy azonosítót, mellyel más táblákban azonosítható. Ezzel az azonosítóval kerül be többek közt a syspermissions táblába is. Az adott objektum, melyhez jogosultságokat kaphat szintén azonosítóval jelenik meg a táblában.
Az egyes jogosultságok hozzárendelésére használható az Enterprise Manager vizuális eszköz csakúgy, mint néhány SQL-parancs. A vizuális eszközben az adott felhasználóra kattintva megjelenik egy ablak, melyben a ’Permissions’ gombot kell választani ahhoz, hogy elérjük a beállító ablakot, mely igen részletes.
Az említett SQL-parancsok sem bonyolultabbak. Erre a célra a GRANT és REVOKE parancsok használhatók, melyek esetén is meg kell adni, hogy milyen jogot adunk mely felhasználónak, mely objektum vonatkozásában.
A GRANT szintaxisa:
GRANT [jogosultság neve]
ON    [objektum neve]
TO    [felhasználó neve]
Példánkban ezt a következőképpen használtuk:
GRANT SELECT
ON Table1
TO sampleuser
A REVOKE alig tér el ettől:
REVOKE SELECT
ON   Table1
FROM sampleuser
Vizsgáljuk meg a syspermissions rendszertábla oszlopait:
Oszlop neve Típusa Leírás
id int Az objektum azonosítója (sysobjects táblából).
grantee smallint A jogosultságot kapó felhasználó azonosítója.
grantor smallint A jogosultságot adó/elvonó felhasználó azonosítója (általában az objektum tulajdonosa).
actadd smallint Belső használatra.
actmod smallint Belső használatra.
seladd varbinary(4000) Belső használatra.
selmod varbinary(4000) Belső használatra.
updadd varbinary(4000) Belső használatra.
updmod varbinary(4000) Belső használatra.
refadd varbinary(4000) Belső használatra.
refmod varbinary(4000) Belső használatra.
A parancsállomány lefuttatása után egy Table1 tábla és három tárolt eljárás kerül az adatbázisba (AddLogin, AddUser, DropUser).
Mellékelt példánkban a Form ’Felhasználók kezelése’ fül alatt követhetjük nyomon a ’master’ adatbázis sysxlogins rendszertáblájának adatait, melybe induláskor bekerül egy bejegyzés, ugyanis létrehoztunk egy felhasználói profilt ’Visitor’ néven.
A fül alsó táblája a SampleDatabase10 adatbázis sysusers rendszertáblájának adatait tartalmazza. A gombokkal hozzáadhatjuk, valamint törölhetjük a ’Visitor’ felhasználót ’sampleuser’ névvel az adatbázisból.
A Form ’SYSPERMISSIONS rendszertábla’ füle alatt adhatunk, vagy vehetünk el egy SELECT jogosultságot a Table1 tábla vonatozásában a ’sampleuser’ felhasználótól. A felületen megjelenik a Table1 adattábla azonosítója, hogy könnyebb legyen megtalálni a bekerült bejegyzést.

Cikksorozat

#IDKategóriaCikk címeSorozat
2535C#Oracle adatbázis-elérés alapjai1. rész
2546C#SQL utasítások végrehajtása2. rész
2557C#Tárolt eljárások és függvények fejlesztése3. rész
2565C#Csomagok fejlesztése4. rész
2573C#Adatbázis triggerek fejlesztése5. rész
2581C#Kivételek kezelése PL/SQL-ben6. rész
3276C#Kurzorok deklarálása PL/SQL-ben7. rész
3297C#Tömb adattípus létrehozása és kezelése PL/SQL-ben8. rész
3326C#Adatbevitel tömb-adattípussal rendelkező oszlopokba9. rész
3357C#Adattárolás beágyazott tábla-típusú oszlopokban10. rész
3388C#Adatok beszúrása beágyazott táblákba11. rész
3418C#Index létrehozása PL/SQL-ben12. rész
3444C#Szekvenciák használata13. rész
3488C#Adatok betöltése állományokból14. rész
1765DelphiOracle adatbázis-elérés alapjai15. rész
1774DelphiSQL utasítások végrehajtása16. rész
1784DelphiTárolt eljárások és függvények fejlesztése17. rész
1794DelphiCsomagok fejlesztése18. rész
1803DelphiAdatbázis triggerek fejlesztése19. rész
1815DelphiKivételek kezelése PL/SQL-ben20. rész
3256DelphiKurzorok deklarálása PL/SQL-ben21. rész
3287DelphiTömb adattípus létrehozása és kezelése PL/SQL-ben22. rész
3318DelphiAdatbevitel tömb-adattípussal rendelkező oszlopokba23. rész
3348DelphiAdattárolás beágyazott tábla típusú oszlopokban24. rész
3377DelphiAdatok beszúrása beágyazott táblákba25. rész
3408DelphiIndex létrehozása PL/SQL-ben26. rész
3436DelphiSzekvenciák használata27. rész
3467DelphiAdatok betöltése állományokból28. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 89. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |