Jogosultság és szerepkör kezelés Oracle 11gR2 alatt

Slides:



Advertisements
Hasonló előadás
7. előadás.  Zend_Auth komponens  Authentikációs típusok  Az authentikáció menete  Zend_Acl_Resource  Zend_Acl_Role  Jogosultságkezelés ZF-ben.
Advertisements

2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
Hálózati és Internet ismeretek
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
15. tétel Adatbázis felhasználói és jogosultságaik
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Hálózati architektúrák
Delphi programozás alapjai
Jogában áll belépni?! Détári Gábor, rendszermérnök.
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Többtáblás lekérdezések, allekérdezések Rózsa Győző
megismerése, mintaadatbázis létrehozása
Triggerek II. ADATBÁZIS ALAPÚ RENDSZEREK.  Az Oracle kifinomult módon támogatja a sorszámozások generálását  Szekvencia: olyan adatbázis-objektum, amely.
Adatbázis alapú rendszerek
Készítette: Sárközi Anikó
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
SQL92 lehetőségek KL A tábla B tábla C view adatok VIEW működése utasítás: SELECT.. FROM A,B … SELECT.. FROM C Az adatok a hivatkozáskor állítódnak elő.
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Adatbázis-kezelés Papp-Varga Zsuzsanna. Elérhetőségek    as.
Kényszerek megadása. Indexek kezelése.
Nézettáblák létrehozása, módosítása és törlése
1 Operációs rendszerek A UNIX védelmi rendszere. 2 Illetéktelen hozzáférés megakadályozása: az egyes felhasználók adataihoz, az operációs rendszer adataihoz,
PHP VII Sütik, munkamenetek. Sütik Mi az a süti? A süti (cookie) állapotot tárol a felhasználó böngészőjében. Pl. ha egy oldalon beállítható, hogy milyen.
AD {RMS} Active Directory Rights Management Services
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Publikációs portál Analízis modell UML bázisú modellezés és analízis Csapat: UML7 (Percze Dániel, Rajnai Zoltán, Ráth István, Tóth Dániel, Vágó Dávid)
DDL – Adatdefiníciós nyelv
Adatbázis adminisztrátori ismeretek
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Adatbázis-kezelés SQL-lel. SQL SQL = Structured Query Language – Strukturált Lekérdezőnyelv Relációs adatbázis-kezelők lekérdezési nyelve. Alapjait az.
Adatbázis-kezelés SQL-lel
Hálózat kiépítésével lehetőségünk nyílik más számítógépek erőforrásainak használatára. Osztott háttértár használat: egy számítógép merevlemezének megosztásával.
Felhasználók és jogosultságok
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Operációs Rendszerek 1 Felhasználókezelés Windisch Gergely
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
APEX BMF, II. félév.
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Web Architecture. Development of Computing Architectures Monolithic mainframe programming Client Server Real Client Server Web Programming.
SQL.
1 Verseny 2000 gyakorlat ODBC Adatforrás létrehozása.
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
ORACLE ORDBMS adminisztrációs feladatok 3. rész dr. Kovács László 2004.
Adatbázis-kezelés Tarcsi Ádám január. 15. MySQL és PHP.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Automatizálási folyamatok az SQL 2012-ben
5. gyakorlat Fleiner Rita.
Webprogramozó tanfolyam
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- hálózatok dr. Herdon Miklós dr. Kovács György Magó Zsolt.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
Oracle Label Security OLS. Szintek Kategóriák.
Kiss Tibor System Administrator (MCP) ISA Server 2006.
1 SQL jogosultság-kezelés Privilégiumok Grant és Revoke Grant Diagrammok.
Adatbázis alapú rendszerek
Hálózati architektúrák
Logisztikai projekt - gyakorlat Adatbázis-elmélet
SQL jogosultság-kezelés
Előadás másolata:

Jogosultság és szerepkör kezelés Oracle 11gR2 alatt Adatbázisok védelme Jogosultság és szerepkör kezelés Oracle 11gR2 alatt

Rendszer jogosultság és szerepek kiosztása A GRANT SQL utasítás segítségével adhatunk rendszer jogosultságot és szerepkört amennyiben: Van ADMIN OPTION vagy ANY PRIVILEGE rendszer jogosultságunk van Egy szerep kiosztásához ADMIN OPTION vagy ANY ROLE szerepkörre van szükségünk Pl.: GRANT CREATE SESSION, accts_pay TO jward;

