Professional Documents
Culture Documents
06 Sigurnost Baza Podataka - 1. Dio
06 Sigurnost Baza Podataka - 1. Dio
Sveučilište u Zagrebu
Fakultet elektrotehnike i računarstva
slobodno smijete:
dijeliti — umnožavati, distribuirati i javnosti priopćavati djelo
remiksirati — prerađivati djelo
pod sljedećim uvjetima:
imenovanje. Morate priznati i označiti autorstvo djela na način kako je
specificirao autor ili davatelj licence (ali ne način koji bi sugerirao da Vi ili
Vaše korištenje njegova djela imate njegovu izravnu podršku).
nekomercijalno. Ovo djelo ne smijete koristiti u komercijalne svrhe.
dijeli pod istim uvjetima. Ako ovo djelo izmijenite, preoblikujete ili
stvarate koristeći ga, preradu možete distribuirati samo pod licencom
koja je ista ili slična ovoj.
U slučaju daljnjeg korištenja ili distribuiranja morate drugima jasno dati do znanja licencne uvjete
ovog djela. Najbolji način da to učinite je linkom na ovu internetsku stranicu.
Od svakog od gornjih uvjeta moguće je odstupiti, ako dobijete dopuštenje nositelja autorskog prava.
Ništa u ovoj licenci ne narušava ili ograničava autorova moralna prava.
Tekst licencije preuzet je s http://creativecommons.org/.
2 / 75
Sadržaj
3 / 75
Baze podataka i sustavi za upravljanje
bazama podataka
Baza podataka i sustav za upravljanje bazama podataka
baza podataka
skup podataka koji su pohranjeni i organizirani tako da mogu zadovoljiti zahtjeve korisnika.
(M. Vetter)
skup međusobno povezanih podataka, pohranjenih zajedno, uz isključenje bespotrebne
zalihosti (redundancije), koji mogu zadovoljiti različite primjene. Podaci su pohranjeni na
način neovisan o programima koji ih koriste. Prilikom dodavanja novih podataka, mijenjanja i
pretraživanja postojećih podataka primjenjuje se zajednički i kontrolirani pristup. Podaci su
strukturirani tako da služe kao osnova za razvoj budućih primjena. (J. Martin)
sustav za upravljanje bazom podataka (SUBP) - programski sustav koji:
omogućava upravljanje podacima u bazi podataka
može istovremeno upravljati s više baza podataka
upravlja istovremenim pristupom bazi podataka od strane više korisnika/aplikacija uz
osiguravanje sigurnosti i integriteta baze podataka
temelji se na odabranom modelu podataka (hijerarhijski, mrežni, relacijski, objektno-
relacijski, objektno-orijentirani)
5 / 75
Zadaće SUBP-a
fizički opis
trajna pohrana podataka (persistent storage)
skriva od korisnika detalje fizičke pohrane podataka
osigurava logičku i fizičku nezavisnost podataka
osiguravanje programskog sučelja (programming interface)
SUBP
omogućuje definiciju i rukovanje s podacima
DDL - Data Definition Language
DML - Data Manipulation Language
logički opis
optimiranje metoda pristupa podacima (query optimization)
zaštita podataka aplikacijski programer
integritet podataka (integrity)
pristup podacima - autorizacija, sigurnost (security)
potpora za upravljanje transakcijama
kontrola paralelnog pristupa (concurrency control)
obnova u slučaju razrušenja (recovery)
6 / 75
Komponente SUBP-a
Client Communications DBMS
Manager
Shared Components
Query Parser
module
Authorization
Query Rewriter Process Manager
Query Optimizer
Memory Manager
Plan Executor
Catalog Manager
Execution Engine
Transaction Manager
Scheduler
Data Manager
Administration,
Lock Manager Recovery Manager Monitoring, Utilities
Storage
7 / 75
SUBP kao komponenta složenijih sustava
DML DDL
DBMS
Korisnici
pristupaju bazi tako da postavljaju upite, mijenjaju podatke i izrađuju izvještaje
različite skupine korisnika:
korisnici koji povremeno pristupaju bazi koristeći upitni jezik
korisnici koji često koriste bazu postavljajući standardne upite i radeći standardne promjene
koristeći programirana sučelja (npr. službenici u banci, turističkim agencijama...)
sofisticirani korisnici koji su dobro upoznati s bazom podataka i koriste je na složeniji način (npr.
inženjeri, znanstvenici, poslovni analitičari)
8 / 75
Administratori
9 / 75
Relacijski model podataka
klijentska
aplikacija
klijentska
aplikacija SUBP klijentska
aplikacija
12 / 75
Sigurnost i zaštita baza podataka
Primjeri narušavanja sigurnosti podataka (1)
2000 - CD Universe - online prodaja glazbenog sadržaja - ukradeni brojevi kreditnih kartica kupaca;
nakon odbijanja zahtjeva za plaćanjem, brojevi kreditnih kartica objavljeni na Internetu
prosinac 2000 - Egghead.com - online prodaja - sumnja u krađu više od 3.5 miliona brojeva kreditnih
kartica; skupa istraga i gubitak kupaca dovodi do prestanka poslovanja, iako do upada nije došlo
2001 - Bibliofind, ogranak Amazon.com specijaliziran za rijetke i out-of-print knjige - ukradene
informacije o gotovo 100 000 kreditnih kartica; napadači su imali pristup bazi podataka četiri mjeseca
prije nego što su otkriveni; Bibliofind se više ne bavi prodajom
ožujak 2001 - FBI izvještava da je gotovo 50 banaka i maloprodajnih web stranica napadnuto i
kompromitirano od ruskih i ukrajinskih hakera
studeni 2001 - Playboy.com - ukradene informacije o kreditnim karticama
2001 - Indiana University - dva puta uspješno napadnut, ukradeni osobni podaci (social security
numbers i adrese)
2002 - Evans Data provodi istraživanje tržišta - uključeno 750 kompanija, 10% baza podataka je imalo
sigurnosni incident u 2001; "neautorizirani pristup i kvarenje podataka" prijavilo je više od 40% banaka i
firmi koje pružaju financijske usluge, 8% firmi koje pružaju zdravstvenu zaštitu
listopad 2004 - kompromitirana baza podataka s osjetljivim informacijama o više od 1,4 milijuna
stanovnika Kalifornije uključenih u In-Home Supportive Services (IHSS) program od 2001. Podaci su
bili korišteni u UC Berkeley studiji o kućnoj njezi (imena, adrese, SSN, datumi rođenja)
14 / 75
Primjeri narušavanja sigurnosti podataka (2)
prosinac 2010 - Gawker Media - izgubljeno približno 1,5 milijuna zapisa o korisničkim računima - napad
je uslijedio nakon izjave o neprobojnosti njihove zaštite
travanj 2011 - Epsilon Interactive (e-mail marketing) - krađa osobnih podataka milijuna kupaca (e-mail
adrese) za najmanje 50 klijenata, uključujući JPMorgan Chase, Capital One, Marriott Rewards, US Bank,
Citi, Ritz-Carlton Rewards, Walgreens, The College Board, Home Shopping Network
2006-2009 - Federal Student Aid Division, Department of Education, Dolton, Ill - nelegalan pristup
National Student Loan Database System-u od strane zaposlenice
rujan 2010 - TSS of San Juan (HMO koji djeluje pod upravom Puerto Rico’s health insurance plan) -
neotkriveni konkurent dobiva pristup bazi podataka TSS članica korištenjem važećih vjerodajnica -
izgubljeni osobni podaci među gotovo 400.000 kompromitiranih zapisa - kaznom od 100.000 dolara
prosinac 2010 - Mesa County, Western Colorado Drug Task Force - 200.000 zapisa s imenima,
telefonskim brojevima i brojevima socijalnog osiguranja policijskih informatora (narkotici) dostupno na
Web-u - pogreška administratora sustava
ožujak 2012 - Global Payments (posrednik za između trgovina i kartičnih kuća) - pogođeni MasterCard,
Visa, American Express i Discover Financial Services, banke - ukradeni podaci o 1,5 miliona računa
(neki izvori govore o 10 miliona kartica)
15 15 / 75
Sigurnost baze podataka (1)
16 / 75
Sigurnost baze podataka (2)
Defense-in-depth strategija
zaštita u više slojeva
ne postoji savršeni zaštitni sloj, metoda ili
proizvod
baza podataka
proboj jednog sloja ne mora značiti i narušavanje
sigurnosti podataka iz baze podataka
SUBP
nužna zaštita unutar baze podataka, čak i ako je
aplikacija
implementiran poseban sustav zaštite baze
OS
podataka izvan baze podataka
mreža
17 / 75
Sigurnost baze podataka (3)
18 / 75
Načelo najmanje ovlasti i razdvajanje dužnosti
19 / 75
Mehanizmi zaštite na razini SUBP
maskiranje podataka
20 / 75
Integritet i sigurnost baze podataka
Pojmovi integritet i sigurnost baze podataka se često spominju zajedno, međutim radi se o dva
različita aspekta zaštite podataka
Integritet baze podataka (database integrity) - operacije nad podacima koje korisnici obavljaju
su ispravne (tj. uvijek rezultiraju konzistentnim stanjem baze podataka)
• "podaci se štite od ovlaštenih korisnika"
Sigurnost baze podataka (database security) - korisnici koji obavljaju operacije nad podacima
su ovlašteni za obavljanje tih operacija
• "podaci se štite od neovlaštenih korisnika"
21 / 75
Dokazivanje autentičnosti
korisnik
novak
22 / 75
IBM Informix: Dokazivanje autentičnosti (1)
interna autentikacija
lozinka pohranjena u poslužitelju baze podataka (sysIntAuthUsers tablica sysUser baze
podataka) - šifrirana SHA-256 algoritmom (Secure Hash Algorithm)
operacijski sustav
posebni moduli (autentikacijski slojevi), npr:
Pluggable Authentication Modules (PAM)
• za IBM Informix na UNIX i Linux OS
• API za upravljanje autentikacijom, korisničkim računima, sjednicama i lozinkama
Lightweight Directory Access Protocol (LDAP) Authentication Support za Windows
• za autentikaciju korisnika koristi se LDAP poslužitelj
23 / 75
IBM Informix: Dokazivanje autentičnosti (2)
24 / 75
Oracle: Zaštita lozinki (1)
automatsko i transparentno šifriranje lozinke prije slanja preko mreže; Advanced Encryption
Standard (AES)
pohrana lozinki šifriranih SHA-1 algoritmom (Secure Hash Algorithm 1)
provjera složenosti lozinke
sprječavanje probijanja lozinke u slučaju višekratnih neuspjelih pokušaja prijave
ograničavanje broja neuspješnih pokušaja prijave
postepeno povećavanje vremena prije ponovnog pokušaja prijave - smanjenje broja
pokušaja
isključivanje korisničkog računa
zadnja promjena prva prijava
istek
lozinke nakon perioda
lozinke
trajanja lozinke
25 / 75
Oracle: Zaštita lozinki (2)
26 / 75
Kontrola pristupa
Kontrola pristupa
niz postupaka kojima se utvrđuje i evidentira pokušaj pristupa, te odobrava ili odbija pristup na
temelju unaprijed utvrđenih pravila
razvoj sustava za kontrolu pristupa - višefazni proces
sigurnosna politika - pravila pristupa na visokoj razini
• temeljena na načelu treba-znati (need-to-know), kompetentnosti, nadležnosti, sukobu interesa…
• na nju mogu utjecati zakonska i etička pitanja, politike na državnoj ili korporativnoj razini …
• dinamična - mijenja se u skladu s promjenama poslovnih faktora, regulativa i uvjeta u okruženju
• problem preslikavanja nejasnih i dvosmislenih zahtjeva u dobro definirana i jednoznačna pravila
sigurnosni model - formalni prikaz sigurnosne politike
• diskrecijska kontrola pristupa (discretionary access control - DAC)
• mandatna kontrola pristupa (mandatory access control - MAC)
• kontrola pristupa temeljena na ulogama (role-based access control - RBAC)
sigurnosni mehanizam - funkcije kojima je implementirana kontrola pristupa
28 / 75
Mehanizmi kontrole pristupa
referentni monitor (reference monitor) - pouzdana komponenta koja kontrolira svaki pokušaj
pristupa objektu sustava i utvrđuje je li taj pristup u skladu sa sigurnosnom politikom utjelovljenom
u bazi podataka kontrole pristupa
uspoređuje sigurnosne atribute korisnika (npr. identifikator korisnika, grupa kojoj korisnik
pripada, razina povjerenja iskazana korisniku) s onima koje imaju resursi (npr. oznaka
osjetljivosti)
Audit
Referentni
Subjekti Objekti
monitor
Baza podataka
kontrole pristupa
29 / 75
Elementi sustava za kontrolu pristupa
subjekt – aktivni entitet koji može inicirati zahtjev za obavljanje operacija na objektima
proces koji djeluje u ime korisnika
korisnik može imati više aktivnih subjekata
30 / 75
Elementi sustava za kontrolu pristupa - dozvola
klasični pristupi kontroli pristupa:
zatvorena politika - dozvoljen pristup za koji postoji (pozitivna) dozvola
otvorena politika - uskraćen pristup za koji postoji (negativna) dozvola
• ako dozvola ne postoji, pristup je dozvoljen
Način ograničavanja pristupa objektima na temelju identiteta subjekata i/ili grupa kojoj oni pripadaju.
Kontrole su diskrecijske u smislu da je subjekt s nekom dozvolom pristupa sposoban dati tu dozvolu
(možda indirektno) nekom drugom subjektu (osim ako to nije ograničeno s MAC-om).
[US Department of Defense, Trusted Computer Security Evaluation Criteria (TCSEC), DoD
5200.28-STD, 1985]
33 / 75
Matrica autorizacijskih pravila (Matrica pristupa)
u2 read
u3 read execute
34 / 75
System R model (1)
36 / 75
Diskrecijska kontrola pristupa u bazama podataka
podržana SQL standardom
podržana u većini današnjih SUBP
određenom korisniku potrebno je eksplicitno dodijeliti dozvolu za obavljanje određene operacije
nad određenim objektom (autorizacija)
dozvole su opisane trojkama <korisnik, objekt, vrsta operacije>, npr:
<horvat, ispit, čitanje>
<horvat, ispit, izmjena>
<novak, predmet, čitanje>
podaci o dodijeljenim dozvolama pohranjuju se u rječnik podataka
prije obavljanja svake operacije, SUBP provjerava ima li korisnik dozvolu za obavljanje operacije
nad objektom (kontrola pristupa)
kada korisnik novak pokuša obaviti operaciju čitanja objekta (relacije) predmet, SUBP
provjerava postoji li dozvola u obliku trojke <novak, predmet, čitanje>
Diskrecijska kontrola pristupa
Ako postoji
Zahtjev za pristupom <s, o, p> Pristup dozvoljen
(s, o, p) tada
inače Pristup odbijen
37 / 75
Kontrola pristupa u SQL-u
Mehanizmi kontrole pristupa
naredbe za dodjeljivanje (GRANT) i ukidanje dozvola (REVOKE)
virtualne relacije (view)
pohranjene procedure
modifikacija upita
Objekti
relacija (tablica, table)
atribut (stupac tablice, column)
virtualna relacija (pogled, view)
pohranjena procedura
baza podataka (neki sustavi, npr. IBM Informix)
39 / 75
IBM Informix: Vrste dozvola na razini baze podataka
CONNECT uspostavljanje SQL-sjednice i obavljanje operacija nad objektima za koje je
korisnik dobio dozvolu od vlasnika objekta ili je njihov vlasnik, kreiranje virtualnih i
privremenih relacija
RESOURCE CONNECT + kreiranje novih objekata u bazi podataka (relacija, indeksa,
ograničenja, pohranjenih procedura …)
DBA RESOURCE + neovisno o vlasništvu i dozvolama nad objektima u bazi podataka:
sve vrste operacija nad svim objektima, uništavanje svih objekata (uključujući i
bazu podataka)
korisnik koji kreira bazu podataka je vlasnik te baze podataka i implicitno dobiva
DBA (Database administrator) dozvolu
Primjer:
DBA GRANT DBA TO u1; nema učinka dodjeljivanje RESOURCE dozvole korisniku
GRANT RESOURCE TO u1; koji već ima DBA dozvolu - korisnik u1 i dalje ima DBA
dozvolu
REVOKE DBA FROM u1; ukidanjem DBA dozvole, korisnik i dalje ima CONNECT dozvolu
REVOKE CONNECT FROM u1; za sprečavanje uspostavljanja SQL-sjednice potrebno je ukinuti i
CONNECT dozvolu
40 / 75
IBM Informix: Vrste dozvola na razini [virtualne] relacije
SELECT [(columnList)] čitanje n-torki (ili vrijednosti navedenih atributa) [virtualne] relacije
UPDATE [(columnList)] izmjena n-torki (ili vrijednosti navedenih atributa) [virtualne] relacije
INSERT unos n-torki [virtualne] relacije
DELETE brisanje n-torki [virtualne] relacije
REFERENCES [(columnList)] korištenje relacije (ili samo navedenih atributa) kao pozivane
relacije pri definiranju stranog ključa)
INDEX kreiranje indeksa nad relacijom
ALTER izmjena strukture relacije i definiranje integritetskih ograničenja
ALL PRIVILEGES sve vrste operacija nad [virtualnom] relacijom
41 / 75
"korisnik" PUBLIC
Primjer: pretpostavlja se da za relaciju stud do sada nije dodijeljena niti jedna dozvola.
Korisnicima horvat, novak, kolar, petrak, treba dodijeliti CONNECT dozvolu, te svim navedenim
korisnicima osim novaku dodijeliti dozvolu za pregled relacije stud. Pogrešno je rješenje:
GRANT CONNECT TO horvat, novak, kolar, petrak;
GRANT SELECT ON stud TO PUBLIC;
-- uočite: prethodna naredba nije isto što i
-- GRANT SELECT on stud TO horvat, novak, kolar, petrak
REVOKE SELECT ON stud FROM novak;
svaki korisnik (sadašnji ili budući, uključujući korisnika novak) koji uspostavi SQL-sjednicu s bazom
podataka (uz prethodnu ovjeru autentičnosti) može obavljati operaciju SELECT nad relacijom mjesto
Ispravno rješenje: GRANT CONNECT TO horvat, novak, kolar, petrak;
GRANT SELECT ON stud TO horvat, kolar, petrak;
42 / 75
Dodjeljivanje prenosivih dozvola
opcija WITH GRANT OPTION - korisnik kojem je dozvola dodijeljena uz navođenje te opcije,
može tu dozvolu dodjeljivati ostalim korisnicima (unatoč tome što nije vlasnik objekta)
Primjer:
CREATE TABLE ispit (...);
korisnik1 GRANT SELECT ON ispit TO korisnik2 WITH GRANT OPTION;
GRANT SELECT ON ispit TO korisnik3 WITH GRANT OPTION;
GRANT SELECT ON ispit TO korisnik4 WITH GRANT OPTION;
korisnik2
GRANT SELECT ON ispit TO korisnik5;
može obaviti korisnik novak jer je novak korisnik koji je dodijelio dozvolu korisniku kolar
naredbu: REVOKE UPDATE ON mjesto FROM kolar AS novak;
WGO WGO
korisnik2 korisnik4 korisnik6
korisnik1 korisnik5
WGO
dozvolu gube korisnik2, korisnik4 i korisnik6
korisnik3 korisnik5 gubi dozvolu dobivenu od korisnika2, ali
zadržava dozvolu dobivenu od korisnika1
da je u naredbi bila korištena opcija RESTRICT, SUBP bi odbio obaviti naredbu (bila bi
dojavljena pogreška)
45 / 75
IBM Informix: Dodjeljivanje i ukidanje dozvola - primjer (1)
korisnik bpadmin mora kreirati bazu podataka studAdmin i relacije student i ispit, te dodijeliti
dozvole korisnicima:
horvat kreiranje novih objekata (kako bi mogao kreirati relaciju zupanija)
pregled svih podataka u relacijama student i ispit
unos, izmjena, brisanje svih podataka u relaciji ispit
novak pregled svih podataka u relaciji student
izmjena poštanskog broja i adrese u relaciji student
kolar pregled svih podataka u relaciji student, osim adrese
STUDENT= {matBr, ime, prez, pbr, adresa}
bpadmin naredbe obavlja korisnik bpadmin
CREATE DATABASE studAdmin ... ; GRANT SELECT ON student TO horvat;
CREATE TABLE student (...);
GRANT SELECT, INSERT, UPDATE, DELETE
CREATE TABLE ispit (...);
ON ispit TO horvat;
GRANT RESOURCE TO horvat;
GRANT SELECT ON student TO novak;
GRANT CONNECT TO novak;
GRANT CONNECT TO kolar; GRANT UPDATE(pbr, adresa) ON student TO novak;
GRANT SELECT(matBr, ime, prez, pbr)
ON student TO kolar;
46 / 75
IBM Informix: Dodjeljivanje i ukidanje dozvola - primjer (2)
horvat CREATE TABLE zupanija (…) može jer ima RESOURCE dozvolu
GRANT SELECT, INSERT, UPDATE
ON zupanija TO novak; može jer je vlasnik relacije zupanija
novak SELECT * FROM zupanija; može jer ima barem CONNECT dozvolu te dozvole koje je
INSERT INTO zupanija ...;
dobio od vlasnika relacije zupanija
UPDATE zupanija ...;
DROP TABLE zupanija; ne može jer nije vlasnik objekta niti ima DBA dozvolu
kolar SELECT * FROM zupanija; ne može jer nema SELECT dozvolu za relaciju zupanija
47 / 75
IBM Informix: specifično ponašanje
nakon kreiranja relacije automatski se korisniku PUBLIC dodjeljuju SELECT, INSERT, UPDATE
i DELETE dozvole nad tom relacijom - ako je vrijednost env. varijable NODEFDAC=no
CREATE TABLE stud (...);
REVOKE ALL ON stud FROM PUBLIC;
ne postoji oblik REVOKE naredbe kojom je moguće ukinuti dozvolu nad pojedinim atributima
relacije
Primjer: korisniku horvat treba za relaciju stud dodijeliti dozvolu za pregled svih atributa
osim datuma rođenja. Pogrešno rješenje je:
GRANT SELECT ON stud TO horvat;
REVOKE SELECT(datRod) ON stud FROM horvat;
ne postoji oblik REVOKE naredbe kojom je moguće prenosivu dozvolu preinačiti u neprenosivu
dozvolu (REVOKE GRANT OPTION)
48 / 75
ORACLE: kategorije dozvola
administrator korisniku treba omogućiti pristup instanci SQL Server poslužitelja (CREATE
LOGIN naredbom) te pristup bazi podataka (CREATE USER naredbom), npr:
CREATE LOGIN loginNameU1 WITH PASSWORD = 'ABCxyz' MUST_CHANGE;
USE stuSluBaza;
CREATE USER u1 FOR LOGIN loginNameU1;
50 / 75
SQL Server: negativne dozvole (1)
52 / 75
Virtualna relacija (view)
shema i sadržaj virtualne relacije definirani su izrazom relacijske algebre čiji su operandi
temeljne ili virtualne relacije
opisuju se u obliku SQL upita - naredbom CREATE VIEW
u rječniku podataka pohranjena je definicija virtualne relacije
sadržaj virtualne relacije uvijek odražava sadržaj temeljnih relacija u trenutku izvršavanja
upita u kojem se virtualna relacija koristi
polozeniIspit
CREATE VIEW prosjek (sifPred prosjek
mbr sifPred ocj , prosOcj) AS
100 1001 5 SELECT sifPred, AVG(ocj) sifPred prosOcj
101 1001 4 FROM polozeniIspit 1001 4.00
102 1001 3 GROUP BY sifPred; 1002 3.50
100 1002 2 1003 3.00
101 1002 5
100 1003 3
SELECT MIN(prosOcj) AS minPros
101 1003 3 , MAX(prosOcj) AS maksPros minPros maksPros
FROM prosjek; 3.00 4.00
53 / 75
Implementacija virtualnih relacija
ispit stud
Primjer: mbr predmet ocj mbr ime prez pbrStan
100 Elektronika 3 100 Ivan Kolar 52100
100 Fizika 3 101 Ana Horvat 42230
101 Elektronika 5 102 Jura Novak 52100
101 Fizika 2
studenti koji su položili predmet Fizika
102 Fizika 1
CREATE VIEW polFiz AS
SELECT stud.*, ocj
FROM ispit, stud
korisnik obavlja: WHERE ispit.mbr = stud.mbr
SELECT * FROM polFiz; AND predmet = 'Fizika'
AND ocj > 1;
SUBP modificira upit
55 / 75
Virtualna relacija: INSERT, UPDATE, DELETE
obavljanjem INSERT, UPDATE i DELETE naredbi nad virtualnom relacijom mijenja se sadržaj
temeljnih relacija koje se koriste u definiciji te virtualne relacije (SUBP modificira naredbu)
izmjenjiva (updatable) virtualna relacija - mora biti definirana tako da SUBP može jednoznačno
odrediti koje operacije treba obaviti na temeljnim relacijama
u glavnom SELECT dijelu definicije virtualne relacije koristi atribute iz samo jedne temeljne
relacije r(R) i pri tome:
• ne sadrži eliminaciju duplikata pomoću DISTINCT
• ne sadrži izraze u listi za selekciju (osim trivijalnih izraza koji sadrže samo ime atributa)
• izostavljeni atributi ne smiju imati NOT NULL ograničenje ili moraju imati pretpostavljenu
(default) vrijednost
• ne sadrži spajanje ili uniju
• ne sadrži grupiranje i postavljanje uvjeta nad grupom (GROUP BY i HAVING)
navedena ograničenja se ne odnose na podupite unutar WHERE dijela SELECT naredbe
WITH CHECK OPTION - opcija CREATE VIEW naredbe - nije dozvoljena izmjena ili unos n-torke
putem virtualne relacije ako n-torka nakon obavljanja operacije više ne bi pripadala virtualnoj
relaciji putem koje je izmijenjena ili unesena
56 / 75
Primjena virtualnih relacija u provođenju sigurnosne politike
ovisne o vrijednostima - virtualna relacija sadrži samo neke n-torke iz temeljne relacije
CREATE VIEW studFER (jmbag, imeStudent, prezStudent) AS
SELECT jmbag, imeStudent, prezStudent
FROM student
WHERE matOrgJed = 'FER'
kontekstno ovisne - u definiciji virtualne relacije, kao uvjet dohvata koristi se informacija
vezana uz kontekst prilikom izvođenja upita (korisnik, vrijeme izvođenja upita)
57 / 75
Dodjeljivanje kontekstno ovisnih dozvola
Primjer: ispit nast
mbrSt sifPred datIsp ocj sifNast imeN prezN userId
vlasnik relacija je korisnik horvat
100 100 1.5.2004 3 1001 Slavko Kolar kolar
svakom nastavniku (korisnicima kolar, … … … … … … … …
ban, novak) omogućiti pregled i izmjenu
predaje
ispita samo iz predmeta koje predaju
sifNast sifPred
LOŠE RJEŠENJE! 1001 100
horvat … …
CREATE VIEW kolarIspiti AS ponoviti za svakog nastavnika:
SELECT * FROM ispit
WHERE sifPred IN (SELECT sifPred FROM predaje banIspiti, novakIspiti, ...
WHERE sifNast = 1001) svaki nastavnik upit nad relacijom
WITH CHECK OPTION;
ispit mora pisati na drugačiji način
GRANT SELECT, UPDATE ON kolarIspiti TO kolar;
ISPRAVNO RJEŠENJE!
CREATE VIEW ispitiZaNastavnike AS "sadržaj" virtualne
SELECT * FROM ispit relacije ovisit će o
WHERE sifPred IN (SELECT sifPred FROM predaje, nast
WHERE predaje.sifNast = nast.sifNast
identifikatoru nastavnika
AND userId = USER) WITH CHECK OPTION; koji je ostvario SQL-
GRANT SELECT, UPDATE ON ispitiZaNastavnike TO kolar, ban, novak; sjednicu
58 / 75
Implementacija eksternih shema pomoću virtualnih relacija
59 / 75
Vlasnik virtualne relacije
60 / 75
Oracle Virtual Private Database (VPD)
61 / 75
Oracle Virtual Private Database - primjer (1)
zaposlenik sifra ime odjel placa
Primjer: (koristi se shema u_admin)
1 Osoba1 1 3000
korisniku u1 omogućiti pregled svih zaposlenika
2 Osoba2 1 5000
korisniku u2 omogućiti pregled zaposlenika uz odjela 1 3 Osoba3 2 3500
korisniku u3 omogućiti pregled zaposlenika uz odjela 2 4 Osoba4 2 4500
62 / 75
Oracle Virtual Private Database - primjer (2)
korisnici u1, u2 i u3 obavljaju upit: zaposlenik sifra ime odjel placa
1 Osoba1 1 3000
SELECT * FROM u_admin.zaposlenik
2 Osoba2 1 5000
63 / 75
Oracle Virtual Private Database - primjer (3)
dodatni zahtjev: korisnici u1, u2 i u3 smiju vidjeti samo plaće manje od 4000
definiranje politike pristupa i potrebne pohranjene procedure :
BEGIN CREATE FUNCTION sakrijPlace
SYS.DBMS_RLS.ADD_POLICY ( (v_shema VARCHAR2, v_objekt VARCHAR2)
object_schema => 'u_admin', RETURN VARCHAR2 IS
object_name => 'zaposlenik', BEGIN
policy_name => 'sakrivanjePlaca', RETURN 'placa < 4000';
policy_function => 'sakrijPlace', END;
sec_relevant_cols => 'placa',
sec_relevant_cols_opt => DBMS_RLS.ALL_ROWS);
END; zaposlenik
64 / 75
Pohranjene procedure/funkcije (1)
65 / 75
Pohranjene procedure/funkcije (2)
pohranjena je kao objekt u rječniku baze podataka
izvorni kôd procedure
"izvršni" kôd - unaprijed preveden i optimiran kôd procedure
• postiže se veća učinkovitost SUBP
proizvođači SUBP koriste vlastite inačice jezika za definiranje pohranjenih procedura (standard
postoji, ali je rijetko gdje implementiran)
IBM Informix: SPL (Stored Procedure Language)
Oracle: PL/SQL (Procedural Language/Structured Query Language)
Microsoft SQL Server: Transact-SQL
proširuju mogućnosti SQL jezika proceduralnim elementima koji se koriste u strukturiranim jezicima
(C, Java, ...). Osim SQL naredbi, moguće je korištenje varijabli, naredbi za kontrolu toka programa (if,
for, while, ...), naredbi za rukovanje iznimkama (exception handling) …
postiže se veća produktivnost programera i smanjuje mogućnost pogreške
programski kôd potreban za obavljanje nekog postupka koji čini logičku cjelinu implementira se i
testira na samo jednom mjestu
66 / 75
Primjena pohranjenih procedura u provođenju sigurnosne politike
SQL omogućuje zaštitu podataka od neovlaštene uporabe na razini objekata (relacije, atributi,
virtualne relacije)
korisniku se može ograničiti pristup do pojedinih objekata i vrsta operacije koju nad tim
objektima može obaviti (brisanje, izmjena, unos, dohvat)
nije moguće ograničiti način na koji će korisnik obavljati operacije za koje je dobio dozvolu
67 / 75
Dozvole za pohranjene procedure/funkcije
68 / 75
IBM Informix: SPL - Primjer
Korisnik novak je službenik u banci kojem je potrebno omogućiti obavljanje isključivo jedne
vrste bankovne transakcije: prebacivanje iznosa s jednog na drugi račun
racun brRacun stanje CREATE PROCEDURE prebaci (saRacunaBr LIKE racun.brRacun
1001 1250.15 , naRacunBr LIKE racun.brRacun
, iznos LIKE racun.stanje)
1002 -300.00
-- provjeri postoje li zadani brojevi računa
1003 10.25 IF (SELECT COUNT(*) FROM racun
WHERE brRacun = saRacunaBr) = 0 THEN
zadatak se ne može riješiti RAISE EXCEPTION -746, 0, 'Ne postoji prvi račun';
dodjelom dozvole za obavljanje END IF
IF (SELECT COUNT(*) FROM racun
operacije UPDATE nad relacijom WHERE brRacun = naRacunBr) = 0 THEN
racun korisniku novak (zašto?) RAISE EXCEPTION -746, 0, 'Ne postoji drugi račun';
END IF
-- prenesi zadani iznos
novak UPDATE racun SET stanje = stanje - iznos
WHERE brRacun = saRacunaBr;
UPDATE racun UPDATE racun SET stanje = stanje + iznos
SET stanje = stanje - 60.30 WHERE brRacun = naRacunBr;
WHERE brRacun = 1001; END PROCEDURE;
[Error] No UPDATE permission GRANT EXECUTE ON prebaci TO novak;
• korisnik mora imati DBA dozvolu na razini baze podataka da bi mogao kreirati DBA
privileged proceduru
Primjer: korisnik kolar kreira proceduru procx i želi korisniku petrak (koji nema DBA dozvolu)
dozvoliti izvođenje procedure (uz NODEFDAC = no):
CREATE PROCEDURE procx ()
... CREATE DBA PROCEDURE procx ()
END PROCEDURE; ...
END PROCEDURE;
REVOKE EXECUTE ON procx FROM PUBLIC; GRANT EXECUTE ON procx TO petrak;
GRANT EXECUTE ON procx TO petrak;
71 / 75
IBM Informix: Ovlasti procedure za vrijeme izvođenja (1)
A. owner privileged procedura
• procedura koristi sve ovlasti:
• korisnika koji je proceduru pokrenuo i
• ovlasti koje ima vlasnik procedure, za koje vlasnik procedure ima dozvolu za prenošenje
(WITH GRANT)
kolar
Primjer: tabA - novak ima dozvolu CREATE PROCEDURE procx ()
koristi tabA, tabB, tabC
tabB - kolar ima dozvolu WITH GRANT END PROCEDURE;
tabC - kolar ima dozvolu REVOKE EXECUTE ON procx FROM PUBLIC;
GRANT EXECUTE ON procx TO novak;
novak
EXECUTE PROCEDURE procx () • procedura uspješno koristi tabA jer novak ima "svoju" dozvolu
• procedura uspješno koristi tabB jer vlasnik procedure kolar
ima prenosivu dozvolu, koja se privremeno prenosi na novaka
• procedura ne može koristiti tabC, jer novak nema dozvolu, a
dozvola koju ima vlasnik procedure kolar nije prenosiva
72 / 75
IBM Informix: Ovlasti procedure za vrijeme izvođenja (2)
novak EXECUTE PROCEDURE procx(); • novak će bez smetnji moći obaviti proceduru bez
obzira na svoje dozvole nad tabA i tabB
ako horvat umjesto DBA procedure, kreira user privileged proceduru kojoj je vlasnik kolar,
novak za njeno uspješno obavljanje:
• mora imati vlastite dozvole za tabA i tabB, ili
• vlasnik procedure kolar mora imati dozvole s mogućnošću prenošenja za tabA i tabB
74 / 75
Oracle: Ovlasti procedure za vrijeme izvođenja