"Access Controls for Users" ir "SQL" vaidmenys

Saugumas yra ypač svarbus duomenų bazių administratoriams, siekiantiems apsaugoti savo gyvybiškai svarbių verslo duomenų gigabaitus iš neįsivaizduojamų pašalinių asmenų ir savininkų, kurie bando viršyti jų įgaliojimus, žvilgsniais akimis. Visos reliacinės duomenų bazių valdymo sistemos suteikia tam tikrų vidinių apsaugos mechanizmų, skirtų šioms grėsmėms sumažinti. Jos apima paprastą apsaugą slaptažodžiu, kurį siūlo " Microsoft Access " sudėtingos vartotojo / vaidmenų struktūros, kurią palaiko pažangios reliacinės duomenų bazės, tokios kaip "Oracle" ir " Microsoft SQL Server". Šiame straipsnyje daugiausia dėmesio skiriama saugumo sistemoms, bendroms visoms duomenų bazėms, įgyvendinančioms struktūrizuotų užklausų kalbą (arba SQL ). Kartu mes susisteminsime duomenų prieigos kontrolės stiprinimą ir užtikrinsime jūsų duomenų saugumą.

Vartotojai

Serverio pagrindu veikiančios duomenų bazės remia vartotojo koncepciją, panašią į tą, kuri naudojama kompiuterių operacinėse sistemose. Jei esate susipažinę su vartotojo / grupės hierarchija, esančia "Microsoft Windows NT" ir "Windows 2000", jūs pastebėsite, kad "SQL Server" ir "Oracle" palaikomos vartotojo / vaidmenų grupės yra labai panašios.

Labai rekomenduojama, kad kiekvienam asmeniui, kuris pateks į jūsų duomenų bazę, sukursite atskiras duomenų bazės naudotojų paskyras. Techniškai galima paskirstyti paskyras tarp vartotojų arba paprasčiausiai naudoti vieną vartotojo abonementą kiekvienam naudotojo tipui, kuriam reikia prieigos prie jūsų duomenų bazės, tačiau aš labai atsisakiu šios praktikos dėl dviejų priežasčių. Pirma, tai pašalins atskirą atskaitomybę - jei naudotojas pakeis jūsų duomenų bazę (tarkim, suteikiant sau 5000 JAV dolerių vertės padidinimą), negalėsite atsekti to konkrečiam asmeniui per audito žurnalus. Be to, jei tam tikras naudotojas palieka jūsų organizaciją ir norite pašalinti jo arba jos prieigą iš duomenų bazės, jums reikės pakeisti slaptažodį, kurį visi naudotojai naudoja.

Vartotojo sąskaitų kūrimo metodai skiriasi nuo platformos iki platformos, todėl tikslios procedūros metu turite susipažinti su savo DBVS dokumentais. "Microsoft SQL Server" vartotojai turėtų ištirti saugomos procedūros sp_adduser naudojimą. Oracle duomenų bazių administratoriai naudos CREATE USER komandą. Taip pat galbūt norėsite ištirti alternatyvias autentifikavimo schemas. Pavyzdžiui, "Microsoft SQL Server" palaiko "Windows NT Integrated Security" naudojimą. Pagal šią schemą vartotojai identifikuojami į duomenų bazę savo "Windows NT" vartotojo abonementuose ir jiems nereikia įvesti papildomo vartotojo vardo ir slaptažodžio, kad galėtumėte pasiekti duomenų bazę. Šis metodas yra itin populiarus tarp duomenų bazių administratoriams, nes jis keičia paskyros valdymo naštą tinklo administravimo darbuotojams ir leidžia lengvai prisijungti prie galutinio vartotojo.

Vaidmenys