ADMIN OPTION jogosultság Ha megadjuk a WITH ADMIN OPTION záradékot akkor a jogosultság a következőkkel bővül: A kezdeményezett adhat vagy visszavonhat rendszer jogosultságot vagy szerepkört az adatbázisban. A felhasználók önmaguktól nem vonhatják meg a jogosultságot A kezdeményezett kiadhatja a rendszer szintű jogosultságot vagy szerepet az ADMIN OPTION segítségével A kezdeményezett módosíthatja vagy eldobhatja a szerepkört Pl.: GRANT new_dba TO michael WITH ADMIN OPTION; Használjuk óvatosan!

Új felhasználó létrehozása a GRANT segítségével Ha GRANT-tel hivatkozunk egy felhasználóra, aki nem létezik az adatbázisban, és használjuk az IDENTIFIED BY záradékot, akkor automatikusan létrejön a felhasználó az záradék segítségével megadott jelszóval Pl.: GRANT CREATE SESSION TO psmith IDENTIFIED BY password;

Objektum jogosultságok A GRANT segítségével objektum jogosultságokat rendelhetünk a felhasználókhoz és szerepkörökhöz Hogy ezt megtehessük az alábbiaknak kell igaznak lennie ránk: A szóban forgó objektumnak sajátnak kell lennie Rendelkezni kell a GRANT ANY OBJECT PRIVILEGE jogosultsággal Amikor megkaptuk az objektum feletti jogosultságunkat, akkor azt a WITH GRANT OPTION záradékkal kaptuk meg Pl.: - GRANT SELECT, INSERT, DELETE ON emp TO jfee, tsmith; - GRANT ALL ON salary TO jfee;

A GRANT OPTION záradék Ha ezt a záradékot megadjuk, akkor az objektumra jogosult továbbadhatja ezt a jogosultságot más felhasználók számára. A felhasználó, akinek a sémájában az objektum van, automatikusan megkapja a GRANT OPTION záradékot A záradék a következőkre jogosítja fel a kezdeményezettet: A kezdeményezett bármelyik felhasználónak és szerepnek adhat jogosultságot a GRANT OPTION záradékkal vagy a nélkül Ha az alábbiak teljesülnek, akkor a felhasználó létrehozhat nézeteket, és hozzá tartozó jogosultságokat oszthat ki a felhasználókra illetve szerepekre nézve: A kezdeményezett rendelkezik a GRANT OPTION jogosultsággal Rendelkezik továbbá a CREATE VIEW vagy CREATE ANY VIEW rendszer jogosultsággal

Objektum jogosultság megadása az objektum tulajdonosának nevében A GRANT ANY OBJECT PRIVILEGE rendszer jogosultság lehetővé teszi a felhasználóknak, hogy jogosultságot osszanak ki vagy vonjanak vissza az objektum tulajdonosai számára. Ez a jogosultság része a DBA szerepnek, így minden AS SYSDBA-ként csatlakozó felhasználó megkapja. Mint minden rendszer jogosultságot, a GRANT ANY OBJECT PRIVILEGE-t is csak az ADMIN OPTION-nel rendelkezők adhatják. A rögzítésre kerülő ‘felhatalmazó’ lehet az objektum tulajdonosa, vagy az a személy, aki rendelkezik a GRANT ANY OBJECT PRIVILEGE-gel. Ha a felhatalmazónak van GRANT ANY OBJECT PRIVILEGE jogosultsága, de nincs GRANT OPTION jogosultsága az objektumhoz, akkor az objektum tulajdonosa lesz a felhatalmazó, különben pedig a jogosultságot adó felhasználó.

Objektum jogosultság megadása az objektum tulajdonosának nevében adams – GRANT ANY OBJECT PRIVILEGE GRANT SELECT ON HR.EMPLOYEES TO blake WITH GRANT OPTION; A DBA_TAB_PRIVS nézetben látható, hogy a hr van megjelölve felhatalmazóként Ha blake-nek van GRANT ANY OBJECT PRIVILEGE jogosultsága is: GRANT SELECT ON HR.EMPLOYEES TO clark; A DBA_TAB_PRIVS nézetben már blake a jogosultság kiosztója clark esetében

