De Taal voor gegevensbeheer is een subset van de Structured Query Language. Databasebeheerders gebruiken DCL om beveiligingstoegang tot relationele databases te configureren. Het vormt een aanvulling op de Taal voor gegevensdefinitie, waarmee database-objecten worden toegevoegd en verwijderd, en de Data Manipulatie Taal, die de inhoud van een database ophaalt, invoegt en wijzigt. DCL is de eenvoudigste van de SQL-subsets, omdat het uit slechts drie opdrachten bestaat: GRANT, REVOKE en DENY. Gecombineerd bieden deze drie opdrachten beheerders de flexibiliteit om op gedetailleerde wijze databasemachtigingen in te stellen en te verwijderen.
Machtigingen toevoegen met het GRANT-commando
De opdracht GRANT voegt nieuwe machtigingen toe aan een databasegebruiker. Het heeft een zeer eenvoudige syntaxis, als volgt gedefinieerd: GRANT [privilege]
AAN [object]
NAAR [user]
[WITH GRANT OPTION]
Hier is het overzicht van elk van de parameters die u met deze opdracht kunt leveren:
- Voorrecht — kan het sleutelwoord ALL zijn (om een grote verscheidenheid aan machtigingen te verlenen) of een specifieke databasemachtiging of een reeks machtigingen. Voorbeelden zijn CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE en CREATE VIEW.
- Voorwerp — kan elk databaseobject zijn. De geldige privilege-opties zijn afhankelijk van het type databaseobject dat u in deze clausule opneemt. Meestal is het object een database, functie, opgeslagen procedure, tabel of weergave.
- Gebruiker — kan elke databasegebruiker zijn. U kunt in deze clausule ook een rol voor de gebruiker vervangen als u gebruik wilt maken van op rollen gebaseerde databasebeveiliging.
- Als u de optionele MET SUBSIDIEOPTIE clausule aan het einde van de opdracht GRANT, verleent u de opgegeven gebruiker niet alleen de machtigingen die zijn gedefinieerd in de SQL-instructie, maar geeft u de gebruiker ook toestemming om diezelfde machtigingen verder te verlenen aan andere database gebruikers. Gebruik deze clausule daarom met zorg.
Neem bijvoorbeeld aan dat u de gebruiker Joe de mogelijkheid om informatie op te halen uit de werknemer tabel in een database genaamd HR. Gebruik de volgende SQL-opdracht: GRANT SELECT
ON HR.medewerkers
NAAR Joe
Joe kan informatie ophalen uit de tafel van de medewerkers. Hij kan andere gebruikers echter geen toestemming geven om informatie uit die tabel op te halen, omdat het DCL-script de clausule WITH GRANT OPTION niet bevatte.
Toegang tot database intrekken
De opdracht REVOKE verwijdert databasetoegang van een gebruiker die eerder dergelijke toegang heeft verleend. De syntaxis voor deze opdracht is als volgt gedefinieerd: REVOKE [GRANT OPTION FOR] [permission]
AAN [object]
VAN [user]
[CASCADE]
Hier is het overzicht van de parameters voor het REVOKE-commando:
- Toestemming — specificeert de databasemachtigingen die van de geïdentificeerde gebruiker moeten worden verwijderd. De opdracht herroept zowel GRANT- als DENY-beweringen die eerder zijn gemaakt voor de geïdentificeerde toestemming.
- Voorwerp — kan elk databaseobject zijn. De geldige privilege-opties zijn afhankelijk van het type databaseobject dat u in deze clausule opneemt. Meestal is het object een database, functie, opgeslagen procedure, tabel of weergave.
- Gebruiker — kan elke databasegebruiker zijn. U kunt in deze clausule ook een rol voor de gebruiker vervangen als u gebruik wilt maken van op rollen gebaseerde databasebeveiliging.
- De SUBSIDIEOPTIE VOOR clausule verwijdert de mogelijkheid van de opgegeven gebruiker om de opgegeven toestemming aan andere gebruikers te verlenen. Als u de SUBSIDIEOPTIE VOOR clausule in een REVOKE-instructie, wordt de primaire toestemming niet ingetrokken. Deze clausule herroept alleen de verleningsbevoegdheid.
- De CASCADE optie trekt ook de opgegeven machtiging in van alle gebruikers die de opgegeven gebruiker de machtiging heeft verleend.
De volgende opdracht trekt de toestemming in die in het vorige voorbeeld aan Joe is verleend: REVOKE SELECT
ON HR.medewerkers
VAN Joe
Databasetoegang expliciet weigeren
De opdracht DENY voorkomt expliciet dat een gebruiker een bepaalde toestemming krijgt. Deze functie is handig wanneer een gebruiker lid is van een rol of groep waaraan een machtiging is verleend, en u wilt voorkomen dat die individuele gebruiker de machtiging overneemt door een uitzondering te maken. De syntaxis voor deze opdracht is als volgt: DENY [permission]
AAN [object]
NAAR [user]
De parameters voor het DENY-commando zijn identiek aan die voor het GRANT-commando. Als u er bijvoorbeeld zeker van wilt zijn dat Matthew nooit de mogelijkheid krijgt om informatie uit de werknemerstabel te verwijderen, geeft u het volgende commando: DENY DELETE
ON HR.medewerkers
NAAR Matthew