340 likes | 441 Views
Kovács Tibor Krisztián. Biztonság kezelése Oracle-ben. Tartalom. A felhasználói biztonságról Felhasználói fiókok létrehozása Felhasználói fiókok módosítása Felhasználói erőforrások beállítása Felhasználói fiókok törlése Információk szerzése felhasználókról és profilokról.
E N D
Kovács Tibor Krisztián Biztonság kezelése Oracle-ben
Tartalom • A felhasználói biztonságról • Felhasználói fiókok létrehozása • Felhasználói fiókok módosítása • Felhasználói erőforrások beállítása • Felhasználói fiókok törlése • Információk szerzése felhasználókról és profilokról
A felhasználói biztonságról • Az adatbázis egy példányához való csatlakozáshoz szükség van egy érvényes felhasználói névre az adatbázisban. • Felhasználói fiókok létrehozásakor a fiókokra különböző limitek állíthatók be. • Az Oracle DB több nézettáblát is biztosít a felhasználókhoz tartozó erőforrások és munkafolyamatok lekérdezésére. • Létrehozhatók profilok, amik a felhasználókra alkalmazható attribútumok egy kollekciója.
Felhasználói fiókok létrehozása • Létrehozáshoz rendelkezni kell CREATE USER rendszerjogosultsággal. (rendszerint csak a dbadmin vagy a securityadmin rendelkezik vele) • Az új felhasználó nem csatlakozhat az adatbázishoz amíg nem engedélyeztük neki a CREATE SESSION jogosultságot. • Az Oracle Enterprise Manager teljesítménymonitorozó eszköz használatához a SELECT ANY DICTIONARY jogosultság szükséges.
Felhasználói fiók létrehozása • CREATE USER pelda IDENTIFIED BY jelszo DEFAULT TABLESPACE adat_ts QUOTA 100M ON teszt_ts QUOTA 500K ON adat_ts TEMPORARY TABLESPACE temp_ts PROFILE clerk;
A felhasználó neve • A felhasználói névnek egyedinek kell lennie. • A szerepkörök és a felhasználók neveinek különböznie kell. • Minden felhasználónak van egy sémája.
Táblaterület kiosztása • Minden felhasználónak rendelkeznie kell alapbeállított táblaterülettel. • Az alapbeállítás szerint az összes felhasználó alapértelmezett táblaterülete a SYSTEM. • SYSTEM-től különböző tartósan alapértelmezett táblaterületet létrehozni a CREATE TABLESPACE utasítással tudunk.
Táblaterület kiosztása • Tartósan alapértelmezett táblaterület nem törölhető. • Felhasználó létrehozása közben is megadható alapértelmezett táblaterület, amit később az ALTER USER segítségével módosíthatunk majd. • Az alapértelmezett táblaterület kiosztása után adjunk meg hozzátartozó kvótát is.
Táblaterülethez tartozó kvóta • A felhasználó összes táblaterületéhez, kivéve az ideiglenest, kiosztható kvóta. • Az Oracle DB limitálja a felhasználó objektumának tárolására felhasználható tárterület méretét a táblaterületein belül. • Alapból egy adatbázis táblaterülethez sincs kvótája a felhasználónak. • Hogy a felhasználó létrehozhasson objektumokat, rendelkeznie kell legalább egy táblaterülethez kvótával.
Táblaterülethez tartozó kvóta • A kvóta megakadályozza a felhasználó objektumainak túl nagy méretét. • Kvóta későbbi módosításakor, ha kevesebb kvótát adunk meg mint a felhasználó objektumainak összesített mérete, akkor nem hozhat létre új objektumot a felhasználó. • Ha azt szeretnénk hogy a felhasználó ne hozhasson létre új objektumokat adott táblaterületen belül, akkor állítsuk azt a kvótáját nullára.
Az UNLIMITED TABLESPACE jog • Ezzel a jogosultsággal a felhasználónak (szerepkörnek nem adható) korlátlan tárterület használatot biztosíthatunk bármely táblaterülethez. • Felülírja a felhasználó összes explicit kvótáját. • Visszavonva a jogosultságot újra az explicit kvóták lépnek érvénybe. • Ezzel a jogosultsággal rendelkező felhasználótól egyetlen kiválasztott táblaterületnek az elérési jogosultságát sem vonhatjuk vissza.
Ideiglenes táblaterület kiosztása • Minden felhasználónak érdemes kiosztani ideiglenes táblaterületet. • Ideiglenes táblaterületet az adatbázisban a CREATE TEMORARY TABLESPACE utasítással tudunk létrehozni. • Amennyiben ilyet nem osztunk ki a felhasználónak, a DB létrehozásakor megadott alapbeállítottat fogja megkapni, ha nincs ilyen akkor a SYSTEM-et. • Ideiglenes táblaterülethez kvótát csak a SYS felhasználó adhat.
Profil és szerepkör megadása • A profil limitek halmaza az adatbázis erőforrásaira és jelszavakra. • Amennyiben nem adunk meg a felhasználónak profilt, akkor a DB az alapértelmezettet állítja be. • A szerepkör jogosultságok elnevezett csoportja, amit felhasználóknak vagy más szerepköröknek oszthatunk ki. • Amikor a felhasználó létrehoz egy munkafolyamatot a rá alapértelmezett szerepkör automatikusan érvénybe lép.
Alapértelmezett szerepkörök • A CREATE USER utasítással nem adható meg szerepkör, így a felhasználó első létrehozásakor ez az ALL lesz, ami az összes szerepkört engedélyezi. • ALTER USER segítségével megváltoztathatjuk a felhasználó alapértelmezett szerepkörét. • De az új szerepkört előtte engedélyeznünk kell a felhasználó számára: • GRANT USER peldapl_szk • ALTER USER pelda DEFAULT ROLE pl_szk
Felhasználói fiókok módosítása • A felhasználó csak a jelszavát változtathatja meg. • Bármi más megváltoztatásához szükség van az ALTER USER jogosultságra, amivel legtöbbször csak a securityadmin rendelkezik. • Ez a jogosultság magába foglalja tetszőleges táblaterület és ahhoz tartozó kvóta beállítását a felhasználó számára. • A felhasználói fiók módosítása a felhasználó aktuális munkafolyamára nincs hatással.
A jelszó megváltoztatása • A legtöbb felhasználó változtathat jelszót. Ezt legfeljebb kétféle képen teheti: • PASSWORD felh • ALTER USER felh IDENTIFIED BY ujpass • A kettő közül az előbbit érdemes használni, mert ez nem írja ki az új jelszót a monitorra. • Autentikációs módszer váltásához mind PASSWOR mind ALTER USER joggal rendelkezni kell. Ezekkel legtöbbször csak valamelyik DBadmin rendelkezik.
Felhasználói erőforrások beállítása • Minden felhasználó számára egyénien beállítható a rendszererőforrásokhoz való hozzáférésének mértéke. • Ez az erőforráslimitek beállítási lehetősége hasznos tud lenni nagy, többfelhasználós rendszerekben, ahol egy-két felhasználónak felelőtlenül kiosztott limitek komolyan befolyásolhatnak más felhasználókat. • Ez a probléma nem lényeges egy vagy kevés felhasználóval rendelkező rendszerben.
Felhasználói erőforrások beállítása • A DB Resource Manager segítségével kezelhetjük az erőforráslimiteket. • A jelszókezelési beállításokat profilokon keresztül valósíthatjuk meg. • A securityadmin be vagy kikapcsolhatja a profilok erőforráslimitjeinek az általános végrehajtását. • Az erőforráslimitek megadásával enyhe teljesítménycsökkenés lesz észlelhető a felhasználók bejelentkezésekor, mivel a DB minden csatlakozáskor betölti a felhasználó összes erőforráslimitjét.
Erőforráslimitek típusai • Oracle DB több típusú rendszererőforrást is limitálhat. Általánosságban ezeket az erőforrásokat munkafolyamat vagy hívási szinten (vagy mindkettő) vezérelhetjük. • Minden alkalommal amikor a felhasználó az adatbázishoz csatlakozik egy munkafolyamat jön létre. • Minden SQL utasítás feldolgozása több lépésben történik, ezalatt a különböző utasítás-feldolgozási fázisok részeként több hívás keletkezik az adatbázis felé.
Munkafolyam limit elérése • Ekkor a DB visszagörgeti az aktuális utasítást, és visszatér egy hibaüzenettel. A tranzakció összes eddig végrehajtott utasítása megmarad, de a felhasználó csak a COMMIT, ROLLBACK vagy a kilépés között választhat (utóbbi esetben kommitálódik a tranzakció). Minden egyéb művelet hibát generál, így a felhasználó nem hajthat végre további utasításokat ezen a munkafolyamaton belül.
Híváslimit elérése • Ekkor a DB felfüggeszti az utasítás végrehajtását, visszagörgeti, és visszatér egy hibaüzenettel. Az eddigi tranzakcióban lefutott utasítások sértetlenek maradnak, és a munkafolyamat továbbra is elérhető.
CPU idő limitálása • Bizonyos mennyiségű CPU idő minden lekérdezéshez szükséges. • Nagy adatmennyiséget mozgató, vagy elhúzódó lekérdezések sok CPU időt felélhetnek. • A kontrollálatlan CPU idő felhasználás elkerülése érdekében megadhatunk dinamikus, vagy statikus limiteket, mind az egyes hívások, mind a munkafolyamatbeli összes hívás idejére századmásodpercben (0.01 sec).
Logikai olvasások limitálása • Az I/O műveletek a legköltségesebbek az adatbázisok szempontjából, és az I/O intenzív SQL utasítások teljesen kisajátíthatják a memória és a merevlemez használatát. • Ennek elkerülésére limitálni lehet az egyes hívások által, vagy a munkafolyamat alatt beolvasott logikai blokkok mennyiségét is, darabszámban. • A logikai blokkba a merevlemezről és memóriából beolvasott blokkok is beletartoznak.
Egyéb limitálható erőforrások • A felhasználó által egyszerre indított munkafolyamatok száma. • A munkafolyamat tétlenségi idejét. • A munkafolyamat megkezdésétől eltelt idő. (Ezt az adatbázis csak bizonyos időközönként ellenőrzi.) • Az SGA (System Global Area) terület mérete. Ez csak elosztott szerver konfigurációt használó rendszereknél lényeges. Bájtban lehet megadni.
Limitek meghatározása • A profilokhoz tartozó erőforráslimitek helyes értékei a felhasználói csoportok által tipikusan végzett műveleteken keresztül állapíthatóak meg. • Legtöbbször az adott felhasználó eddigi műveletei alapján lehet a legjobban meghatározni az egyes erőforrások limitjeit.
Erőforrások kezelése profilokon keresztül • A profilokra csak akkor van szükség ha az erőforrások limitálása beletartozik az adatbázis védelmi politikájába. • Profilok létrehozása előtt érdemes felmérni a felhasználók csoportjait, majd ezen csoportokra meghatározni az erőforráslimiteket. • A profilok könnyen beállíthatóak a Data Resource Manager segítségével. Ez a program elsősorban az erőforrások kiosztását és korlátozását kezeli.
Erőforrások kezelése profilokon keresztül • A profilok erőforráslimitjei csak akkor jutnak érvényre, ha a RESOURCE_LIMIT inicializáló paraméterrel vagy az ALTER SYSTEM utasítással engedélyeztük azokat. • A profilokban beállított jelszavakra vonatkozó paraméterek mindig engedélyezettek.
Profilok létrehozása • Minden erre jogosult DB felhasználó bármikor létrehozhat, hozzárendelhet felhasználóhoz, módosíthat, és törölhet profilokat a CREAT és ALTER USER utasítással. • Profilok csak felhasználókhoz rendelhetőek, nem szerepkörökhöz. • Az aktuális munkafolyamatra nem hat. • Az aktuális profilbeállításokat a DBA_PROFILES nézettábla lekérdezésével nézhetjük meg.
Profilok törlése • Profil törléséhez rendelkezni kell a DROP PROFILE jogosultsággal. • Ha a törölni kívánt profillal rendelkezik felhasználó, akkor a CASCADE opciót is meg kell adni. • Görgetett törlés után a törölt profillal rendelkező felhasználók az alapbeállított profilt kapják meg. • Alapbeállított profil nem törölhető.
Felhasználói fiókok törlése • A felhasználó törlésekor a DB törli a fiókot, a hozzá tartozó sémát, és a sémából az összes objektumot is. • A SYS és SYSTEM felhasználókat nem ajánlott törölni . • Ha a felhasználó objektumait nem akarjuk törölni, csak kitiltani az adatbázisból, akkor vonjuk meg tőle a CREATE SESSION jogosultságot. • A jelenleg csatlakozott felhasználó sem törölhető.
Felhasználói fiókok törlése • Bejelentkezett felhasználó törléséhez előbb rúgjuk ki az adatbázisból az ALTER SYSTEM KILL SESSION sid utasítás segítségével. • A bejelentkezett felhasználók és sid-jeiklekérdezhető a V$SESSION nézettáblából. • Felhasználó a DROP USER utasítással törölhető. • A DROP USER jogosultság elég jelentős, ezért rendszerint csak a securityadmin rendelkezik vele.
Felhasználói fiókok törlése • Ha a törlendő felhasználónak vannak függő sémaobjektumai a CASCADE opciót is meg kell adni, különben a felhasználó nem törlődik. • A felhasználó objektumait lekérdezhetjük a DBA_OBJECTS nézettáblából.
Információk szerzése felhasználókról és profilokról • Nézettáblák a felhasználók és profilok információiról: • ALL_OBJECTS: felhasználó által látható objektumok • ALL_USER: felhasználó által látható más felhasználók • DBA_PROFILES: összes profil és azok limitjei • DBA_TS_QUOTAS: felhasználók táblaterület kvótái • DBA_OBJECTS: összes DB objektum • DBA_USERS: összes DB felhasználó • DBA_USERS_WITH_DEFPWD: alapbeállított jelszóval rendelkező felhasználók • PROXY_USERS: olyan felhasználók akik más felhasználókat imitálhatnak.
Információk szerzése felhasználókról és profilokról • RESOURCE_COST: az összes erőforrás CPU ideje • USER_PASSWORD_LIMITS: a felhasználónak kiosztott jelszó profil paramétereinek beállításai • USER_RESOURCE_LIMITS: felhasználó erőforráslimitjei. • USER_TS_QUOTAS: felhasználó táblaterület kvótái • USER_OBJECTS: felhasználó összes objektuma • USER_USERS: a jelenlegi felhasználó • V$SESSION: az összes jelenlegi munkafolyamat információi • V$SESSTAT: felhasználó munkafolyamatának statisztikái • V$STATNAME: statisztikák nevei a V$SESSTAT nézethez