Data Control Language (DCL) för databasbehörigheter

click fraud protection

De Datakontrollspråk är en delmängd av Structured Query Language. Databasadministratörer använder DCL för att konfigurera säkerhetsåtkomst till relationsdatabaser. Det kompletterar Data Definition Language, som lägger till och tar bort databasobjekt, och Datamanipulationsspråk, som hämtar, infogar och modifierar innehållet i en databas.

DCL är den enklaste av SQL-undermängderna, eftersom den endast består av tre kommandon: GRANT, REVOKE och DENY. Tillsammans ger dessa tre kommandon administratörer flexibiliteten att ställa in och ta bort databasbehörigheter på ett detaljerat sätt.

Lägga till behörigheter med kommandot GRANT

Kommandot GRANT lägger till nya behörigheter för en databasanvändare. Den har en mycket enkel syntax, definierad enligt följande:

GE [privilegium]
PÅ [objekt]
TILL [användare]
[MED BIDRAGSALTERNATIV]

Här är en sammanfattning av var och en av parametrarna du kan tillhandahålla med detta kommando:

  • Privilegium — kan antingen vara nyckelordet ALL (för att ge en mängd olika behörigheter) eller en specifik databasbehörighet eller uppsättning behörigheter. Exempel inkluderar CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE och CREATE VIEW.
  • Objekt — kan vara vilket databasobjekt som helst. De giltiga behörighetsalternativen varierar beroende på vilken typ av databasobjekt du inkluderar i den här klausulen. Typiskt är objektet antingen en databas, funktion, lagrad procedur, bord eller vy.
  • Användare — kan vara vilken databasanvändare som helst. Du kan också ersätta användaren med en roll i denna klausul om du vill använda rollbaserad databassäkerhet.
  • Om du inkluderar den valfria MED BIDRAG klausulen i slutet av GRANT-kommandot ger du inte bara den angivna användaren behörigheterna definieras i SQL-satsen men ger också användaren tillåtelse att ytterligare bevilja dessa tillstånd till Övrig databasanvändare. Använd därför denna klausul med försiktighet.

Anta till exempel att du vill bevilja användaren Joe möjligheten att hämta information från anställd bord i en databas kallad HR. Använd följande SQL-kommando:

BIDRAG VAL
PÅ HR.anställda
TILL Joe.

Joe kan hämta information från de anställdas bord. Han kommer dock inte att kunna ge andra användare tillstånd att hämta information från den tabellen eftersom DCL-skriptet inte inkluderade WITH GRANT OPTION-satsen.

Återkalla databasåtkomst

Kommandot REVOKE tar bort databasåtkomst från en användare som tidigare beviljats ​​sådan åtkomst. Syntaxen för detta kommando definieras enligt följande:

ÅTERkalla [BEHANDLA ALTERNATIV FÖR] [tillstånd]
PÅ [objekt]
FRÅN [användare]
[KASKAD]

Här är en sammanfattning av parametrarna för kommandot REVOKE:

  • Tillstånd — anger databasbehörigheterna att ta bort från den identifierade användaren. Kommandot återkallar både GRANT- och DENY-påståenden som tidigare gjorts för den identifierade behörigheten.
  • Objekt — kan vara vilket databasobjekt som helst. De giltiga behörighetsalternativen varierar beroende på vilken typ av databasobjekt du inkluderar i den här klausulen. Typiskt är objektet antingen en databas, funktion, lagrad procedur, tabell eller vy.
  • Användare — kan vara vilken databasanvändare som helst. Du kan också ersätta användaren med en roll i denna klausul om du vill använda rollbaserad databassäkerhet.
  • De BIDRAG ALTERNATIV FÖR klausul tar bort den angivna användarens möjlighet att ge den angivna behörigheten till andra användare. Om du inkluderar BIDRAG ALTERNATIV FÖR klausul i en REVOKE-sats, återkallas inte den primära behörigheten. Denna klausul återkallar endast beviljandeförmågan.
  • De KASKAD alternativet återkallar också den angivna behörigheten från alla användare som den angivna användaren har gett behörigheten.

Följande kommando återkallar den behörighet som beviljades Joe i föregående exempel:

REVOKE SELECT
PÅ HR.anställda
FRÅN Joe.

Explicit neka databasåtkomst

Kommandot DENY förhindrar uttryckligen en användare från att få en viss behörighet. Den här funktionen är användbar när en användare är medlem i en roll eller grupp som har fått en behörighet och du vill förhindra att den enskilda användaren ärver behörigheten genom att skapa ett undantag. Syntaxen för detta kommando är följande:

NEJ [tillstånd]
PÅ [objekt]
TILL [användare]

Parametrarna för DENY-kommandot är identiska med de som används för GRANT-kommandot. Om du till exempel vill försäkra dig om att Matthew aldrig skulle få möjligheten att ta bort information från de anställdas bord, utfärda följande kommando:

NEKA RADERA
PÅ HR.anställda
TILL Matthew.