GRANT, REVOKE і DENY дазволаў базы дадзеных
Мова кіравання дадзенымі (DCL) з'яўляецца падмноствам Structured Query Language (SQL) і дазваляе адміністратарам баз дадзеных для налады доступу да бяспекі рэляцыйных баз дадзеных. Ён дапаўняе мову вызначэння дадзеных (DDL), які выкарыстоўваецца для дадання і выдалення аб'ектаў базы дадзеных, і мова маніпулявання дадзеных (DML), які выкарыстоўваецца для здабывання, ўстаўкі і змяняць змесціва базы дадзеных.
DCL з'яўляецца самым простым з падмноства SQL , так як яна складаецца з трох каманд: GRANT, REVOKE, і DENY. У сукупнасці гэтыя тры каманды забяспечваюць адміністратарам гнуткасць для ўстаноўкі і выдалення дазволаў базы дадзеных у надзвычай грануляванай форме.
Даданне дазволаў З GRANT Command
Каманда GRANT выкарыстоўваецца адміністратарамі для дадання новых дазволаў для карыстальніка базы дадзеных . Яна мае вельмі просты сінтаксіс, вызначаецца наступным чынам:
GRANT [прывілей] ON [аб'ект] TO [карыстальнік] [WITH GRANT OPTION]Вось кароткі выклад кожнага з параметраў, якія можна паставіць з дапамогай гэтай каманды:
- Прывілей можа быць ключавым словам ALL (падаць шырокі спектр дазволаў) або спецыяльны дазвол базы дадзеных або набор дазволаў. Прыклады ўключаюць CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE і CREATE VIEW.
- Аб'ект можа быць любы аб'ект базы дадзеных. Дапушчальныя варыянты прывілеяў вар'іравацца ў залежнасці ад тыпу аб'екта базы дадзеных, названым у гэтым пункце. Як правіла, аб'ект будзе альбо базы дадзеных, функцыя, захоўваемая працэдура , табліца або прадстаўленне.
- Карыстальнік можа быць любым карыстальнікам базы дадзеных. Вы таксама можаце замяніць ролю для карыстальніка ў гэтым раздзеле, калі вы хочаце выкарыстоўваць на аснове роляў бяспекі баз дадзеных.
- Калі ўключыць дадатковы спецификаторе GRANT OPTION ў канцы каманды GRANT, вы не толькі даць паказаным карыстачу правы доступу , вызначаныя ў аператары SQL , але і даць карыстальніку магчымасць даць тыя ж правы доступу іншых карыстальнікаў базы дадзеных. Па гэтай прычыне, выкарыстоўвайце гэты пункт з асцярогай.
Напрыклад, выкажам здагадку, што вы хочаце, каб даць карыстальніку Джо магчымасць атрымліваць інфармацыю з табліцы супрацоўнікаў у базе даных пад назвай HR. Вы можаце выкарыстоўваць наступную SQL каманду:
GRANT SELECT, НА HR.employees ДжоДжо цяпер будзе мець магчымасць атрымліваць інфармацыю з табліцы супрацоўнікаў. Ён не будзе, аднак, мець магчымасць прадастаўляць іншым карыстальнікам дазволу для атрымання інфармацыі з гэтай табліцы, таму што вы не ўключылі WITH GRANT OPTION пункт ў аператары GRANT.
Ануляванне доступу да баз дадзеных
Каманда REVOKE выкарыстоўваецца для выдалення доступу да базы дадзеных ад карыстальніка, раней прадастаўленага такога доступу. Сінтаксіс гэтай каманды вызначаецца наступным чынам:
REVOKE [GRANT OPTION FOR] [дазволу] ON [аб'екта] з [карыстальнік] [КАСКАД]Вось кароткі выклад аб параметрах каманды REVOKE:
- Дазвол вызначае правы доступу да базе даных , каб выдаліць з ідэнтыфікаванага карыстальніка. Каманда анулюе як GRANT і DENY сцвярджэнні, зробленыя раней для ідэнтыфікаванага дазволу.
- Аб'ект можа быць любы аб'ект базы дадзеных. Дапушчальныя варыянты прывілеяў вар'іравацца ў залежнасці ад тыпу аб'екта базы дадзеных, названым у гэтым пункце. Як правіла, аб'ект будзе альбо базы дадзеных, функцыя, захоўваемая працэдура, табліца або прадстаўленне.
- Карыстальнік можа быць любым карыстальнікам базы дадзеных. Вы таксама можаце замяніць ролю для карыстальніка ў гэтым раздзеле, калі вы хочаце выкарыстоўваць на аснове роляў бяспекі баз дадзеных.
- GRANT OPTION FOR п выдаляе здольнасць названага карыстальніка, каб прадастаўляць гэты дазвол іншым карыстальнікам. Заўвага: Калі вы ўключыце GRANT OPTION FOR агаворкі ў REVOKE заявы, першаснае дазвол ня адмяняецца. Гэты пункт анулюе толькі магчымасць прадастаўлення.
- Опцыя CASCADE таксама адмяняе гэты дазвол ад любых карыстальнікаў, ўказаны карыстальнікам прадастаўлена дазвол.
Напрыклад, наступная каманда анулюе дазвол, прадастаўленае Джо ў папярэднім прыкладзе:
КЕУОКЕ ВЫБАР на HR.employees ад ДжоВідавочны Адмаўляючы доступ да баз дадзеных
Каманда адмаўляў выкарыстоўваецца відавочна забараніць карыстальніку атрымліваць адмысловы дазвол. Гэта карысна, калі карыстальнік з'яўляецца членам ролі або групы, якая атрымала дазволу, і вы хочаце, каб прадухіліць гэта асобны карыстальнік успадкаваць дазволу, ствараючы выключэнне. Сінтаксіс гэтай каманды выглядае наступным чынам:
Забаранілі [дазвол] на [аб'ект] на [карыстальнік] Параметры каманды Deny ідэнтычныя тым, якія выкарыстоўваюцца для каманды GRANT.
Напрыклад, калі вы хацелі, каб гарантаваць, што Мэцью ніколі не атрымае магчымасць выдаляць інфармацыю з табліцы супрацоўнікаў, запусціце наступную каманду: