Kõik suhtelised andmebaaside haldussüsteemid pakuvad mingisuguseid sisemisi turvamehhanisme, mis on loodud andmete kadumise, rikutuse või varguse ohtude minimeerimiseks. Need ulatuvad pakutavast lihtsast paroolikaitsest Microsoft Access keerukale kasutaja / rollistruktuurile, mida toetavad täiustatud relatsioonilised andmebaasid nagu Oracle jaMicrosoft SQL Server. Mõned turvamehhanismid on kõigile andmebaasi rakendavatele andmebaasidele ühisedStruktureeritud päringukeel.
Kasutaja taseme turvalisus
Serveripõhised andmebaasid toetavad a kasutaja sarnane mõiste, mida kasutatakse arvuti opsüsteemides. Kui olete tuttav kasutajast / rühmast pärit hierarhiaga, mis on leitud Microsoft Windows NT ja Windows 2000 leiate, et kasutajate / rollide rühmitused, mida SQL Server ja Oracle toetavad, on sarnased.
Looge individuaalsed andmebaasi kasutajakontod iga inimese jaoks, kellel on juurdepääs teie andmebaasile.
Vältige mitme inimese juurdepääsetavate üldiste kontode eraldamist. Esiteks välistab see tava individuaalse vastutuse - kui kasutaja muudab teie andmebaasi (ütleme nii, et) andes endale 5000 dollari suuruse tõusu), ei saa te auditi abil seda konkreetsele inimesele jälitada palgid. Teiseks, kui konkreetne kasutaja lahkub teie organisatsioonist ja soovite tema juurdepääsu andmebaasist eemaldada, peate muutma parooli, millele kõik kasutajad toetuvad.
Kasutajakontode loomise meetodid on platvormiti erinevad ja täpse protseduuri saamiseks peate lugema oma DBMS-i spetsiifilist dokumentatsiooni. Microsofti SQL Serveri kasutajad peaksid uurima sp_adduser salvestatud protseduur. Oracle'i andmebaasi administraatorid leiavad LOE KASUTAJA käsk kasulik. Samuti võiksite uurida alternatiivseid autentimisskeeme. Näiteks toetab Microsoft SQL Server Windows NT integreeritud turvalisuse kasutamist. Selle skeemi järgi tuvastatakse kasutajad andmebaasis nende Windows NT kasutajakontode järgi ja neil pole andmebaasile juurdepääsu saamiseks vaja sisestada täiendavat kasutajatunnust ja parooli. See lähenemine on andmebaaside administraatorite seas populaarne, kuna see muudab kontode koormust haldamine võrgu haldustöötajatele ja see tagab lihtsa ühekordse sisselogimise lõppkasutaja.
Rollitaseme turvalisus
Kui olete väikese kasutajate arvuga keskkonnas, leiate tõenäoliselt, et kasutajakontode loomine ja neile otse õiguste määramine on teie vajaduste jaoks piisav. Kui teil on aga palju kasutajaid, on teil kontode ja nõuetekohaste lubade säilitamine rabatud. Selle koormuse leevendamiseks toetavad relatsioonide andmebaasid rollid. Andmebaasirollid toimivad sarnaselt Windows NT rühmadele. Kasutajakontod määratakse rollile (rollidele) ja seejärel määratakse õigused rollile tervikuna, mitte üksikute kasutajakontodele. Näiteks võite luua DBA-rolli ja seejärel lisada sellele rollile oma halduspersonali kasutajakontod. Pärast seda saate määrata kõigile praegustele (ja tulevastele) administraatoritele konkreetse loa, määrates lihtsalt rollile loa. Taas korduvad rollide loomise protseduurid platvormiti. MS SQL Serveri administraatorid peaksid seda uurima sp_addrole salvestatud protseduur, samas kui Oracle'i DBA-d peaksid seda kasutama LOE ROLL süntaks.
Lubade andmine
Nüüd, kui oleme oma andmebaasi kasutajad lisanud, on aeg hakata turvalisust tugevdama õiguste lisamisega. Meie esimene samm on anda kasutajatele asjakohased andmebaasiload. Selle saavutame SQL GRANT-i lause abil.
Siin on lause süntaks:
GRANT.
[PEAL.
TO.
[TOETUSVÕIMALUSEGA]
Vaatame nüüd seda avaldust rea kaupa. Esimene rida GRANT , võimaldab meil täpsustada konkreetseid tabeli lubasid, mida me anname. Need võivad olla kas tabelitasandi õigused (näiteks SELECT, INSERT, UPDATE ja DELETE) või andmebaasi load (näiteks CREATE TABLE, ALTER DATABASE ja GRANT). Ühes GRANT-lauses saab anda rohkem kui ühe loa, kuid tabelitaseme ja andmebaasitaseme õigusi ei tohi ühes avalduses kombineerida.
Teine rida, PEAL
Lõpuks neljas rida, TOETUSVÕIMALUSEGAon valikuline. Kui see rida avalduses sisaldub, on mõjutatud kasutajal lubatud anda samad õigused ka teistele kasutajatele. Pange tähele, et valikut WITH GRANT ei saa määrata, kui õigused on rollile määratud.
Näited andmebaasitoetustest
Vaatame mõnda näidet. Oma esimese stsenaariumi korral palkasime hiljuti 42 andmesisestaja operaatori rühma, kes lisavad ja haldavad klientide andmeid. Nad peavad pääsema juurde tabeli Kliendid teabele, seda teavet muutma ja lisama tabelisse uusi kirjeid. Nad ei peaks suutma kirjet andmebaasist täielikult kustutada.
Esiteks peaksime looma iga operaatori jaoks kasutajakontod ja seejärel lisama need kõik uude rolli, Andmesisestus. Järgmisena peaksime neile sobivate õiguste andmiseks kasutama järgmist SQL-lauset:
GRANT VALI, INSERT, UPDATE.
ON klientidele.
TO DataEntry.
Uurime nüüd juhtumit, kus määrame andmebaasitaseme õigused. Soovime lubada DBA-rolli liikmetel lisada meie andmebaasi uusi tabeleid. Lisaks soovime, et nad saaksid anda teistele kasutajatele loa sama teha. Siin on SQL-lause:
TOETUSE LOOMISTABEL.
DBA-le.
TOETUSVÕIMALUSEGA.
Pange tähele, et oleme lisanud rea KASUTA VÕIMALUSEGA tagamaks, et meie DBA-d saaksid selle loa teistele kasutajatele määrata.
Lubade eemaldamine
SQL sisaldab käsku REVOKE, et eemaldada varem antud õigused. Siin on süntaks:
TÜHISTA [TOETUSE VÕIMALUS]
PEAL.
PÄRAST.
Märkate, et selle käsu süntaks sarnaneb käsu GRANT omaga. Ainus erinevus on see, et WITH GRANT OPTION on määratud käsureal REVOKE, mitte käsu lõpus. Näiteks kujutame ette, et tahame tühistada Mary varem antud loa klientide andmebaasist kirjete eemaldamiseks. Kasutaksime järgmist käsku:
TÜHISTA KUSTUTA.
ON klientidele.
Maarjast.
Microsoft SQL Server toetab veel ühte lisamehhanismi, mida tasub mainida - käsk DENY. Selle käsu abil saab selgesõnaliselt keelata kasutajale loa, mis tal muidu võib olla praeguse või tulevase rolliliikme kaudu. Siin on süntaks:
KEELA.
PEAL.
TO.