GRANT, REVOKE i DENY Database Permissions
Jezik za kontrolu podataka (DCL) je podskup Structured Query Language (SQL) i dozvoljava administratorima baze podataka da konfigurišu sigurnosni pristup relacionim bazama podataka. On dopunjuje Jezik definisanja podataka (DDL), koji se koristi za dodavanje i brisanje objekata baze podataka, a Jezik za upravljanje podacima (DML) koji se koristi za preuzimanje, umetanje i modifikovanje sadržaja baze podataka.
DCL je najjednostavniji od SQL podmnožica , jer se sastoji samo od tri naredbe: GRANT, REVOKE i DENY. Kombinovane, ove tri komande pružaju administratorima fleksibilnost da postavljaju i uklanjaju dozvole baze podataka na izuzetno granularnom načinu.
Dodavanje dozvola s komandom GRANT
Komandu GRANT koriste administratori za dodavanje novih dozvola korisniku korisnika baze podataka . Ima vrlo jednostavnu sintaksu, definisanu na sledeći način:
GRANT [privilegija] ON [objekat] TO [korisnik] [SA GRANTOM OPCIJE]Evo zadataka za svaki od parametara koje možete da nabavite pomoću ove naredbe:
- Privilegija može biti ili ključna reč ALL (za dodelu različitih dozvola) ili posebnu dozvolu baze podataka ili skup dozvola. Primeri uključuju CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE i CREATE VIEW.
- Objekt može biti svaki objekat baze podataka. Važeće opcije privilegija se razlikuju u zavisnosti od vrste objekta baze podataka koju uključujete u ovu klauzulu. Tipično, objekat će biti ili baza podataka, funkcija, pohranjena procedura , tabela ili prikaz.
- Korisnik može biti bilo koji korisnik baze podataka. Takođe možete zamijeniti ulogu korisnika u ovoj klavzuli ako želite koristiti sigurnost baze podataka zasnovane na ulozi.
- Ako uključite opciju WITH GRANT OPTION na kraju komande GRANT, ne dodeljujete samo određenom korisniku dozvole definisane u SQL izrazu, već također daju korisniku mogućnost dodjele istih dozvola drugim korisnicima baze podataka. Iz tog razloga, pažljivo koristite ovu klauzulu.
Na primer, pretpostavite da želite da korisniku Joe-u da preuzme informacije iz tabele zaposlenih u bazi podataka pod nazivom HR. Možete koristiti sledeću SQL komandu:
GRANT IZABRAN JE NA HR.poslovnim osobama TO JoeJoe će sada imati mogućnost da preuzme informacije sa tabele zaposlenih. Međutim, on neće moći da odobri drugim korisnicima dozvolu za preuzimanje informacija iz te tablice jer niste uključili stavku WITH GRANT OPTION u GRANT izrazu.
Opoziv pristupa bazi podataka
Komanda REVOKE se koristi za uklanjanje pristupa bazi podataka od korisnika koji je prethodno odobrio takav pristup. Sintaksa za ovu komandu definiše se na sledeći način:
REVOKE [GRANT OPTION FOR] [dozvola] ON [objekt] OD [korisnik] [CASCADE]Evo zadataka o parametrima za naredbu REVOKE:
- Dozvola specificira dozvole baze podataka za uklanjanje iz identifikovanog korisnika. Komanda poništava i GRANT i DENY tvrdnje prethodno napravljene za identifikovanu dozvolu.
- Objekt može biti svaki objekat baze podataka. Važeće opcije privilegija se razlikuju u zavisnosti od vrste objekta baze podataka koju uključujete u ovu klauzulu. Tipično, objekat će biti ili baza podataka, funkcija, pohranjena procedura, tabela ili prikaz.
- Korisnik može biti bilo koji korisnik baze podataka. Takođe možete zamijeniti ulogu korisnika u ovoj klavzuli ako želite koristiti sigurnost baze podataka zasnovane na ulozi.
- Kôd GRANT OPTION FOR uklanja specifičnu mogućnost korisnika da dodeli dozvoljenu dozvolu drugim korisnicima. Napomena : Ako uključite GRANT OPTION FOR u stavku REVOKE, primarna dozvola nije povučena. Ova odredba ukida samo dozvolu za dodelu.
- Opcija CASCADE takođe ukida navedenu dozvolu od bilo kog korisnika koji je naveden korisnik odobrio.
Na primjer, naredna naredba ukida dozvolu koju je Joe dodelio u prethodnom primjeru:
REVOKE SELECT ON HR.employees IZ JoeEksplicitno odbijanje pristupa bazi podataka
DENY naredba se koristi da bi eksplicitno sprečila korisnika da primi određenu dozvolu. Ovo je korisno kada je korisnik član uloge ili grupe kojoj je dodeljena dozvola, a želite da sprečite pojedinačnog korisnika da nasleđuje dozvolu stvaranjem izuzetka. Sintaksa za ovu naredbu je sledeća:
DENY [dozvola] ON [objekt] TO [korisnik] Parametri za naredbu DENY su identični onima koji se koriste za naredbu GRANT.
Na primjer, ako želite osigurati da Matthew neće dobiti mogućnost brisanja informacija iz tabele zaposlenih, izdajte sljedeću naredbu: