Data Control Language (DCL) for databasetillatelser
De Datakontrollspråk er en undergruppe av Structured Query Language. Databaseadministratorer bruker DCL til å konfigurere sikkerhetstilgang til relasjonsdatabaser. Det utfyller Datadefinisjonsspråk, som legger til og sletter databaseobjekter, og Datamanipulasjonsspråk, som henter, setter inn og endrer innholdet i en database.
DCL er den enkleste av SQL-delsettene, siden den består av bare tre kommandoer: GRANT, REVOKE og DENY. Kombinert gir disse tre kommandoene administratorer fleksibiliteten til å angi og fjerne databasetillatelser på en detaljert måte.
Legge til tillatelser med GRANT-kommandoen
GRANT-kommandoen legger til nye tillatelser til en databasebruker. Den har en veldig enkel syntaks, definert som følger:
GI [privilegium]
PÅ [objekt]
TIL [bruker]
[MED TILSKUDSVALG]
Her er oversikten over hver av parameterne du kan gi med denne kommandoen:
-
Privilegium — kan enten være nøkkelordet ALL (for å gi et bredt utvalg av tillatelser) eller en spesifikk databasetillatelse eller sett med tillatelser. Eksempler inkluderer CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE og CREATE VIEW.
- Gjenstand — kan være et hvilket som helst databaseobjekt. De gyldige rettighetsalternativene varierer basert på typen databaseobjekt du inkluderer i denne klausulen. Vanligvis vil objektet enten være en database, funksjon, lagret prosedyre, bord eller visning.
- Bruker — kan være hvilken som helst databasebruker. Du kan også erstatte en rolle for brukeren i denne klausulen hvis du ønsker å bruke rollebasert databasesikkerhet.
- Hvis du inkluderer den valgfrie MED TILSKUDSMULIGHET klausulen på slutten av GRANT-kommandoen, gir du ikke bare den angitte brukeren tillatelsene definert i SQL-setningen, men gi også brukeren tillatelse til å gi de samme tillatelser til annen databasebrukere. Av denne grunn, bruk denne klausulen med forsiktighet.
Anta for eksempel at du ønsker å gi brukeren Joe muligheten til å hente informasjon fra ansatt bord i en database kalt HR. Bruk følgende SQL-kommando:
GI UTVALG
PÅ HR.ansatte
TIL Joe.
Joe kan hente informasjon fra de ansattes bord. Han vil imidlertid ikke kunne gi andre brukere tillatelse til å hente informasjon fra den tabellen fordi DCL-skriptet ikke inkluderte WITH GRANT OPTION-klausulen.
Oppheve databasetilgang
REVOKE-kommandoen fjerner databasetilgang fra en bruker som tidligere har fått slik tilgang. Syntaksen for denne kommandoen er definert som følger:
OPPBAKE [GIV VALG FOR] [tillatelse]
PÅ [objekt]
FRA [bruker]
[CASCADE]
Her er oversikten over parametrene for REVOKE-kommandoen:
- Tillatelse — spesifiserer databasetillatelsene som skal fjernes fra den identifiserte brukeren. Kommandoen tilbakekaller både GRANT- og DENY-påstander tidligere gjort for den identifiserte tillatelsen.
- Gjenstand — kan være et hvilket som helst databaseobjekt. De gyldige rettighetsalternativene varierer basert på typen databaseobjekt du inkluderer i denne klausulen. Vanligvis vil objektet enten være en database, funksjon, lagret prosedyre, tabell eller visning.
- Bruker — kan være hvilken som helst databasebruker. Du kan også erstatte en rolle for brukeren i denne klausulen hvis du ønsker å bruke rollebasert databasesikkerhet.
- De TILSKUDSVALG FOR klausul fjerner den angitte brukerens mulighet til å gi den angitte tillatelsen til andre brukere. Hvis du inkluderer TILSKUDSVALG FOR klausul i en REVOKE-setning, trekkes ikke den primære tillatelsen tilbake. Denne klausulen tilbakekaller bare bevilgningsevnen.
- De CASCADE alternativet tilbakekaller også den angitte tillatelsen fra alle brukere som den angitte brukeren har gitt tillatelsen.
Følgende kommando tilbakekaller tillatelsen som ble gitt til Joe i forrige eksempel:
TILBAKE VALG
PÅ HR.ansatte
FRA Joe.
Eksplisitt nekte databasetilgang
DENY-kommandoen forhindrer eksplisitt en bruker fra å motta en bestemt tillatelse. Denne funksjonen er nyttig når en bruker er medlem av en rolle eller gruppe som har fått tillatelse, og du vil forhindre at den enkelte brukeren arver tillatelsen ved å opprette et unntak. Syntaksen for denne kommandoen er som følger:
NEKTE [tillatelse]
PÅ [objekt]
TIL [bruker]
Parametrene for DENY-kommandoen er identiske med de som brukes for GRANT-kommandoen. For eksempel, hvis du ønsket å sikre at Matthew aldri ville få muligheten til å slette informasjon fra de ansattes bord, utfør følgende kommando:
AVVIS SLETT
PÅ HR.ansatte
TIL Matthew.