Jogosultság kezelése oszlopokon INSERT, UPDATE, REFERENCES jogosultságok rendelhetők oszlopokhoz INSERT jogosultság esetén vigyázni kell, hogy van –e a táblán NOT NULL megszorítás. Lehet, hogy a felhasználó nem fog tudni beszúrni értékeket a táblába. Hogy elkerüljük ezt a szituációt, tegyük lehetővé, hogy minden NOT NULL oszlop beszúrható legyen, vagy legyen egy nem NULL alapértelmezett értéke. Pl.: GRANT INSERT (acct_no) ON accounts TO psmith; GRANT INSERT(ename, job) ON emp TO jfee, tsmith;

Sor szintű hozzáférés-kezelés Sor szintű hozzáférés-kezelésre is lehetőség van Virtual Private Database (VPD) vagy Oracle Label Security (OLS) segítségével

Jogosultság és szerep megvonása felhasználótól A rendszer jogosultságokat és szerepeket a REVOKE SQL utasítás segítségével lehet visszavonni Bármely ADMIN OPTION rendszer jogosultsággal vagy szerepkörrel rendelkező felhasználó visszavonhat jogosultságot vagy szerepet bármelyik másik adatbázis felhasználójától vagy szerepkörétől. Nem feltétlenül az a felhasználó vonja vissza a jogosultságot aki kiadta. A GRANT ANY ROLE jogosultságú felhasználók bármilyen szerepkört visszavonhatnak. Pl.: REVOKE CREATE TABLE, accts_rec FROM psmith;

Objektum jogosultságok visszavonása Egy objektum jogosultságának visszavonásához a következő feltételek közül az egyiknek meg kell megfelelni: A jogosultságot vagy szerepkört mi ruháztuk az objektumra Rendelkezünk a GRANT ANY OBJECT PRIVILEGE rendszer jogosultsággal ami lehetővé teszi hogy jogosultságot adjunk, vagy vonjunk vissza az objektum tulajdonosától Csak olyan jogosultságokat vonhatunk vissza, amiket közvetlenül mi adtunk vissza. Nem vonhatunk vissza olyat, amit olyan adott ki, akiknek mi adtunk jogosultságot Pl.: REVOKE SELECT, INSERT ON emp FROM jfee, psmith; REVOKE ALL ON dept FROM human_resources; Megjegyzés: A GRANT OPTION objektum jogosultságot nem vonhatjuk vissza külön. Vonjuk vissza az objektum jogosultságot, és adjuk meg újra GRANT OPTION nélkül

Objektum jogosultság visszavonása valaki nevében A GRANT ANY OBJECT PRIVILEGE rendszer jogosultság lehetővé teszi, hogy bármilyen olyan objektum jogosultságot visszavonjunk, amit az objektum tulajdonosa adott meg. Abban az esetben, ha a jogosultságot az objektum tulajdonosa is kérte, és a felhasználó kiadja a REVOKE utasítást, az Oracle csak a felhasználó által megadott jogosultságot vonja vissza Blake SELECT jogosultságot adott a HR.EMPLOYEES –on clark-nak. Még ha blake rendelkezik is a GRANT ANY PRIVILAGE rendszer jogosultsággal, ő birtokolja az adott objektum jogosultságot, tehát ez a ‘felhatalmazás’ hozzá tartozik. A HR felhasználó SELECT jogosultságot adott clark-nak a HR.EMPLOYEES táblán.

Objektum jogosultság visszavonása valaki nevében DBA_TAB_PRIVS nézet: GRANTEE GRANTOR PRIVILEGE GRANTABLE -------- ------- ----------- ---------- BLAKE HR SELECT YES CLARK BLAKE SELECT NO CLARK HR SELECT NO blake kiadja az alábbi utasítást: REVOKE SELECT ON HR.EMPLOYEES FROM clark; Csak a blake által kiadott jogosultság lesz visszavonva, a tulajdonos (HR) által kiadott megmarad GRANTEE GRANTOR PRIVILEGE GRANTABLE -------- ------- ----------- ---------- BLAKE HR SELECT YES CLARK HR SELECT NO Ha blake újra kiadja a REVOKE utasítást, akkor már az adams által elhelyezett jogosultságot vonja vissza, mivel rendelkezik a GRANT ANY OBJECT PRIVILEGES rendszer jogosultsággal

Oszlopra helyezett jogosultság visszavonása Oszlopokra helyezett jogosultságot nem tudunk külön-külön visszavonni egy egyszerű REVOKE utasítással Megoldás: Mindet visszavonni, és egyesével visszahelyezni ami szükséges

