[ vbvlada @ 24.10.2009. 16:05 ] @
Ako ovoj temi nije mesto ovde, neka se slobodno premesti.
Želim da čujem mišljenje kako bih obezbedio da se neki record u bazi potpiše i zaključa na neki način.

Konkretno, recimo da imamo desetine korisnika koji imaju pravo da unose podatke u jednu tabelu, a da su ti podaci osetljivi,
i u principu niko drugi osim njih ne bi mogao da ih menja i briše (čitanje je moguće za sve). U tom skupu korisnika, jedan korisnik ne može da menja i briše
redove nekog drugog korisnika.

Akcije tipa dodeljivanja prava nad tabelom i sve ostale akcije ne dolaze u obzir, znači sve ovo treba da bude nezavisno od
baze koja se koristi, tj. da podaci igraju glavnu ulogu.

Stanje koje želim da postignem je da se ti podaci unesu, osiguraju i da postoji mogućnost otkrivanja da li je neko ko je bez
prava na to, čačkao po njima.
Palo mi je na pamet da se doda neko polje u tabelu koje bi imalo nekakvu kriptovanu informaciju i da se pomoću nje ovo odradi,
ali nemam nikakvu konkretnu ideju.
[ MarkoBalkan @ 24.10.2009. 20:32 ] @
kreiraj tabelu korisnici

u svaku tabelu stavi polje ID_korisnik.

kad Pero unese nešto automatski se u ID_korisnik unese i njegov ID.

kroz aplikaciju samo provjeri od kojeg je korisnika slog ako je njegov dozvoli mu sve, ako nije ne dozvoli.

[ vbvlada @ 26.10.2009. 11:33 ] @
Mislim da situacija nije tako jednostavna, razmisljao sam o nekoj vrsti potpisa unešenog reda.
Recimo da osim tog privilegovanog korisnika imamo još neke obične operatere koji u principu imaju pun pristup
svim tim redovima. Želim da postoji mogućnost da se otkrije da je taj red izmenjen a nije ga izmenio taj privilegovani korisnik.
[ mmix @ 26.10.2009. 12:25 ] @
Mozes ti da uzmes ceo record, da napravis od njega hash (nekom kombinacijom svih polja) i da hash potpises privatnim kljucem korisnika tako da ako neko i izmeni nece moci da reprodukuje potpis istim kljucem. Pod uslovom naravno da ne moze da dodje do kljuca korisnika sto i nije tako lako obezbediti sa sigurnoscu bez nekih varijanti sa smart tokenima ili karticama.

Narafski, baza NECE spreciti neovlascenog korisnika da promeni polja i SQL nece moci da ti verifikuje record tako da ces sve to morati sam rucno da obavljas uklljucujuci i odrzavanja baze javnih kljuceva svih korisnika. Ovo moze i jeste ozbiljan propust u tvom procesu u varijantama kad podaci ne prolaze uvek kroz tvoj aplikativni nivo (npr neki agregatni view nece znati ada su neki podaci neovlasceno menjani). U principu mnogo petljanja za nesto sto moze i mnogo drugacije da se resi tako sto ces se opredeliti za odredjenu SQL platformu.
[ djoka_l @ 26.10.2009. 13:14 ] @
Drugim rečima, treba ti ono što Oracle prodaje kao Label Security.
[ mmix @ 26.10.2009. 14:51 ] @
Samo sa cenom od $11500 (ili $230 po useru) i nije bas "user-friendly" za non-enterprise upotrebu. I mislim da label security nije bas striktno o ovome (osim ako za svaki red ne napravis poseban label sto je onda administrativna nocna mora), njemu vise treba row-level owner based security. Bar sto se oracle-a tice mislim da bi njegovim potrebama bolje resenje bio VPD/RLS, al bar oracle nudi nesto smisleno na tu temu, MSSQL je tu malo zakazao jer koliko vidim ni 2010 (pardon 2008 r2) nece imati row-level security. Doduse ima raznih toolkita po netu ali to je sve emulacija.
[ djoka_l @ 26.10.2009. 15:01 ] @
@mmix Ma sasvim si u pravu, ali moja poenta je bila da je problem o kojem je vbvlada pisao poznat, da za neke platforme postoji gotovo rešenje, ali da to treba masno platiti. Samim tim, ukoliko se ne uloži puno u razvoj, ili u gotovo rešenje, teško da može da se uradi nešto približno onome što postoji kao security feature u nekoj komercijalnoj bazi.