Jei esate aplinkoje su nedideliu naudotojų skaičiumi, tikriausiai pastebėsite, kad naudotojų paskyrų kūrimas ir tiesioginių teisių suteikimas jiems yra pakankamas jūsų poreikiams. Tačiau, jei turite daug naudotojų, labiausiai tikėtina, kad bus apsunkintas paskyros ir tinkamų leidimų išlaikymo prievolė. Siekiant palengvinti šią naštą, santykinės duomenų bazės palaiko vaidmenų sąvoką. Duomenų bazės roles veikia panašiai kaip "Windows NT" grupės. Vartotojų paskyros priskiriamos vaidmeniui (-ams), o prieigos teisės priskiriamos prie viso vaidmens, o ne atskirų naudotojų paskyrų. Pvz., Galėtume sukurti DBA vaidmenį ir tada pridėti administravimo personalo naudotojų paskyras prie šio vaidmens. Kai tai padarysime, galime suteikti konkretų leidimą visiems dabartiniams (ir būsimiems) administratoriams, tiesiog priskirsdami leidimą atlikti vaidmenį. Vėlgi, vaidmenų kūrimo procedūros skiriasi nuo platformos iki platformos. MS SQL Server administratoriai turėtų ištirti saugomą procedūrą sp_addrole, o "Oracle" DBA turėtų naudoti CREATE ROLE sintaksę.

Leidimų suteikimas

Dabar, kai pridėjome naudotojų į mūsų duomenų bazę, laikas pradėti stiprinti saugumą, pridedant leidimus. Mūsų pirmasis žingsnis - suteikti naudotojams tinkamas duomenų bazės teises. Mes tai atliksime naudodamiesi SQL GRANT teiginiu.

Štai pareiškimo sintaksė:

GRANT <įgaliojimai>
[ON

]
TO
[SU DOTACIJOS PARINKIMU]

Dabar pažvelkime į šį teiginį iš eilės. Pirmoji eilutė, GRANT leidžia mums nurodyti konkrečius lentelių leidimus, kuriuos mes suteikiame. Tai gali būti arba lentelės lygio leidimai (pvz., SELECT, INSERT, UPDATE ir DELETE) arba duomenų bazės leidimai (pvz., CREATE TABLE, ALTER DATABASE ir GRANT). Viename GRANT pareiškime gali būti suteiktas daugiau nei vienas leidimas, tačiau stalo lygio leidimai ir duomenų bazės lygio leidimai negali būti sujungti į vieną pareiškimą.

Antroji eilutė, ON

, naudojama norint nurodyti lentelės lygio leidimus paveiktą lentelę. Ši eilutė yra praleista, jei mes suteikiame duomenų bazės lygio leidimus. Trečioje eilutėje nurodomas naudotojas ar vaidmuo, kuriam suteikiami leidimai.

Galiausiai, ketvirta eilutė su GRANT OPTION yra neprivaloma. Jei ši eilutė yra įtraukta į pareiškimą, paveiktam vartotojui taip pat leidžiama suteikti tuos pačius leidimus kitiems naudotojams. Atkreipkite dėmesį, kad su GRANT OPTION negalima nurodyti, kai leidimai priskiriami vaidmeniui.

Pavyzdžiai

Pažvelkime į keletą pavyzdžių. Pagal mūsų pirmąjį scenarijų neseniai pasamdėme 42 duomenų įvedimo operatorių grupę, kuri papildys ir tvarkys klientų įrašus. Jiems turi būti suteikta galimybė gauti informaciją lentelėje "Klientai", keisti šią informaciją ir pridėti naujus įrašus į lentelę. Jie neturėtų galėti visiškai ištrinti įrašo iš duomenų bazės. Pirma, mes turime sukurti naudotojų paskyras kiekvienam operatoriui ir tada visus juos pridėti prie naujo "DataEntry" vaidmens. Be to, turėtume naudoti tokį SQL, suteikdami jiems atitinkamus leidimus:

GRANT SELECT, INSERT, UPDATE
ON klientams
Į DataEntry

Ir visa tai yra! Dabar pažvelkime į atvejį, kai priskiriame duomenų bazės lygio leidimus. Mes norime leisti DBA nariams pridėti naujas lenteles į mūsų duomenų bazę. Be to, mes norime, kad jie galėtų suteikti kitiems naudotojams leidimą daryti tą patį. Štai SQL užrašas:

DOTACIJOS KŪRIMO LENTELĖ
DBA
SU DOTACIJOS PARINKIMU

Atkreipkite dėmesį, kad mes įtraukėme eilutę SU GRANT OPTION, kad užtikrintume, jog mūsų DBA gali suteikti šį leidimą kitiems naudotojams.

Pašalinti leidimus

Kai mes suteikiame leidimus, dažnai paaiškėja, kad juos reikia atšaukti vėliau. Laimei, SQL suteikia mums REVOKE komandą pašalinti anksčiau suteiktus leidimus. Štai sintaksė:

ATŠAUKTI [DOTACIJOS PARAIŠKĄ] <įgaliojimai>
ON


FROM

Jūs pastebėsite, kad šios komandos sintaksė yra panaši į komandą GRANT. Vienintelis skirtumas yra tas, kad su GRANT OPTION yra nurodytas REVOKE komandų eilutėje, o ne komandos pabaigoje. Pavyzdžiui, įsivaizduosime, kad norime panaikinti anksčiau suteiktą Marijos leidimą pašalinti įrašus iš Klientų duomenų bazės. Mes norėtume naudoti šią komandą:

ATŠAUKTI DELETE
ON klientams
Iš Marijos

Ir visa tai yra! Yra vienas papildomas "Microsoft SQL Server" palaikomas mechanizmas, kurį verta paminėti - komanda DENY. Ši komanda gali būti naudojama siekiant aiškiai paneigti naudotojui suteiktą leidimą, kurį jie galbūt gal ÷ tų tur ÷ ti dabartine arba būsima naryst ÷ s forma. Štai sintaksė:

DENY
ON


TO

Pavyzdžiai

Grįžtant prie ankstesnio pavyzdžio, įsivaizduokime, kad Marija taip pat buvo valdytojų vaidmens, kuris taip pat turėjo prieigą prie lentelės "Klientai", narys. Ankstesnio REVOKE pareiškimo nepakaks, kad būtų uždrausta jos prieiga prie stalo. Ji pašalintų jai suteiktą leidimą, pateiktą GRANT pareiškimu, nukreiptu į jos vartotojo paskyrą, bet neturėtų įtakos leidimams, kuriuos įgijo dėl jos narystės vadovų vaidmenyje. Tačiau, jei mes naudojame DENY pareiškimą, tai blokuos jos paveldėjimą leidimu. Štai komanda:

DENY DELETE
ON klientams
Marijai

DENY komanda iš esmės sukuria "neigiamą leidimą" duomenų bazės prieigos valdikliuose. Jei vėliau nuspręstume suteikti Marijai leidimą pašalinti eilutes iš lentelės "Klientai", mes negalime paprasčiausiai naudoti GRANT komandą. Tą komandą iš karto pakeis dabartinis DENY. Vietoj to, mes pirmiausia naudosime komandą REVOKE, kad pašalintume neigiamą leidimo įrašą taip:

ATŠAUKTI DELETE
ON klientams
Iš Marijos

Pastebėsite, kad ši komanda yra tokia pati kaip ir teigiamo leidimo pašalinimas. Nepamirškite, kad komandos DENY ir GRANT dirba panašiai * mdash; jos abu kuria leidimus (teigiamus arba neigiamus) duomenų bazės prieigos kontrolės mechanizme. "REVOKE" komanda pašalina visus teigiamus ir neigiamus leidimus nurodytam naudotojui. Kai ši komanda bus išduodama, Marija galės ištrinti eilučių iš lentelės, jei ji yra tokio leidimo turinčio vaidmens narys. Arba gali būti išduodama GRANT komanda, suteikianti DELETE leidimą tiesiai į jos sąskaitą.

Viso šio straipsnio metu jūs sužinojate daug dalykų apie prieigos kontrolės mechanizmus, kuriuos palaiko standartinė užklausų kalba. Šis įvadas turėtų suteikti jums gerą pradinį tašką, tačiau raginu jus nurodyti savo DBVS dokumentaciją, norint sužinoti sustiprintas jūsų sistemos palaikomas saugumo priemones. Jūs pastebėsite, kad daugelis duomenų bazių palaiko labiau pažengusius prieigos kontrolės mechanizmus, pvz., Suteikiant leidimus konkrečiose stulpeliuose.