Luku 18. Tietokannan roolit ja oikeudet
On 25 lokakuun, 2021 by adminTietokannan roolit ovat käsitteellisesti täysin erillään käyttöjärjestelmän käyttäjistä. Käytännössä voi olla kätevää ylläpitää vastaavuutta, mutta se ei ole välttämätöntä. Tietokantaroolit ovat maailmanlaajuisia koko tietokantaklusteriasennuksessa (eivätkä yksittäisiä tietokantoja kohden). Rooli luodaan CREATE ROLE SQL-komennolla:
CREATE ROLE name;
Nimi noudattaa SQL-tunnisteiden sääntöjä: joko koruttomana ilman erikoismerkkejä tai kaksoismerkkeinä. (Käytännössä komentoon halutaan yleensä lisätä lisävaihtoehtoja, kuten LOGIN. Lisätietoja on jäljempänä.) Jos haluat poistaa olemassa olevan roolin, käytä vastaavaa DROP ROLE-komentoa:
DROP ROLE name;
Mukavuuden vuoksi ohjelmat createuser ja dropuser tarjotaan näiden SQL-komentojen ympärille kääreinä, joita voidaan kutsua komentoriviltä:
createuser namedropuser name
Olemassa olevien roolien joukon selvittämiseksi tutki esimerkiksi järjestelmäluetteloa pg_roles
SELECT rolname FROM pg_roles;
Olemassa olevia rooleja voi luetella kätevästi myös psql-ohjelman \du-metakomennolla.
Tietokantajärjestelmän käynnistämiseksi juuri alustettu järjestelmä sisältää aina yhden ennalta määritellyn roolin. Tämä rooli on aina ”superuser”, ja oletusarvoisesti (ellei sitä muuteta initdb:tä suoritettaessa) sillä on sama nimi kuin käyttöjärjestelmän käyttäjällä, joka alusti tietokantaklusterin. Tavallisesti tämän roolin nimi on postgres. Jotta voit luoda lisää rooleja, sinun on ensin muodostettava yhteys tällä alkuperäisellä roolilla.
Jokainen yhteys tietokantapalvelimelle muodostetaan jonkin tietyn roolin nimellä, ja tämä rooli määrittää alkuperäiset käyttöoikeudet kyseisellä yhteydellä annetuille komennoille. Tietyssä tietokantayhteydessä käytettävän roolin nimen ilmoittaa yhteyspyynnön aloittava asiakas sovelluskohtaisesti. Esimerkiksi psql-ohjelma käyttää komentorivioptiota -U ilmoittaakseen roolin, jolla yhteys muodostetaan. Monet sovellukset käyttävät oletusarvoisesti nykyisen käyttöjärjestelmän käyttäjän nimeä (mukaan lukien createuser ja psql). Siksi on usein kätevää ylläpitää nimien vastaavuutta roolien ja käyttöjärjestelmäkäyttäjien välillä.
Tietokantaroolien joukko, jolla tietty asiakasyhteys voi muodostaa yhteyden, määräytyy asiakkaan todennusasetusten mukaan, kuten luvussa 20 selitetään. (Näin ollen asiakkaan ei välttämättä tarvitse muodostaa yhteyttä roolina, jolla on sama nimi kuin käyttöjärjestelmän käyttäjällä, aivan kuten henkilön kirjautumisnimen ei tarvitse vastata hänen oikeaa nimeään). Koska roolin identiteetti määrittää yhdistetyn asiakkaan käytettävissä olevat oikeudet, on tärkeää määrittää tämä huolellisesti, kun perustetaan monikäyttäjäympäristöä.
Vastaa