A REFERENCES objektum jogosultság visszavonása Ha egy objektumra REFERENCES jogosultságot helyeztünk külső kulcs megszorítás létrehozása érdekében, akkor ennek visszavonása csak a CASCADE CONSTRAINTS opció segítségével lehetséges Pl.: REVOKE REFERENCES ON dept FROM jward CASCADE CONSTRAINTS; (Ekkor minden olyan külső kulcs megszorítás amit a REFERENCES-zel hoztunk létre el lesz dobva.)

Kaszkádolás a jogosultság visszavonása esetén A jogosultság típusától függően többféle kaszkádolás váltódhat ki annak visszavonásakor

Kaszkádolás rendszer jogosultságok visszavonása esetén Nincsen kaszkádolás az olyan rendszer jogosultságok visszavonása esetén, amik DDL-hez kapcsolódnak, akkor sem ha ADMIN OPTION-nel lettek megadva Pl. A biztonsági admin jfee-t felruházza a CREATE TABLE rendszer jogosultsággal (ADMIN OPTION) jfee csinál egy táblát jfee CREATE TABLE rendszer jogosultságot ad tsmith-nek tsmith csinál egy táblát A biztonsági admin visszavonja a CREATE TABLE jogosultságot jfee-től A jfee által létrehozott tábla továbbra is létezni fog, tsmith-nek pedig meglesz a táblája, és a CREATE TABLE jogosultsága

Kaszkádolás rendszer jogosultságok visszavonása esetén DML utasításhoz kapcsolódó jogosultság esetén már előfordulhat a kaszkádolás effektus Ha a SELECT ANY TABLE jogosultságot megvonjuk egy felhasználótól, akkor minden eljárás ami a felhasználó sémájában használná ezt a jogosultságot, nem fog tudni lefutni, amíg a jogosultságot vissza nem kapja

Kaszkádolás effektus objektum jogosultság visszavonása esetén Az objektum jogosultság visszavonása esetén előfordulhat kaszkádolás effektus: Az olyan objektum definíciókra, amik egy DML objektum jogosultságtól függenek, hatással lehet a jogosultság visszavonása. Pl.: Ha egy eljárás törzse adatokat olvas az emp táblából, és megvonjuk a SELECT jogosultságot az emp táblától, akkor az eljárás nem tud sikeresen lefutni.

Kaszkádolás effektus objektum jogosultság visszavonása esetén Ha egy táblához tartozó REFERENCES jogosultságot visszavonunk a felhasználótól, minden külső kulcs megszorítás, ami a felhasználó által definiálva lett és ezen a táblán alapul, az automatikusan el lesz dobva Az objektum jogosultságok amik a GRANT OPTION használatával lettek kiadva visszavonásra kerülnek ha egy grantor objektum jogosultsága visszavonásra kerül

Kaszkádolás effektus objektum jogosultság visszavonása esetén Azok az objektum definíciók amiknek szüksége van az ALTER és INDEX DDL objektum jogosultságokra, nem érintettek abba, ha az ALTER vagy INDEX objektum jogosultság visszavonásra kerül. Pl ha egy felhasználó csinál egy táblát amiben egy index egy másik felhasználóhoz tartozik, és az INDEX jogosultságot visszavonjuk, az index továbbra is létezik.

A PUBLIC User Group-hoz tartozó jogosultságok hozzáadása és visszavonása Minden jogosultság és szerepkör amit a PUBLIC-nak megadunk elérhető minden felhasználó számára. A biztonsági adminisztrátorok és adatbázis felhasználóknak oda kell figyelni, hogy csak azok a jogosultságok és szerepkörök legyenek érvényesek a PUBLIC-ra, amikre szükség van Egy jogosultság visszavonása a PUBLIC-tól jelentős kaszkádolási hatásokkal járhat

Szerepkörök kiosztása operációs rendszer vagy hálózat segítségével Operációs rendszer segítségével is le lehet vezényelni a szerepkörökhöz való hozzáadást, vagy visszavonást. A szerepköröket egy hálózati szolgáltatáson keresztül is kioszthatjuk Ez utóbbi hasznos lehet ha biztonsági szempontból központosítani szeretnénk a rendszerünket, pl. a következő módokon: MVS Oracle adminok RACF csoporotokkal szeretnék azonosítani a szerepköröket UNIX Ora adminok UNIX csoportokkal szeretnék VMS Ora adminok jogosultsági azonosítókkal szeretnék

Szerepkörök kiosztása operációs rendszer vagy hálózat segítségével OS hátrányai: A jogosultság kezelése csak szerepkör szintjén megvalósítható (egyedi jogosultság kiadására nincs lehetőség, csak a GRANT utasítással az adatbázison belülről) Alapértelmezetten a felhasználók nem csatlakozhatnak az adatbázishoz megosztott szerveren, vagy bármilyen más hálózati kapcsolaton keresztül (ez az alapértelmezés megváltoztatható)

Szerepkör azonosítás operációs rendszer seegítségével OS_ROLES – TRUE –ra állítása Ha egy felhasználó létrehoz egy új session-t az adatbázisban, akkor az Oracle inicializálja a felhasználó szerepkörét az OS segítségével Ahhoz hogy az adatbázis azonosítani tudja a felhasználókhoz tartozó szerepkört, minden felhasználónak lennie kell egy egyedi azonosítónak az OS-ben (bárhogy is nevezzük ezt), ami megmutatja, hogy a felhasználó számára mely adatbázis szerepkörök érhetők el. Megadható az alapértelmezett szerepkör jelentése és az ADMIN OPTION-é is

Szerepkör azonosítás operációs rendszer segítségével A szerepkör specifikációja OS-től függetlenül a következő: ora_ID_ROLE[[_d][_a][_da]] ID: minden OS-nél más. ROLE: az adatbázis szerepkör neve d: opcionális karakter, ami az alapértelmezett szerepkört jelöli a: opcionális karakter, azt jelöli, hogy a szerepkör egy olyan felhasználóhoz fog tartozni, aki ADMIN OPTION-nel rendelkezik. Ez lehetőséget ad a felhasználónak, hogy átadja a szerepköröket más szerepköröknek. A szerepkörök nem adhatók át felhasználóknak, ha az OS kezeli őket

Szerepkör azonosítás operációs rendszer segítségével Pl.: ora_PAYROLL_ROLE1 ora_PAYROLL_ROLE2_a ora_PAYROLL_ROLE3_d ora_PAYROLL_ROLE4_da

OS szerepkör menedzselés használata Minden adatbázis felhasználót azonosítani kell tudni az operációs rendszer oldaláról, ezért minden felhasználóhoz használni kell az IDENTIFIED EXTERNALLY-t

Szerepkör hozzárendelése és visszavonása OS_ROLES TRUE esetén OS kezel minden szerepkört Az előzőleg megadott hozzárendelések nem lesznek érvényben. Az OS csak a szerepköröket kezeli, a felhasználók továbbra is adhatnak jogosultságokat szerepköröknek és felhasználóknak

Szerepkörök engedélyezése és tiltása OS_ROLES TRUE esetén SET ROLE utasítás segítségével Max. 148 szerepkör definiálható a felhasználó által

Hálózati kapcsolatok használata OS szerepkör menedzselés mellett Alapértelmezetten megosztott szerveren keresztül nem kommunikálhatnak a felhasználók az adatbázissal, mert biztonsági rést okoz REMOTE_OS_ROLES - TRUE

Mikor lesz hatása a jogosultság hozzáadásának és visszavonásának? Attól függ hogy mit szeretnénk hozzáadni vagy visszavonni: Minden rendszer és objektum jogosultság hozzáadása és visszavonása azonnal megtörténik A szerepkörök hozzárendelése és visszavonása akkor történik meg, amikor a felhasználó aktuális session-je kap egy SET ROLE utasítást Az aktuálisan engedélyezett szerepkörök tanulmányozásához a SESSION_ROLES adatkönyvtárat érdemes vizsgálni

Hogyan befolyásolja a SET ROLE utasítás a GRANT és REVOKE utasításokat A felhasználó akárhányszor módosíthatja az aktuálisan engedélyezett szerepköröket a SET ROLE utasítással Pl.: SET ROLE clerk IDENTIFIED BY password; SET ROLE NONE;

Alapértelmezett szerepkörök definiálása Amikor egy felhasználó bejelentkezik, akkor minden explicit módon megadott jogosultság, és az alapértelmezett szerepkörben lévő minden jogosultság automatikusan engedélyezve lesz Az alapértelmezett szerepkör megadására az ALTER USER SQL utasítás használható Pl.: ALTER USER jane DEFAULT ROLE payclerk, pettycash; CREATE USER esetén nem adhatunk meg alapértelmezett szerepkört. (Ilyenkor ALL)

