GRANT, REVOKE un DENY datu bāzes atļaujas
Datu kontroles valoda (DCL) ir Structured Query Language (SQL) apakšgrupa un ļauj datu bāzes administratoriem konfigurēt drošības piekļuvi relāciju datubāzēm. Tas papildina datu definēšanas valodu (DDL), ko izmanto, lai pievienotu un izdzēstu datu bāzes objektus, un datu manipulācijas valodu (DML), ko izmanto datubāzes satura ielādēšanai, ievietošanai un modificēšanai.
DCL ir vienkāršākais no SQL apakšgrupām , jo tas sastāv tikai no trim komandām: GRANT, REVOKE un DENY. Apvienojot šīs trīs komandas, administratori var elastīgi noteikt un noņemt datu bāzu atļaujas ārkārtīgi detalizētā veidā.
Atļaujas pievienošana ar GRANT komandu
GRANT komandu izmanto administratori, lai pievienotu jaunas atļaujas datu bāzes lietotājam . Tam ir ļoti vienkāršs sintakse, kas definēts šādi:
GRANT [privilēģija] ON [object] TO [user] [WITH GRANT OPTION]Tālāk ir aprakstīts katrs parametrs, ko varat piegādāt ar šo komandu:
- Privilēģija var būt vai nu atslēgvārds ALL (piešķirt dažādas atļaujas), vai arī īpaša datubāzes atļauja vai atļauju kopums. Piemēri ir CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE un CREATE VIEW.
- Objekts var būt jebkurš datu bāzes objekts. Derīgās privilēģiju opcijas atšķiras atkarībā no datubāzes objekta veida, kuru iekļaujat šajā klauzulā. Parasti objekts būs vai nu datu bāze, funkcija, glabātā procedūra , tabula vai skats.
- Lietotājs var būt jebkurš lietotājs no datubāzes. Jūs varat arī aizstāt lietotāja lomu šajā klauzulā, ja vēlaties izmantot lomu bāzes datubāzes drošību.
- GRANT komandas beigās iekļaujot izvēles rūtiņu WITH GRANT OPTION , jūs ne tikai piešķirat norādītajam lietotājam SQL noteiktajām atļaujām, bet arī piešķirsiet lietotājam iespēju piešķirt šīs pašas atļaujas citiem datu bāzes lietotājiem. Šī iemesla dēļ rūpīgi izmantojiet šo klauzulu.
Piemēram, pieņemsim, ka vēlaties piešķirt lietotājam Joe iespēju atgūt informāciju no darbinieku tabulas datubāzē ar nosaukumu HR. Jūs varētu izmantot šādu SQL komandu:
PIEVIENOTIES uz HR.employees TO JoeJoe tagad varēs iegūt informāciju no darbinieku galda. Tomēr viņš nevarēs piešķirt citiem lietotājiem atļauju iegūt informāciju no šīs tabulas, jo jūs GRANT paziņojumā neiekļāva klauzulu AR GRANT OPTION.
Atcelt piekļuvi datubāzei
REVOKE komanda tiek izmantota, lai noņemtu pieeju datubāzei no lietotāja, kas iepriekš ir piešķīrusi šādu piekļuvi. Šīs komandas sintakse ir definēta šādi:
REVOKE [PIEŠĶIRŠANAS VEIDS] [atļauja] ON [object] FROM [user] [CASCADE]Tālāk ir aprakstīts par REVOKE komandas parametriem:
- Atļauja norāda datubāzes atļaujas, kas jānoņem no identificētā lietotāja. Komanda atceļ gan GRANT un DENY apgalvojumus, kas iepriekš veikti par identificēto atļauju.
- Objekts var būt jebkurš datu bāzes objekts. Derīgās privilēģiju opcijas atšķiras atkarībā no datubāzes objekta veida, kuru iekļaujat šajā klauzulā. Parasti objekts būs vai nu datu bāze, funkcija, glabātā procedūra, tabula vai skats.
- Lietotājs var būt jebkurš lietotājs no datubāzes. Jūs varat arī aizstāt lietotāja lomu šajā klauzulā, ja vēlaties izmantot lomu bāzes datubāzes drošību.
- Priekšlikuma GRANT DARBĪBA noņem noteiktā lietotāja spēju piešķirt norādīto atļauju citiem lietotājiem. Piezīme . Ja REVOKE paziņojumā iekļaujat GRANT OPTION FOR klauzulu, primārā atļauja netiek atsaukta. Ar šo klauzulu tiek atcelta tikai piešķiršanas iespēja.
- Ar CASCADE opciju arī tiek atsaukta norādītā atļauja no visiem lietotājiem, kurus norādītais lietotājs piešķīra atļauju.
Piemēram, šāda komanda atceļ atļauju, kas piešķirta Joe iepriekšējā piemērā:
Atcelt izvēli HR.employees NO JoeSkaidri liedzot piekļuvi datu bāzei
DENY komanda tiek izmantota, lai skaidri aizliegtu lietotājam saņemt konkrētu atļauju. Tas ir noderīgi, ja lietotājs ir kādas lomas vai grupas dalībnieks, kuram piešķirta atļauja, un jūs vēlaties, lai šis atsevišķais lietotājs netiktu mantojis atļauju, izveidojot izņēmumu. Šīs komandas sintakse ir šāda:
DENY [atļauja] ON [object] TO [user] DENY komandas parametri ir identiski tiem, kurus izmanto GRANT komandai.
Piemēram, ja jūs vēlētos nodrošināt, ka Matthew nekad nesaņems iespēju dzēst informāciju no darbinieku galda, izdod šādu komandu: