Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ODBC Security - How???

[es] :: Oracle :: ODBC Security - How???

[ Pregleda: 2779 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

noctua

Član broj: 10671
Poruke: 185
*.edn.co.yu.



Profil

icon ODBC Security - How???13.07.2005. u 13:22 - pre 227 meseci
Pozdrav svima!

Imam zanimljiv (citaj OZBILJAN!) security problem u nasledjenoj bazi. Veseli projektant(i) nije predvideo neke posalice... (btw, nije se ni pretrgao od projektovanja!)
Sve je pocelo kao Access za sitnu upotrebu a onda je vremenom (4-5 godine) preraslo u informacioni Sys koji lezi na Oracle-u. Na taj sistem je "nakaceno" 5-6 web i desktop aplikacija koje nema sanse da se menjaju (ali NEMA SANSE!).

Dakle, situacija je sledeca:

Svi korisnici (stotine) koriste bazu preko izvesne aplikacije.
Postoji tabela sa sledecim kolonama: || id || region || neki_podaci_za_region || jos... ||
U bazi postoje role za svaku grupu korisnika. Grupe imaju prava upisa/pristupa u zavisnosti od geografskih regiona.
Pojedine grupe imaju pravo INSERT/UPDATE na doticnu tabelu.
Prilikom rada sa aplikacijom (logovanjem se bira i region) postoji podatak za region i ne dozvolja se izmena informacija iz "tudjeg" regiona... ali...

Da bi se korisnik ulogovao preko ODBC-a, potrebno je samo username/passwd!

Elem, mozda niste ni razmisljali o tome ali Excel moze da vam pobrise/promeni pola baze! Naime, ukoliko se neko preko ODBC-a nakaci na ORACLE i iz njega skine podatke iz tabela, takodje, uz malo maxinacije kodom, moze i da izvrsene izmene iz Excela prebaci u bazu!

Sad zamislite situacuju (i ja probao!) u kojoj korisnik sa odredjenim pravom se uloguje na ORACLE preko ODBC-a, prebaci sve (!) podatke u Excel, promeni nesto sto nije iz njegovog regiona i lepo to posalje natrag izmenjeno!!!

Kako da resim takvu situaciju? btw, kako resavati ubuduce takve situacije (sa ODBC-om)?
http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

Raspucin

Moderator
Član broj: 20699
Poruke: 216
*.beotel.net.

ICQ: 244452581


+3 Profil

icon Re: ODBC Security - How???15.07.2005. u 14:21 - pre 227 meseci
Jeste da smo se culi telefonom i objasnili kako i sta bi ja uradio, ali evo da kazem i drugima. Ako neko ima bolji predlog (ili jednostavniji) bilo bi lepo da ga saopsti svima.

Posto Oracle ne pravi razliku izmedju klijenata, tacnije, njemu je sve jedno da li je to SQL Plus ili neka aplikacija koja mu pristupa preko ODBC-a. Sto znaci sam security (u ovakvom slucaju) treba da bude u bazi.

Moje resenje za ovakav problem je upotreba DBMS_RLS paketa sa kojim bi se kreirala polisa za svakog korisnika. To bi se postavilo u jednoj proceduri, koja bi se pozivala u AFTER LOGON trigeru. Na ovaj nacin mogu da se zastite podaci u tabeli i da se razgranice. Sa AFTER LOGON trigerom treba biti posebno oprezan jer moze doci do velikih problema ako se ne napise kako treba, npr. da se ni jedan korisnik ne moze loguje na bazu.

Da bi sve ovo radilo kako treba kod u procedurama mora da bude kreiran na odgovarajuci nacin. Svi upiti treba da se kreiraju dinamicki, na primer:

declare
type refCursor is ref cursor;
kursor refCursor;
l_record emp%rowtype;
begin
open kursor for 'select * from emp';
loop
fetch kursor into l_record;
exit when kursor%notfound;
...
end loop;
close kursor ;
end;

umesto neceg ovakvog:

begin
for j in ( select * from emp ) loop
...
end loop;
end;

jer onda ove polise ne mogu da rade.

Ako nekog interesuje kako sve ovo radi to moze da nadje u Oracle-ovoj dokumentaciji.

Pozdrav
 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.edn.co.yu.



Profil

icon Re: ODBC Security - How???01.08.2005. u 07:56 - pre 226 meseci
Pozdrav!

Da citiram kolegu:
Citat:

Raspucin: Jeste da smo se culi telefonom i objasnili kako i sta bi ja uradio, ali evo da kazem i drugima. Ako neko ima bolji predlog (ili jednostavniji) bilo bi lepo da ga saopsti svima.


Elem, evo sta sam ja nasao po tom pitanju:
Od oracle 9 pa nadalje postoji mehanizm VPD (Virtual Private Database) koji je upravo napravljen za resavanje ovakvih problema! A najlepse od svega je sto se moze implementirati na "zivoj" bazi bez menjanja postojeceg koda.
To cudo radi na sl nacin:
select * from neka_tabela se internim mehanizmima pretvara u select * from neka_tabela where user_alow="pera". Projektant treba samo da definise koji su uslovi koje user_alow zadovoljava.
Da ja ne bih ovde vazda pisao primere, lepo odete na oracle.com i trazite VPD... Sve ce vam se samo kasti
http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

[es] :: Oracle :: ODBC Security - How???

[ Pregleda: 2779 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.