Käyttöoikeuksien määritys (DCL)
Valtuuttaminen (Data Control Language, DCL) perustuu SQL-kielessä käyttäjien ja käyttäjäryhmien oikeuksiin. Oikeuksia voidaan myöntää erilaisiin tietokantaobjekteihin, kuten tauluihin, sarakkeisiin, näkymiin tai triggereihin. Tässä alaluvussa käsitellään valtuuttamiseen liittyvää teoriaa ja SQL-komentoja. DCL-komentoja on SQL-kielessä kaksi: GRANT
ja REVOKE
. Lisäksi tässä alaluvussa käsitellään roolien luonti.
Käyttäjät ja käyttäjäryhmät
Relaatiotietokannan käyttäjät voidaan tunnistaa SQL-rajapinnan kautta. SQL-standardi ei määritä käskyjä käyttäjien tai käyttäjäryhmien luomiseksi, mutta yleistää nämä molemmat ns. rooleiksi. Roolit voidaan määrittää toimimaan sekä käyttäjinä että käyttäjäryhminä. Käyttäjäryhmänä toimivan roolin tunnistaa tavallisesti siitä, että sitä käyttäen ei voida kirjautua sisään tietokantaan.
Rooleja voidaan myöntää toisille rooleille. Tällöin rooli perii sille myönnetyn roolin oikeudet. Tällä tavalla voidaan muodostaa käyttäjien ja käyttäjäryhmien hierarkioita, ja suurten käyttäjämäärien hallinnoiminen on vaivattomampaa.

Yllä olevassa kuviossa roolit B ja C perivät kaikki roolin A oikeudet. Edelleen roolit G ja H perivät kaikki C:n oikeudet, ts. roolilla H on kaikki C:n ja A:n oikeudet. Kun roolit K myöntää uuden oikeuden roolille C, oikeus periytyy automaattisesti myös rooleille G ja H.
Rooli luodaan komennolla CREATE ROLE
, jota seuraa roolin nimi. Tavallisesti rooleja voivat luoda vain järjestelmänvalvojat. Esimerkiksi PostgreSQL-tietokannanhallintajärjestelmällä roolin voi luoda seuraavalla tavalla:
Komento loisi uuden roolin salasanoineen, myöntäisi roolin varastotyontekijat oikeudet uudelle roolille, sallisi roolin kirjautua ja asettaisi salasanan vanhenemaan toukokuun 8. päivä.
Rooli poistetaan komennolla DROP ROLE
, jota seuraa roolin nimi. Vain roolin omistaja tai järjestelmänvalvoja voi poistaa roolin.
Käyttöoikeudet
Jokaisella tietokantaobjektilla on omistaja, ja omistaja on oletusarvoisesti se rooli, joka on luonut tietokantaobjektin. Omistajalla on kaikki oikeudet tietokantaobjektiinsa, ja omistaja voi antaa ja poistaa muilta rooleilta oikeuksia tähän objektiin. Alla olevassa taulukossa on listattu yleisimmät standardin mukaiset oikeudet selitteineen.
Oikeus | Oikeuttaa |
---|---|
CONNECT |
Muodostamaan tietokantayhteyden. |
SELECT |
Näkemään dataa. |
INSERT |
Lisäämään dataa. |
UPDATE |
Päivittämään dataa. |
DELETE |
Poistamaan dataa. |
EXECUTE |
Käynnistämään rutiineja. |
ALL PRIVILEGES |
Kaikki yllä mainitut paitsi CONNECT. |
SQL-standardi ei määritä komentoja DDL-käskyjen kuten CREATE
, ALTER
ja DROP
valtuuttamiseen, mutta useimmat tuotteet määrittävät. Oletuksena kuitenkin käyttäjä voi suorittaa DDL-käskyjä omistamassaan skeemassa. Jos halutaan oikeuttaa tai poistaa oikeuksia hienorakeisemmalla tasolla, voidaan luoda näkymä, ja myöntää tarvittavat oikeudet siihen.
Käyttöoikeuksien myöntäminen
Käyttöoikeudet myönnetään komennolla GRANT
. Komennon yleinen syntaksi on seuraava:
GRANT
-avainsanaa seuraa oikeus yllä olevan taulukon mukaisesti, ja oikeuksia voidaan myöntää yhdellä komennolla useita. Tietokantaobjekti voi olla esimerkiksi taulu, näkymä, proseduuri tai katalogi. Näkymien avulla oikeuksia voidaan myöntää hienojakoisemmin kuin taulujen avulla on mahdollista. WITH GRANT OPTION
oikeuttaa myöntämään annettua roolia edelleen. Tarkastellaan optiota esimerkin avulla:
Nyt käyttäjät (roolit) matti ja maija voivat myöntää GRANT
-komennolla sekä katselu- että päivitysoikeutta tyontekija-tauluun muille käyttäjille.
SQL-standardin mukaisesti lisäys- ja päivitysoikeutta voidaan myöntää myös sarakekohtaisesti, jos valtuutus kohdistuu tauluun tai näkymään. Tällöin oikeuden nimeä seuraa sulkeiden sisällä pilkkulista, joka sisältää sarakkeiden nimet, esimerkiksi:
Rooli voidaan myöntää toisille rooleille samalla komennolla seuraavan yleisen syntaksin mukaisesti:
Käyttöoikeuksien poistaminen
Käyttöoikeuksia poistetaan komennolla REVOKE
. Komennon yleinen syntaksi on seuraava:
Valinnainen GRANT OPTION FOR
-lisämääre poistaa ainoastaan edelleenvaltuutusoikeuden. Jos sitä ei käytetä, poistetaan varsinainen oikeus. Jos käyttäjältä poistetaan rooli, ja käyttäjä on valtuuttanut jotakin oikeuttaan edelleen, myös edelleen valtuutetuilta poistetaan kyseiset oikeudet:

Yllä olevan kuvion mukaisesti
- Rooli C myöntää ensin oikeuden roolille J
WITH GRANT OPTION
-lisämääreellä. - Rooli J myöntää saamansa oikeuden roolille D.
- Rooli C päättääkin poistaa myöntämänsä oikeuden roolilta J, jolloin
- tietokannanhallintajärjestelmä poistaa automaattisesti oikeuden myös roolilta D.
Rooli voidaan poistaa toiselta roolilta seuraavan syntaksin mukaisesti:
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.