Oracle un Access datu bāzu vadības sistēmu tiesību vadības struktūru un komandu izpēte un salīdzinājums


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