Finom szemcsézettségű elérés PL/SQL Network Utility Packages A felhasználói felügyelethez beállíthatók külső hálózati eszközök segítségével a következőkön keresztül: Pl/SQL csomagok: UTL_TCP UTL_SMTP UTL_HTTP UTL_INADDR HttpUriType típus

Finom szemcsézettségű elérés PL/SQL Network Utility Packages Finom szemcsézetsségű felhasználói felügyelet és szerepkör kezelés külső hálózati szolgáltatásokon keresztül az adatbázisból: Különböző csoportok tudnak csatlakozni a kiszolgálógépekhez, melyeket jogosultságkezelését elvégezhetjük Finom szemcsézettségű felhasználói felület Oracle wallets-en keresztül olyan HTTP kérések küldésére, melyek jelszavas authentikációt kívánnak

Finom szemcsézettségű hozzáférés felügyelet egy külső hálózati szolgáltatáshoz Access Control List (ACL) létrehozása XML DB-ben tároljuk XML DB használata, vagy DBMS_NETWORK_ACL_ADMIN és DBMS_NETWORK_ACL_UTILITY PL/SQL csomagok segítségével XML DB -> Oracle XML DB Developer's Guide

Finom szemcsézettségű hozzáférés felügyelet egy külső hálózati szolgáltatáshoz Nagyobb biztonság a külső hálózati host-ok korlátozásával Ha egy behatoló bejut az adatbázisba, kárt tehet a hálózatban mivel az EXECUTE jogosultság a PUBLIC felhasználókhoz tartozik IP4 és IP6 támogatás

A Wallets-hez való hozzáférés szabályozása Weboldalon keresztüli hozzáférés esetén lehetőség van jelszóval történő authentikációra Egy wallet-hez való hozzáféré szabályozásához a következő komponensekre van szükség: Oracle wallet: mkstore utility vagy Oacle Wallet Manager segítségével hozható létre Egy ACL a wallet-hez tartozó jogosultságok kezeléséhez. Valamilyen módon össze kell rendelni az ACL-t az Oracle wallet-tel: DBMS_NETWORK_ACL_ADMIN

PL/SQL Network Utility Packages alapú alkalmazások frissítése ORA-24247: network access denied by access control list (ACL) Újra kell konfigurálni az alkalmazás hálózathoz való csatlakozását

ACL létrehozása külső hálózati szolgáltalásokhoz Ne csináljunk túl sok csoportot DBMS_NETWORK_ACL_ADMIN Az ACL létrehozása és a jogosultságok definiálása Név Leírás Jogosultság egy felhasználónak vagy egy szerepkörnek

ACL létrehozása külső hálózati szolgáltalásokhoz - példa BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'file_name.xml', description => 'file description', principal => 'user_or_role', is_grant => TRUE|FALSE, privilege => 'connect|resolve', start_date => null|timestamp_with_time_zone, end_date => null|timestamp_with_time_zone); END;

ACL létrehozása külső hálózati szolgáltalásokhoz - példa acl: Adjunk meg egy nevet az ACL XML-nek. /sys/acls könyvtárba kerül acl => 'us-example-com-permissions.xml', Description: Egy leírás a fájlhoz description => 'Network connection permission for ACCT_MGR role', principal: Az felhasználói fiók vagy szerepkörre vonatkozó engedélyeket vagy tiltásokat adunk meg itt principal => 'ACCT_MGR‘ Fontos a kis és nagybetűk közti különbség is_grant: TRUE vagy FALSE, attól függően hogy tiltjuk vagy engedélyezzük a jogosultságot is_grant => TRUE, privilege: connect vagy resolve privilege => 'connect‘ UTL_TCP, UTL_HTTP, UTL_SMTP, és UTL_MAIL esetén van rá szükség

ACL létrehozása külső hálózati szolgáltalásokhoz - példa start_date: opcionális. Mikortól legyen érvényes a hozzáférés szabályozás start_date => '2008-02-28 06:30:00.00 US/Pacific', end_date: később kell lennie, mint a start_date end_date => '2008-12-10 23:59:00.00 US/Pacific');

