Data Control Language (DCL) for databasetilladelser

click fraud protection

Det Datakontrolsprog er en undergruppe af Structured Query Language. Databaseadministratorer bruger DCL til at konfigurere sikkerhedsadgang til relationelle databaser. Det supplerer Data Definition Sprog, som tilføjer og sletter databaseobjekter, og Datamanipulationssprog, som henter, indsætter og ændrer indholdet af en database.

DCL er den enkleste af SQL-undersættene, da den kun består af tre kommandoer: GRANT, REVOKE og DENY. Kombineret giver disse tre kommandoer administratorer fleksibiliteten til at indstille og fjerne databasetilladelser på en detaljeret måde.

Tilføjelse af tilladelser med GRANT-kommandoen

GRANT-kommandoen tilføjer nye tilladelser til en databasebruger. Det har en meget simpel syntaks, defineret som følger:

GIV [privilegium]
TIL [objekt]
TIL [bruger]
[MED TILSKUDSMULIGHED]

Her er en oversigt over hver af de parametre, du kan levere med denne kommando:

  • Privilegium — kan enten være nøgleordet ALL (for at give en bred vifte af tilladelser) eller en specifik databasetilladelse eller et sæt tilladelser. Eksempler inkluderer CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE og CREATE VIEW.
  • Objekt — kan være et hvilket som helst databaseobjekt. De gyldige rettigheder varierer afhængigt af typen af ​​databaseobjekt, du inkluderer i dette afsnit. Typisk vil objektet enten være en database, funktion, gemt procedure, bord eller udsigt.
  • Bruger — kan være enhver databasebruger. Du kan også erstatte en rolle for brugeren i denne klausul, hvis du ønsker at gøre brug af rollebaseret databasesikkerhed.
  • Hvis du medtager den valgfrie MED TILSKUDSMULIGHED klausul i slutningen af ​​GRANT-kommandoen, giver du ikke kun den angivne bruger tilladelserne defineret i SQL-sætningen, men giv også brugeren tilladelse til yderligere at give det samme tilladelser til Andet databasebrugere. Brug derfor denne klausul med omtanke.

Antag for eksempel, at du ønsker at give brugeren Joe muligheden for at hente informationer fra medarbejder bord i en database hedder HR. Brug følgende SQL-kommando:

TILDEL UDVALG
PÅ HR.medarbejdere
TIL Joe.

Joe kan hente information fra medarbejdernes tabel. Han vil dog ikke være i stand til at give andre brugere tilladelse til at hente information fra den tabel, fordi DCL-scriptet ikke indeholdt WITH GRANT OPTION-klausulen.

Tilbagekaldelse af databaseadgang

Kommandoen REVOKE fjerner databaseadgang fra en bruger, der tidligere har fået sådan adgang. Syntaksen for denne kommando er defineret som følger:

TILBAGE [GIV MULIGHED FOR] [tilladelse]
TIL [objekt]
FRA [bruger]
[CASCADE]

Her er en oversigt over parametrene for REVOKE-kommandoen:

  • Tilladelse — angiver databasetilladelserne til at fjerne fra den identificerede bruger. Kommandoen tilbagekalder både GRANT- og DENY-påstande, der tidligere er fremsat for den identificerede tilladelse.
  • Objekt — kan være et hvilket som helst databaseobjekt. De gyldige rettigheder varierer afhængigt af typen af ​​databaseobjekt, du inkluderer i dette afsnit. Typisk vil objektet enten være en database, funktion, lagret procedure, tabel eller visning.
  • Bruger — kan være enhver databasebruger. Du kan også erstatte en rolle for brugeren i denne klausul, hvis du ønsker at gøre brug af rollebaseret databasesikkerhed.
  • Det TILSKUDSMULIGHED FOR klausul fjerner den angivne brugers mulighed for at give den angivne tilladelse til andre brugere. Hvis du medtager TILSKUDSMULIGHED FOR klausul i en REVOKE-erklæring, tilbagekaldes den primære tilladelse ikke. Denne klausul tilbagekalder kun bevillingsevnen.
  • Det CASCADE option tilbagekalder også den angivne tilladelse fra alle brugere, som den angivne bruger har givet tilladelsen.

Følgende kommando tilbagekalder tilladelsen givet til Joe i det foregående eksempel:

TILBAGE VALG
PÅ HR.medarbejdere
FRA Joe.

Eksplicit nægter databaseadgang

DENY-kommandoen forhindrer eksplicit en bruger i at modtage en bestemt tilladelse. Denne funktion er nyttig, når en bruger er medlem af en rolle eller gruppe, der har fået en tilladelse, og du vil forhindre den enkelte bruger i at arve tilladelsen ved at oprette en undtagelse. Syntaksen for denne kommando er som følger:

AFVIS [tilladelse]
TIL [objekt]
TIL [bruger]

Parametrene for DENY-kommandoen er identiske med dem, der bruges til GRANT-kommandoen. For eksempel, hvis du ønsker at sikre, at Matthew aldrig ville modtage muligheden for at slette oplysninger fra medarbejdernes tabel, skal du udsende følgende kommando:

AFVIS SLETT
PÅ HR.medarbejdere
TIL Matthew.