RĪGAS TEHNISKĀ UNIVERSITĀTE
Automātikas un Skaitļošanas tehnikas fakultāte
Sistēmu teorijas un projektēšanas katedra
Lielas datu bāzes
2. praktiskais darbs
Oracle un Access datu bāzu vadības sistēmu
tiesību vadības struktūru un komandu
izpēte un salīdzinājums
Izstrādāja: Raivis
Sudārs
Paraksts
Pieņēma: doc.
Eiduks
Paraksts
Datums 7.11.99
Tiesības
Konfidencialitāte
ir tiesības izpildīt īpašu veidu SQL vaicājumus vai iegūt pieeju cita lietotāja
objektiem. Daži tiesību piemēri sekojošas tiesības:
·
tiesības piekļūt datubāzei (izveidot sesiju). Tas ir nepieciešams, lai
nodrošinātos pret citiem lietotājiem, kuri varētu šo datubāzi sabojāt.
·
Tiesības izveidot tabulu. Tas ir vajadzīgs, lai lietotāji nepiesārņotu
datubāzes vidi ar dažādām nepilnīgām tabulām, kuras aizņem vietu un traucē
normālu darbu.
·
Tiesības atlasīt rindas no citu lietotāju tabulām. Šāda tiesību iespēja ir
ļoti svarīga, jo ir jānodrošina datu konfidencialitāte, kā arī starp noteiktiem
lietotājiem ir jānodrošina grupas darbs.
·
Tiesības izmantot cita lietotāja izveidotu vai glabātu procedūru. Šī
iespēja padara neizdevīgu informācijas dublēšanu procedūru formātā, kā arī
nodrošina efektīvāku kopdarbu.
Jebkuras tiesības
var piešķirt citiem lietotājiem, lai tie varētu veikt savus pienākumus. Protams
tiesības var Piešķirt arī vienam lietotājam. Taču pārmērīga nevajadzīgu
privilēģiju piešķiršana var novest pie neliela haosa. Jebkurš lietotājs var
saņemt privilēģijas divos veidos:
·
ir iespēja tieši piešķirt tiesības lietotājam. Šis ir tiešs un ātrs
variants.
·
Tiesības var piešķirt arī lomai, kura pēc būtības ir tiesību grupa. Šo lomu
var savukārt piešķirt vienam vai vairākiem lietotājiem, veidojot daba grupu ar
vienādām tiesībām. Lomas būtībā ir labāk vadāmas, jo tās lietojam var piešķirt
jebkurā laikā, un, izveidojot lomas, tiesības nekļūst uzreiz aktīvas, kā tas ir
tiešās piešķiršanas rezultātā.
Runājot par tiesībām var izdalīt divas tiesību
kategorijas – sistēmas un objektu privilēģijas.
Sistēmas tiesības atļauj izpildīt īpašas darbības vai
izpildīt īpašas darbības ar īpašu objekta tipu. Tādas tiesības ir lietotāju
pievienošana vai dzēšana, kā arī, piemēram, jaunu tabulu izveidošana. Var
izdalīt diezgan daudz šādu privilēģiju, piemēru, kuras būtībā ir tieši
atkarīgas no aparatūras iespējām.
Sistēmas
privilēģijas var piešķirt gan tieši lietotājiem, gan arī piešķirt tās
izmantojot lomas. Loma ir ērti lietot, ja ir jāvada sistēmas parametru procesi.
Sistēmas privilēģijas var piešķirt vai atņemt, lietojot sekojošus paņēmienus:
·
Pārrakstot lietotāja vai lomu servera vadītāja (manager)
katalogus
·
Lietojot SQL komandas GRANT un REVOKE.
Būtībā
sistēmas tiesības vajag piešķirt tikai administratīvajam personālam un
lietojumprogrammu izstrādātājiem. Parastiem lietotājiem sistēmas tiesības nav īpaši
nozīmīgas.
Lietotāji, kuriem ir īpaša sistēmas privilēģija – ADMIN
OPTION vai GRANT ANY PRIVILEGIE, var piešķirt vai atņemt tiesības citiem
lietotājiem. Tas ir svarīgi, ja darbam ar datubāzēm tiek izveidota darba grupa
ar darba grupas vadītāju. Vadītājs tad arī var izdalīt vai atņemt tiesības
saviem pakļautajiem darbiniekiem.
Otra
lielākā tiesību grupa ir objekta privilēģijas, kuras veic darbību citā īpašā
tabulā, skatā, rindā procedūrā funkcijā vai paketē. Ierakstu pievienošana vai
dzēšana no parastām tabulām tiek uzskatīta par objektu tiesību. Tomēr ne visiem
datubāzes objektiem (klasteriem, indeksiem trigeriem un datubāzu saitēm) ir
pievienoto objektu tiesības. Šo objektu lietojums tiek kontrolēts ar sistēmas
tiesībām. Lai izmainītu tabulu, ņemot vērā šīs ierakstu īpatnības, ir jāizmanto
komanda ALTER PRIVILEGY.
Objekta tiesības var izveidot tabulai
skatam virknei procedūrai funkcijai vai paketēm, kuras lieto atsaucoties uz
bāzes objekta vārdu vai lietoto sinonīmu. Ja sinonīms tiek dzēsts visas tiesības
paliek objektam, uz kuru sinonīms attiecās.
Objekta
tiesības var būt piešķirtas vai atņemtas no lietotājiem vai likumiem. Ja tiek
piešķirtas tiesības lomām, ir iespējas izveidot izvēles tiesības – no tiesību
sagataves. Objekta tiesības tiek lietotas, lai izvēles veidā piešķirtu vai
atņemtu tiesības. Tiesības var piešķirt vai atņemt ar komandām – REVOKE un
GRANT.
Lomas
Oracle
programma nodrošina vienkāršu un ērtu kontrolēto tiesību vadību, lietojot
lomas. Lomas ir nosauktas piesaistīto privilēģiju grupas, kuras var piesaistīt
gan lietotājiem, gan citām lomām. Tās palīdz administratoram ērti vadīt tiesību
piešķiršanu. Lomas nevar izmantot lietojumprogrammu izstrādātāji, jo lomas uz
dažādām tiesībām ir jāpiešķir tieši, izmantojot datu bāzes administratora
pārvaldības iespējas. Lomu lietošanai ir sekojošas priekšrocības:
·
Ievērojama privilēģiju pārvaldības darba vienkāršošanās.
Ar vienu lomu var piešķirt tiesības vairākiem lietotājiem, kas ir ļoti
izdevīgi.
·
Dinamiska tiesību vadība. Ja grupai ir nepieciešams vadīt
tiesības, tad ļoti ērti ir mainīt tiesības lomai. Drošības domēns tiesību
maiņas gadījumā izmaina tiesības katram lietotājam atsevišķi.
·
Tiesību izvēles brīvība. Lomām var piešķirt jebkādas
tiesības un tās var pēc vēlēšanās pielikt vai noņemt no lietotājiem. Tas atļauj
kontrolēt situāciju jebkurā esošā situācijā.
·
Pielietošana lietojumprogrammās. Datu vārdnīcas, uz
kuriem attiecas lomas, bieži tiek izmantotas dažādas programmās. Tas nozīmē to,
ka programmētājs var izstrādāt tiesībām atbilstošus vaicājumus un automātiski
aktivizēt vai neaktivizēt dažādas lomas. Lomas tiek piesaistītas programmētāja
lietotājvārdam (username)
·
Lietojumprogrammas īpašā drošība. Lomas lietošanu var
aizsargāt ar paroli. Ja parole ir nepareiza, tad loma netiek piešķirta un tas
nozīmē, ka lietotājs nevar lietot lomu, ja nav zināma parole.
Būtībā
lomas tiek lietotas diviem galvenajiem mērķiem – datubāzu lietojumprogrammu un
lietotāju grupu tiesību vadīšanai. Tas ir labi redzams sekojošajā attēlā.
1. attēls
Pēc
attēla var noteikt, ka:
1.
Lomas var piešķirt sistēmas vai objekta privilēģijas
2.
Lomu var piešķirt citām lomām, taču lomu nevar piešķirt
sev, kā arī piešķiršanas procesā nevar veidot ciklus.
3.
Jebkuru lomu var piešķirt datubāzes lietotājam.
4.
Lomas var pieslēgt un atslēgt no lietotāja. Atslēgto lomu
tiesības netiek pievienotas lietotāja tiesībām. Šī iespēja nodrošina ērtu
tiesību vadību.
5. Netieši piesaistītās tiesības (piešķirtās lomas
apakšloma) arī var atslēgt vai pieslēgt lietotājam, taču apakšlomas atslēgšana
attiecas uz visām apakšlomām.
Piešķirt
un aizliegt lomas var sekojošos veidos:
1.
Izmantojot ADD ROLE TO USER DIALOG BOX UN REMOVE
PRIVILEGIES FROM ROLE SERVER MANAGER dialoga loga;
2.
Izmantojot SQL komandas Grant un Revoke.
Tiesību
piešķiršanu var veikt tikai tie lietotāji, kuriem ir GRANT ANY ROLE vai ADMIN
OPTION tiesības. Tiesību piešķiršanu vajag krietni pārdomāt, jo no tās būs
tieši atkarīga darba efektivitāte (Būs aizsardzība pret lietotāju
administrēšanas kļūdām).
Izveidojot
lomas, katrai no tām ir jābūt ar unikālu vārdu, jo lomas tiek glabātas kopējā
atmiņas struktūrā. Tas nodrošina lomu eksistenci arī tad, ja lietotājs, kurš
izveidojis šo lomu, tiek nodzēsts.
Katrai
lomai ir savs drošības domēns, kas nosaka, ko lietotājs vai loma drīkst darīt.
Ja domēns tiek pārkāpts, tad sistēma paziņo par pārkāptām tiesībām un komandu
neizpilda. Piešķirot lomu lietotājam lomas domēns tiek pievienots lietotāja
domēnam. Tas nozīmē to, ka lietotājs ir ieguvis lomas tiesības. Piešķirot lomu
ar public komandu – lomas domēns tiek pievienots visiem lietotāju domēniem.
Tiesību manipulēšanas komandas
Šajā
shēmā ir attēlota Grant komanda, kura atļauj izpildīt dažādas sistēmas
privilēģijas. Šādu komandu drīkst izpildīt lietotājs, ja viņam ir piešķirtas
tiesības piešķirt sistēmas tiesības ar komandām – GRANT ANY PRIVILEGY vai WITH
ADMIN OPTION. Ja šādu tiesību nav tad citiem piešķirt tiesības nevarēs.
Komandas grafiskā struktūra ir redzama šajā attēlā:
![]() |
2. attēls
Komandu
un mainīgo skaidrojums:
Sistem_priv
– kāda noteikta sistēmas privilēģija.
Role
– kāda loma.
TO –
kam tiek piešķirta privilēģija.
User
– lietotājs, kuram piešķir tiesības.
Role
– loma, kurai piešķir tiesības
PUBLIC
– komanda, kura norāda, ka tiesības tiek piešķirtas visiem lietotājiem.
WITH
ADMIN OPERATION – atļauj piešķirt tiesības citiem lietotājiem
Ja
tiesības tiek piešķirta lietotājam, tad šī iespēja tiek pievienota lietotāja
tiesību domēnam, un lietotājs var piešķirtās tiesības tūlīt izmantot.
Līdzīgi,
ja tiesības tiek piešķirtas lomai, tad tās tiek pievienotas lomas tiesību
domēnam. Ja loma ir piešķirta kādam lietotājam, tad tiesības stājas spēkā
nekavējoties. Ja loma nav piešķirta lietotājiem, tad neviens lietotājs nevar
izmantot piešķirtās tiesības.
Ja
tiesības tiek piešķirtas kā public, tad katra lietotāja tiesību domēnam tiek
piešķirta noteiktā tiesība. Respektīvi visiem lietotājiem tiek piešķirta dotā
privilēģija.
Ja
lietotājiem tiek piesaistīta loma, tad lietotājs pārmanto visas lomas tiesības
un tās var arī uzreiz izmantot.
Ja
loma tiek piesaistīta citai lomai, tad lomu tiesības tie apvienotas (Lomai,
kurai tika veikta piesaiste iegūst piesaistītās lomas īpašības.). Ja
piešķiršanas īpašība ir public, tad lomas tiesības būs pieejamas citām lomām.
Lomu
piešķirot ar komandu public, tā tiek piešķirta visiem lietotājiem.
Piešķirot
lomas programma pārbauda vai tās neveido ciklus (Piemēram, nevar izveidot šādu
vienas lomas piešķiršanas ciklu - Priekšnieks ® Klients
& Klients ® Priekšnieks),
tomēr lomu var piešķirt sev.
Lomās parasti kā
tiesības piešķir sistēmas privilēģijas, kuras visas ir uzskaitītas:
ALTER
ANY CLUSTER, ALTER ANY INDEX, ALTER ANY PROCEDURE, ALTER ANY ROLE, ALTER ANY
SEQUENCE, ALTER ANY TABLE, ALTER ANY TRIGGER, ALTER DATABASE, ALTER RESOURCE
COST, ALTER ROLLBACK SEGMENT, ALTER SESSION, ALTER SYSTEM, ALTER TABLESPACE,
ALTER USER, ANALYZE ANY, AUDIT ANY, AUDIT SYSTEM, BACKUP ANY TABLE, BECOME
USER, COMMENT ANY TABLE, CREATE ANY CLUSTER, CREATE ANY TABLE, CREATE USER, CREATE
VIEW, DELETE ANY TABLE, DROP ANY CLUSTER, DROP ANY INDEX, DROP ANY PROCEDURE,
DROP ANY ROLE, DROP ANY SEQUENCE, DROP ANY SNAPSHOT, DROP ANY SYNONYM, DROP ANY
TABLE, DROP ANY TRIGGER, DROP ANY VIEW, DROP PROFILE, DROP PUBLIC DATABASE
LINK, DROP PUBLIC SYNONYM, DROP ROLLBACK SEGMENT, DROP TABLESPACE, DROP USER,
EXECUTE ANY PROCEDURE, FORCE ANY TRANSACTION, FORCE TRANSACTION,GRANT ANY PRIVILEGE, GRANT ANY ROLE, INSERT ANY TABLE,
LOCK ANY TABLE, MANAGE TABLESPACE, READUP, RESTRICTED SESSION, SELECT ANY SEQUENCE,
SELECT ANY TABLE, UNLIMITED TABLESPACE, UPDATE ANY TABLE, WRITEDOWN, WRITEUP.
Izveidojot
datubāzi dažas tiesības tiek piešķirtas pašā sākumā. Tas nodrošina normālu
darbu ar tikko izveidotu datubāzi
1.
tabula. Sākumā piešķirtās lomas.
Loma
Connect atbild par datubāzes struktūrelementu izveidošanu, Resurce – par resursiem
un datu apstrādi, DBA – par administratora tiesībām, kā arī par datu importu un
eksportu, ko nodrošina IMMP_FULL_DATABASE un EXP_FULL_DATABASE lomas.
Otra
komandas GRANT forma attiecas uz datubāzes objektu privilēģijām. Lai varētu šo
komandu izmantot, ir jābūt piešķirtai tiesībai – GRANT OPTION. Šī īpašība tiek
iegūta arī piešķirot DBA lomu.
Objektu
tiesību Grant komandas sintakse ir redzama sekojošā attēlā.
3. attēls
![]() |
Object_priv
– norāda, kura objekta privilēģija tiek piešķirta. Šeit ir iespējamas sekojošas
komandas – ALTER, DELETE, EXECUTE, INDEX, INSERT, REFERENCES, SELECT UN UPDATE.
ALL
[PRIVILEGIES] – norāda, ka tiek piešķirtas visas privilēģijas.
Colomn
– norāda, uz kuru kolonnu attiecas piešķirtā tiesība. Ja kolonna nav uzrādīta,
tad tiesības tiek attiecinātas uz visām kolonnām. INSERT, UPDATE, REFERENCES
tiesībām ir jānorāda tikai kolonna.
ON –
norada objektu (table, view, sequence, procedure, function, package, function,
snapshots), kuram tiks attiecināta noteiktā privilēģija
TO –
uz kādu objektu tiek attiecināta GRANT komanda. User - uz lietotāju, Role – uz
lomu, Public – uz visiem lietotājiem.
WITH GRANT OPTION – atļauj lietotājam piešķirt
tiesības citiem darbiniekiem.
KATRĀ OBJEKTĀ IR
IEKĻAUTAS NOTEIKTAS TIESĪBAS, PIEMĒRAM, Tabulas objektā ir pēc noklusēšanas
tiek piešķirtas ALTER, DELETE, INDEX, INSERT, REFERENCES, SELECT, UPDATE
tiesības. Savas tiesības ir arī skatiem (View), rindām (Sequences), procedūrām,
funkcijām un paketēm. Šīs tiesības ir uzskatāmi attēlotas tabulā.
Komanda
Revoke atņem tiesības lietotājiem. Šī komanda atbild par datu drošību, kā arī
atļauj dzēst kļūdas, kuras ir radušās izpildot operāciju GRANT. Revoke var
izpildīt, ja lietotājam ir sekojošas tiesības – ADMIN OPTION vai GRANT ANY
ROLE.
![]() |
Komandas
struktūras shēma ir redzama šajā attēlā.
4. attēls
Sistem_priv
– sistēmas privilēģija, kuru vajag nodzēst no lietotāja tiesību domēna.
Role
– loma, kuras lietošana ir jāaizliedz lietotājam.
From
– nosaka lietotājus vai lomas, no kurām tiks dzēstas norādītās tiesības. Ja
komanda ir Public, tad tiesības tiks dzēstas no visiem lietotājiem.
Revoke
komanda var tikai dzēst tiesības, kuras ir piešķirtas caur GRANT komandu. Ar
REVOKE komandu nevar veikt sekojošas operācijas:
·
dzēst tiesības vai lomas, kuras nav domātas atņemšanai;
·
atcelt lomas, kuras ir piešķīrusi operāciju sistēma;
·
atcelt tiesības vai lomas, kuras ir piešķirtas caur
lomām.
Sisēmas
privilēģiju nevar uzstādīt vairāk kā vienu reizi, tāpēc revoke komandu nevar
pielietot vairāk par vienu reizi FROM user [role] daļā.
Otrs
komandas REVOKE variants atņem tiesības objektiem. Lai komandu varētu izmantot,
tad ir jābūt tiesībām, kuras ir iedalītas ar komandu GRANT.
REVOKE
komand
![]() |
as
grafiskā struktūra
5. attēls
Object_priv
– tiesība vai tiesību kopa, kura ir jāatceļ. Šeit ir iespējamas sekojošas
komandas – ALTER, DELETE, EXECUTE, INDEX, INSERT, REFERENCES, SELECT UN UPDATE.
ALL
[PRIVILEGIES] – norāda uz visām tiesībām, kuras ir iespējams atcelt.
ON –
nosaka objektu, kuram tiek atņemtas noteiktās tiesības (table, view, sequence,
procedure, function, package, function, snapshots).
FROM
– nosaka objektu, no kura tiks dzēstas tiesības.
Role
– lomas nosaukums.
User
– lietotāja nosaukums.
Public
– dzēš tiesības visiem lietotājiem, kuriem ir spēkā noteiktā privilēģija.
CASCADE
CONSTRINTS – dzēš tiesību visā tiesību kokā. Lomas var būt pakļautas citām
lomām un tā tālāk. Es saprotu, ja pielieto šo komandu, tad noteiktā tiesība
tiek izdzēsta no šīs koka struktūras
Ja
tiek atceltas objekta tiesības, ko agrāk lietotājs piešķīris vai izpildījis
definējot objektu vai atsauksmes integritāti, tiek izsaukti sekojoši
blakusefekti:
1.
Ja tiek atceltas tiesības lietotājam, kurš šīs tiesības
ir piešķīris citam lietotājam vai lomai, tad tiek atceltas tiesības arī otrajam
lietotājam vai lomai.
2.
Ja tiesība tiek atcelta un tā tiek izmantota SQL
vaicājumu, procedūras, funkciju vai procedūru darbībām, tad šie objekti vairs
netiks korekti izpildīti (tiks rādīts ziņojums par kļūdu).
3.
Ja atceltā privilēģija tiek izmantota skatā, tad skatoties
šo skatu, sistēma paziņo par kļūdu.
4.
Ja tiek atcelta REFERENCES tiesība no lietotāja, kurš ir
izmantojis tiesības definējot piespiesto atsauksmes integritātes, tad vajag
noteikt REVOKE komandā CASCADE CONSTRINTS komandu. Tiesību grupa vai tiesība
tiks dzēsta.
Oracle
7 datubāzes vadības sistēmas tiesību struktūra sastāv no divu veidu
privilēģijām. Vienu grupu sauc par sistēmas, bet otru – par objektu tiesībām.
Sistēmas
tiesību būtība ir vadīt un uzturēt datubāzes fiziskos parametrus, lai būtu iespējams
normāls darbs. Sistēmas tiesības tieši atbild par datubāzes objektu
papildināšanu, dzēšanu, izveidošanu, un citām operācijām, kuras attiecas uz šo
objektu fizisko struktūru.
Objektu tiesībām ir citi mērķi. Šīs
tiesības atbild par datu drošību, galvenokārt par pieejamību. Tas nodrošina
datubāzēs esošās informācijas aizsardzību no citiem lietotājiem vai
konkurentiem. Gan sistēmas, gan objekta tiesības var piešķirt tieši lietotājam.
Šīs tiesības būtībā ir nelieli
pamatakmeņi, uz kuriem tiek būvētas sarežģītākas struktūras – lomas. Lomas ļauj
ērti strukturizēt vajadzīgās privilēģijas un tās piešķirt vajadzīgajiem
lietotājiem. Lomās var izmantot tikai viena tipa– objekta vai sistēmas
tiesības. Lomas var būt dažādas un tām var piešķirt citas lomas, kurām varētu
būt piešķirtas vēl citas lomas. Lomas tiek piešķirtas lietotājam, vai citām
lomām.
Tiesības var pievienot vai atcelt ar
komandām – GRANT un REVOKE. Objektu un sistēmas tiesību piešķiršanas vai
atcelšanas komandas ir sintaktiski nedaudz atšķirīgas, tomēr būtībā ir ļoti
līdzīgas. Izmantojot komandu Revoke ir jāizvairās no “blakusefektiem” (kļūdām).
Vislabākais risinājums sakarā ar šo problēmu ir rūpīgs tiesību izplānojums,
kurš ir jāveic ļoti rūpīgi.
Nav komentāru:
Ierakstīt komentāru