ACL létrehozása külső hálózati szolgáltalásokhoz - példa DBMS_NETWORK_ACL.ADD_PRIVILEGE eljárás: BEGIN DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE ( acl => 'file_name.xml', principal => 'user_or_role', is_grant => TRUE|FALSE, privilege => 'connect|resolve', position => null|value, start_date => null|timestamp_with_time_zone, end_date => null|timestamp_with_time_zone); END; Nincs description Van position:a szerepek hozzáadásának precedenciáját adja meg

Egyéb ACL műveletek DELETE_PRIVILEGE DROP_ACL

Az ACL Hálózati kiszolgálókhoz való hozzárendelése DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL eljárás: BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( acl => 'file_name.xml', host => 'network_host', lower_port => null|port_number, upper_port => null|port_number); END;

Az ACL Hálózati kiszolgálókhoz való hozzárendelése acl: ACL XML fájl neve acl => 'us-example-com-permissions.xml', host: hálózati kiszolgáló, amihez hozzárendeljük az ACL-t. host => 'us.example.com', lower_port: (Opcionális) TCP kapcsolatokhoz. A port tartomány alsó korlátja. lower_port => 80, upper_port: (Opcionális) TCP kapcsolatokhoz. upper_port => 3999); Ha megadtunk egy alsó korlátot, de nem adunk meg felsőt, akkor automatikusan az alsó egyben felső korlát is lesz.

Az ACL Hálózati kiszolgálókhoz való hozzárendelése Egy host géphez, egy ACL tartozik DROP_ACL: ACL törlése UNASSIGN_ACL: ACL hozzárendelés megszüntetése

Hozzáférési jogosultság kezelése egy Wallet-en Web szerver felé való authentikáció segítése Jelszavak kezelése

Oracle Wallet létrehozása mkstore parancssori segédprogram, vagy Oracle Wallet Manager UI Jelszavak Wallet-ben tárolásához az mkstore-t kell használni PKCS11 vagy auto-login Wallet készítésekor: Győződjünk meg róla, hogy a wallet ki lett exportálva egy fájlba Jegyezzük fel valahova a könyvtárat, ahova a wallet fájl került

Oracle Wallet létrehozása ACL létrehozása Az ACL összerendeli a jelszavakat vagy bizonyítvány jogosultságokat a felhasználókhoz BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'file_name.xml', description => 'description', principal => 'user_or_role', is_grant => TRUE|FALSE, privilege => 'privilege'; ... END

Oracle Wallet létrehozása ACL létrehozása acl: az ACL neve acl => 'hr_access_wallet_acl.xml', description: Egy leírás a fájlhoz description => 'Wallet ACL for the hr_access application', principal: A felhasználói fiók vagy szerep amiről éppen rendlkezünk principal => 'HR_CLERK‘ is_grant: TRUE vagy FALSE privilege: use-passwords use-client-certificates privilege => 'use-client-certificates');

Oracle Wallet létrehozása ACL hozzárendelése a Wallet-hez BEGIN ... DBMS_NETWORK_ACL_ADMIN.ASSIGN_WALLET_ACL ( acl => 'file_name.xml', wallet_path => 'file:path_to_directory_containing_wallet'); END;

Oracle Wallet létrehozása ACL hozzárendelése a Wallet-hez acl: az ACL XML neve wallet_path wallet_path => 'file:/oracle/wallets/hr_access_access'

Oracle Wallet létrehozása HTTP kérések jelszavakkal vagy kliens bizonyítványokkal UTL_HTTP DECLARE req_context UTL_HTTP.REQUEST_CONTEXT_KEY; req UTL_HTTP.REQ; BEGIN req_context := UTL_HTTP.CREATE_REQUEST_CONTEXT ( wallet_path => 'file:path_to_directory_containing_wallet', wallet_password => 'wallet_password'|NULL); req := UTL_HTTP.BEGIN_REQUEST( url => 'URL_to_application', request_context => 'request_context'|NULL); ... END;

Oracle Wallet létrehozása HTTP kérések jelszavakkal vagy kliens bizonyítványokkal req_context: UTL_HTTP.CREATE_REQUEST_CONTEXT_KEY Generál egy random kulcsot, amivel azonosítja a hívó felet. req: UTL_HTTP.REQ Ezzel hozzuk létre az objektumot, amivel HTTP kéréseket viszünk véghez wallet_path: Adjuk meg a wallet fájl elérési útját wallet_password: A wallet megnyitásához. Alapértelmezetten NULL wallet_password => NULL); url: url=>'www.hr_access.example.com', request_context: A korábban megadott request context neve. request_context => req_context);

