SDITemplate jogosultsági rendszere
Ez a modul az SDITemplate adatbázisos keretrendszer dokumentációjának a része.
Bevezetés
A jogosultsági rendszer három fő részből áll:
- Felhasználók azonosítása (authentikáció)
- Szerepkörök és csoportok, ezek kapcsolata a felhasználókkal
- Jogosultság ellenőrzés (authorizáció), ezen belül:
- Általános jogosultság kezelés: jogosultságok kiosztása és ellenőrzése művelet típusokra általában
- Egyedi jogosultság kezelés: jogosultságok kiosztása és ellenőrzése üzleti objektumokra
- Speciális jogosultság kezelés: különleges jogosultságok kiosztása folyamat állapot átmenetekre és egyebekre.
Felhasználók azonosítása (authentikáció)
A felhasználók az azonosítás eszközei. A felhasználó lehet aktív/inaktív. Csak az aktív felhasználó tud bejelentkezni. Az aktivitást a felhasználó érvényességi idejének megadásával lehet beállítani. A megadott érvényességi időn túl a felhasználó nem fog tudni bejelentkezni. A felhasználók azonosítása titkos jelszóval történik. A felhasználó publikus azonosítója az egyedi bejelentkezési név. A felhasználónál meg lehet adni hogy ki a felettese (ő szintén egy felhasználó). Van két speciális beépített felhasználó. Az egyik „Rendszergazda” néven a másik „admin” néven. Nekik szinte mindenhez joguk van még akkor is, ha külön nem kaptak jogot. Ezeket a felhasználókat nem lehet törölni. A „Rendszergazda” felhasználó a szoftver használati jog birtokosának képviselője, egy „szuper felhasználó”. A használati jog birtokosa ezen a felhasználón keresztül tud új felhasználókat rögzíteni és kezdetben jogokat kiosztani. Az „admin” felhasználó elsődleges célja, hogy a fejlesztő (Szoftver Messiás Bt) gyorsan segítséget tudjon nyújtani olyan esetekben amikor egy helytelenül fölvett beállítás akadályozza az ügymenetet.
A felhasználó ablakon van két különleges fül, ahol adott felhasználó szerepkörökkel és csoportokkal való összerendelését lehet megnézni és módosítani:
A speciális "Rendszer" csoport tagjai rendszergazdák (joguk van szinte mindenre akkor is ha nem lett explicit módon nekik jog adva). A szoftver használati jog tulajdonosa saját hatáskörén belül ezen a csoporton keresztül létrehozhat több rendszergazda jogokkal rendelkező felhasználót. Kisebb cégeknél javasolt egyetlen rendszergazda felhasználó használata, mert így az adatmódosításból adódó károkozás felelőssége sokkal könnyebben megállapítható.
A felhasználók, szerepkörök és csoportok közötti kapcsolatokról bővebb információt alább talál.
Lásd még: SDITemplate Felhasználó ablak
Szerepkörök - jogosultságok csoportosítása
A szerepkörök a jogosultságok csoportosítására valók. A szerepköröknek egyedi neve van. Amikor az a kérdés hogy egy műveletet kinek van joga végrehajtani, akkor érdemes felhasználók helyett szerepkörökben gondolkodni. Ha például az Ön cégénél "Krisztián" egy raktáros, és az a kérdés hogy kinek van joga árut bevételezni, akkor "Krisztián" helyett érdemes egy "Raktáros" szerepkört használni, amihez "Krisztián" hozzá van rendelve. A szerepkör ablakon a szerepkör kiválasztása után egy külön fülön jelennek meg a hozzárendelt felhasználók. Itt lehet módosítani az adott szerepkörhöz tartozó felhasználók listáját:
Ennek a megközelítésnek akkor mutatkozik meg az előnye, amikor Krisztián beteg lesz, szabadságra megy, felmond, vagy megváltozik a munkaköre. Valaki ("Béla") átveszi a helyét. Ha a jogok "Krisztián"-hoz lettek kiosztva, akkor az új dolgozó munkába állásához újra végig kell menni az összes ablakon és műveleten, és minden helyen ahol "Krisztián" jogosult volt, "Bélának" is meg kell adni ugyan azt a jogot. Az esetek többségében itt nem egyetlen jogosultságról van szó, hanem egy egész halom jogosultságról. Ebben a példában pl. a raktáros Krisztiánnak lehet hogy joga volt fölvenni/módosítani partnert, de törölni nem. Lehet hogy joga volt bevételezni árut, de eladni nem. Lehetett joga különféle állapot átmeneteket végrehajtani készlet változtató tranzakciókon stb. Ez egy hosszadalmas folyamat, könnyű eltéveszteni és rabolja az időt. Ha a jogok a "Raktáros" szerepkörhöz voltak kiosztva, akkor a jogosultságok újraosztását el lehet intézni azzal, hogy "Krisztiánt" kivesszük a "Raktáros" szerepkörből, "Bélát" pedig hozzáadjuk. Ezen a módon "Béla" nem közvetlenül, hanem a "Raktáros" szerepkörön keresztül kapja meg ugyan azokat a jogokat.
Egy felhasználónak több szerepköre lehet, és egy szerepkörhöz több felhasználó is tartozhat. A felhasználók és szerepkörök közötti kapcsolat a felhasználó oldaláról is megtekinthető és módosítható - lásd föntebb.
Lásd még: SDITemplate Szerepkör ablak
Jogosultság csoportok - felhasználók csoportosítása
A csoportok a felhasználókat csoportosítják. Egy csoporthoz több felhasználó tartozhat, és egy felhasználó több csoportnak is lehet tagja. Van egy beépített csoport „Mindenki” néven. Ennek minden felhasználó tagja, és a felhasználókat nem lehet ebből a csoportból eltávolítani. A "Mindenki" csoporton keresztül lehet megosztani dolgokat „Mindenkivel” azaz a rendszer minden felhasználójával. Az egy csoportba tartozó emberek közös folyamatokkal / üzleti objektumokkal foglalkoznak. A csoportok segítségével lehet megosztani ezeket a folyamatokat a csoporton belül. A csoport csak a folyamat elérésére jogosít föl. A folyamatok módosítására, adatok törlésére és módosítására a szerepkörök használhatók. A felhasználóknál megadható egy alapértelmezett csoport, az úgynevezett bejelentkezési csoport. Ez az a csoport amin belül a felhasználó elsődlegesen tevékenykedik. A jogosultság csoport ablakon van egy fül amivel meg lehet adni az adott jogosultság csoportba tartozó felhasználók listáját:
Megszorítások:
- A speciális "admin" csoportnak kizárólag a speciális "admin" felhasználó lehet tagja.
- A "Rendszer" csoportnak legalább egy tagja van. A Rendszer csoport tagjai rendszergazdák. (Lásd följebb a felhasználók leírását.)
- Rendszergazda felhasználó nem tudja saját magát kivenni a "Rendszer" csoportból.
- A "Mindenki" csoportnak mindig minden felhasználó tagja. Új felhasználó felvitelkor automatikusan bekerül a "Mindenki" csoportba, és csak a felhasználó teljes törlésével távolítható el.
Lásd még: SDITemplate Jogosultság csoport ablak
Jogosultság ellenőrzések típusa
A jogosultságok ellenőrzése több szinten történik.
- A rendszert csak az használhatja, akinek birtokában van egy aktív felhasználó neve és titkos jelszava. Ez az ellenőrzés a felhasználó azonosítása más néven authentikáció.
- A legtöbb művelet típusra (pl. módosítás, törlés, új fölvétel stb.) jogosultságokat lehet meghatározni attól függetlenül, hogy mi a jogosultság tárgya (melyik konkrét adaton akarják elévezni). Például megadhatjuk hogy úgy általában ki tud partnert módosítani, függetlenül attól hogy melyik konkrét partnerről van szó. Ez az ellenőrzés az általános jogosultság kezelés.
- Az üzleti objektumokra egyedileg lehet szabályozni a hozzáférést. Tehát pl. nem az összes partnerre általában, hanem egy konkrét partnerre. A hozzáférés korlátozása felhasználókon és szerepkörökön keresztül történik, és nem műveletekre (mint pl. módosítás vagy törlés) hanem konkrét adat tételekre (mint pl. "Spar Magyarország Kft" nevű partner) vonatkozik. Ez az egyedi jogosultság kezelés.
- Egyéb speciális jogosultság kezelés keretében lehet jogokat osztani folyamatok irányítására, illetve - konkrét szoftvertől függően - más adattételekkel kapcsolatos különleges műveletekre.
Jogosultság művelet típusokra általában - általános jogosultság kezelés
Általános jogosultságok kiosztása
A felhasználói felületeken a műveletek nagy része gomb vagy hasonló vizuális elem formájában jelenik meg. Gombot kell nyomni új adat fölvételéhez, módosításhoz, törléshez adat exportáláshoz stb. Az adott vizuális elem meghatározza a művelet típusát (pl. törlés) és azt az egyedtípust amire a művelet vonatkozik. Például ha a törlés gomb a partner listát tartalmazó ablakon volt, akkor a partner egyedtípusra vonatkozó törlés műveletről van szó. Az ilyen műveletet kezdeményező gomboknál vizuálisan (jobb egér gombot nyomva) megjeleníthető egy felbukkanó ablak, ami az adott egyedtípus és művelet típus párhoz mutatja a kiosztott jogosultságokat:
Ennek a megközelítésnek megvan az az előnye, hogy a jogosultság megadásának helye pontosan megegyezik azzal a hellyel ahol a jogosultságra szükség van. Kiküszöböli más rendszerek azon hibáját, hogy egy adott jogosultság megadásához másik ablakokat kell megnyitni, és név alapján megkeresni a szükséges jogot. (A kiosztandó művelethez szükséges jogosultság nevének meghatározása sokszor nem triviális.) Megvan azonban az a hátránya, hogy ha egy adott művelet nem elérhető, akkor arra jogot sem lehet osztani. Ha például még nincs fölvéve partner, akkor a "Módosít" gomb nem látszódik, és amíg ez nem látszódik addig nem lehet jogosultságot osztani a módosítás műveletre.
A jogosultságot szerepkörhöz vagy felhasználóhoz lehet megadni, ezért ez a felbukkanó ablak egy szerepkör listát tartalmaz amiben pipálgatni lehet. A jogosultságot azok a felhasználók nyerik el, akik rendelkeznek engedélyezett szerepkörrel az adott műveletre és egyedtípusra:
Ahogy a fenti példában látható, a jogosultságokat (beállítástól függően) egyedi felhasználókra is ki lehet osztani, de a preferált metódus a szerepkörökhöz való jogosultság kiosztás.
Az egyedtípushoz való megtekintés/listázás hozzáférést egy erre a célra kialakított gombbal lehet szabályozni, amivel az egész listázó/megjelenítő ablak megnyitását lehet engedélyezni vagy tiltani. Az általános adatszerkesztő ablakokon ez a Beállítások/Jogosultság panelen a található "Felhasználók kijelölése" gombbal lehetséges:
Ha nincs megadva az engedély akkor az ablak nem nyitható meg, így a hozzáférés az összes egyedre (pl. összes szerződésre vagy összes partnerre stb.) tiltva van. A műveletekre általában véve a Rendszergazda és az admin felhasználó (illetve bármely Rendszer csoportban levő felhasználó) tud általános jogot osztani. Ugyan ezek a felhasználók azok, akik minden műveletre általános jogosultságot nyernek akkor is, ha explicit módon nincs nekik kiosztva általános jog.
Általános jogosultságok ellenőrzése
Mielőtt egy művelet végrehajtásra kerül, lefut az általános jogosultság ellenőrzés. Itt dől el, hogy az adott műveletet a felhasználónak van-e joga elvégezni. Az általános jogosultságok ellenőrzését alapvetően kétféle stratégia alapján lehet elvégezni:
- Alapból senkinek nem adunk jogot semmire. Ha valaki jogot szeretne nyerni, akkor azt explicit módon ki kell osztani. Ezt szokás "white list" stratégiának is nevezni.
- Alapból mindenkinek joga van mindenre. Ha egy művelethez való hozzáférést korlátozni akarjuk, akkor arra az egy elemre kell jogokat kiosztani. Ezt szokás "black list" stratégiának is nevezni.
A fenti két stratégia közül választani lehet egy rendszer beállítás segítségével. Ezt a rendszer beállítást közvetlenül a rendszer telepítése után, a legelső felhasználók fölvétele előtt érdemes megadni; és a továbbiakban nem módosítani. A beállítás neve: sdi.security.default_to_allow. Ha ez a rendszer paraméter igazra (1-be) van állítva, akkor a nem menedzselt elemekhez alapértelmezésben mindenki jogot nyer. Ha ez a rendszer paraméter hamisra (0-ba) van állítva, akkor a nem menedzselt elemekhez alapértelmezésben senki nem nyer jogot (kivéve az admin felhasználót és a rendszergazdákat). A beállítás érvényesítéséhez az összes futó kliensprogramot be kell zárni. A beállítás hatására a művelethez tartozó jogosultság kiosztó ablak kétféle változatban jelenhet meg.
Az alábbi változat az első stratégia ("white list") esetén jelenik meg:
A dialógus ablak tetején található pipa mondja meg, hogy az általános jogosultságok menedzselve vannak-e az elemre. Ha ez a pipa nincs pipálva, akkor az elemet csak "Rendszergazda" vagy "admin" érheti el. Ha a menedzselés be van kapcsolva, akkor az elemet (a rendszergazdákon és "admin" felhasználón kívül) csak azok a felhasználók érik el, akik explicit módon jogot kaptak a pipa lista segítségével.
Az alábbi változat a második stratégia ("black list") esetén jelenik meg:
Ha a menedzselés be van kapcsolva, akkor az elemet (a rendszergazdákon és "admin" felhasználón kívül) csak azok a felhasználók érik el, akik explicit módon jogot kaptak a pipa lista segítségével. Pont ugyan úgy, mint "white list" esetén. Ha azonban a menedzselés nincs bekapcsolva, akkor az elemet bárki bármikor elérheti.
Egy újonnan telepített rendszer esetén lehet hogy előre föl lettek véve szerepkörök, és bizonyos elemek menedzselése előre be lett állítva. A Szoftver Messiás Bt segít a helyes stratégia kialakításában és beállításában, de a jogosultságok beállítása a végfelhasználó kezében van, ezért ő vállalja érte a felelősséget. A jogosultság kezelési stratégia a rendszer használata közben is átállítható, de ennek következményeiért, az ebből eredő károkért a felelősség a felhasználót terheli.
Nagyobb, sok felhasználót foglalkoztató cégeknél általában a "white list" stratégiát érdemes használni. Kis cégeknél a "black list" stratégiát. A kettő közötti átmenet, a "black list" startégia használata olyan módon, hogy az összes adatszerkesztő ablak megnyitását menedzseljük a rendszer éles használatának megkezdése előtt. Az egyes műveletekkel nem kell foglalkozni akkor, ha a felhasználó nem tudja megnyitni az ablakot amin a művelethez tartozó vizuális elem (gomb) található.