A request context használata, hogy tartsuk a Wallet-et amíg megosztjuk a session-t más alkalmazásokkal Ha az alkalmazásnak kizárólagos adatbázis session-je van, az adatbázisban tarthatjuk a Wallet-et a SET_WALLET alkalamazással is DECLARE req UTL_HTTP.REQ; BEGIN UTL_HTTP.SET_WALLET( path => 'file:path_to_directory_containing_wallet', password => 'wallet_password'|NULL); req := UTL_HTTP.BEGIN_REQUEST( url => 'URL_to_application'); ... END;

Csak kliens bizonyítvány használata authentikációra BEGIN_REQUEST A use-client-certificates hozzárendelődik a wallet-hez

A jelszó authentikáció használata SET_AUTHENTICATION_FROM_WALLET DECLARE req_context UTL_HTTP.REQUEST_CONTEXT_KEY; req UTL_HTTP.REQ; BEGIN ... UTL_HTTP.SET_AUTHENTICATION_FROM_WALLET( r => HTTP_REQUEST, alias => 'alias_to_retrieve_credentials_stored_in_wallet', scheme => 'AWS|Basic', for_proxy => TRUE|FALSE); END;

A jelszó authentikáció használata r: Ide kerül a HTTP request r => req, alias: Az azonosító, amivel azonosítjuk a felhasználót alias => 'hr_access', scheme: AWS: Amazon Simple Storage Service (S3) séma. Basic: alap HTTP authentikáció scheme => 'Basic', for_proxy: Ha a HTTP authentikáció nem web szerverhez, hanem HTTP proxy szerverhez tartozik for_proxy => TRUE);

ACL példák Egyetlen szerepkör és hálózati kapcsolat Az ACL fájl: BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL ( acl => 'us-example-com-permissions.xml', description => 'Network connection permission for ACCT_MGR', principal => 'ACCT_MGR', -- Must be in upper case is_grant => TRUE, privilege => 'connect'); END; /

ACL példák Összerendelés BEGIN DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL ( acl => 'us-example-com-permissions.xml', host => 'www.us.example.com', lower_port => 80, upper_port => 80); END;

ACL példák Premissions XML <acl description="Network connection permission for ACCT_MGR" xmlns="http://xmlns.oracle.com/xdb/acl.xsd" xmlns:plsql="http://xmlns.oracle.com/plsql" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/xdb/acl.xsd http://xmlns.oracle.com/xdb/acl.xsd"> <security-class>plsql:network</security-class> <ace> <grant>true</grant> <principal>ACCT_MGR</principal> <privilege><plsql:connect/></privilege> </ace> </acl>

Hálózati Kiszolgáló gépek csoportja *.example.com 192.0.2.* IPv6 címeknél nem használható a wildcard

Precedencia megadása többszörös ACL hozzárendelések esetén Sorban veszi a megadott domain-eket 1. server.us.example.com 2. *.us.example.com 3. *.example.com 4. *.com 5. * A precedencia a port számokat nem veszi figyelembe

Jogosultság hozzárendelés ellenőrzése Az adatbázis adminisztrátorok a DBA_NETWORK_ACL_PRIVILEGES adat szótárban megnézhetik a szerepeket és jogosultságokat. CHECK_PRIVILEGE: Ellenőrzi, hogy az adott felhasználó szerepel –e az ACL-ben (XML DB-vel dolgozik) CHECK_PRIVILEGE_ACLID: Hasonló az előzőhöz, de megadható az ACL objektum ID-je

Jogosultság hozzárendelés ellenőrzése DBMS_NETWORK_ACL_UTILITY felhasználók számára nyújt lehetőséget: EQUALS_HOST: Két host, domain vagy alhálózat egyezik e CONTAINS_HOST: Tartalmazást vizsgál DBMS_NETWORK_ACL_UTILITY: IPv4-nél DOMAINS DOMAIN_LEVEL

A hálózati kapcsolatok és domain jogosultságok ellenőrzése Csak az admin jogosult DBA_NETWORK_ACLS nézet megmutatja, hogy mely ACL van jelen az adott kiszolgáló gépen

A hálózati kapcsolatok és domain jogosultságok ellenőrzése Felhasználók számára: USER_NETWORK_ACL_PRIVILEGES Elrejti az ACL-t, megmutatja mely hálózatok elérhetők, vagy tiltottak a felhasználó számára