Hyppää sisältöön

Welcome to our weekly research support coffee hour on Zoom! Click here for more information.

Warning!

Puhti scratch disk is becoming very full (80+ % ) resulting in performance degradation. Everybody is advised to only keep actively processed data on scratch, all other data should be deleted, transferred to host institute or stored in Lumi-O. No new quota will be granted. Click here for a tool for examining your disk usage.

PostgreSQL-oikeudet

PostgreSQL 17 -oikeudet

PostgreSQL 17 -tietokantaesiintymissä käyttäjille on annettava erikseen käyttöoikeus tietokantaan, jotta he voivat luoda tauluja määritetyn tietokannan public-skeemaan. Tämä voidaan tehdä seuraavasti komentorivityökaluilla.

Kun luot uuden käyttäjän, voit käyttää --database-lippua antaaksesi käyttäjälle oikeuden luoda uuden taulun tietyn tietokannan public-skeemaan:

openstack database user create $INSTANCE_ID $USER_NAME $USER_PASSWORD --database $DATABASE_NAME

Komento, jolla olemassa olevalle tietokantakäyttäjälle annetaan oikeus luoda tauluja:

openstack database user grant access $INSTANCE_ID $USER_NAME $DATABASE_NAME

Selainkäyttöliittymässä voi myös luoda käyttäjiä ja muokata heidän oikeuksiaan.

Uuden käyttäjän luominen tietokantaoikeuksilla:

  1. Valitse esiintymä Instances-sivulta
  2. Siirry sen Users-välilehdelle
  3. Paina Create User

Voit myös muokata olemassa olevien käyttäjien oikeuksia Users-välilehdellä valitsemalla 'Manage Access' avattavasta valikosta 'Actions'-sarakkeessa.

Käyttäjälle vain luku -oikeuden antaminen tauluun

Taulun omistajana tai root-käyttäjänä voit suorittaa seuraavan SQL-komennon:

GRANT SELECT ON ${table} TO ${user};

Käyttäjälle luku- ja kirjoitusoikeuden antaminen tauluun

Jos haluat sallia käyttäjien lisätä, muokata, poistaa ja lukea rivejä tietokannassasi, voit antaa käyttäjälle seuraavat oikeudet:

GRANT SELECT, INSERT, UPDATE, DELETE ON ${table} TO ${user};

PostgreSQL 14:n ja 17:n väliset muutokset

PostgreSQL 15 toi oletusoikeuksiin hyvin tarkkarajaisen muutoksen, joka vaikuttaa siihen, miten Pukki hallitsee käyttäjiä ja heidän käyttöoikeuksiaan.

Erot siinä, miten Pukki hallitsee tietokantaoikeuksia

PostgreSQL 14:ssä tietokantakäyttäjille oletuksena myönnetyt oikeudet sallivat uusien taulujen luomisen minkä tahansa tietokannan public-skeemaan kyseisessä tietokantaesiintymässä. PostgreSQL 15 poisti create-oikeuden kaikilta tietokantakäyttäjiltä (paitsi tietokannan omistajalta) public-skeemasta, jota käytetään oletusskeemana. Nyt uusille käyttäjille on annettava erikseen create-oikeus skeemaan, yleensä tietokannan oletus-public-skeemaan.

Lyhyesti sanottuna, kun käyttäjälle perutaan tai myönnetään käyttöoikeus PostgreSQL 14 -tietokantaan Pukissa, oikeuksia muuttava kysely näyttää suunnilleen tältä:

GRANT|REVOKE ALL ON DATABASE ${DATABASE} TO|FROM ${USER};

PostgreSQL 17 -tietokantaesiintymässä samat selainkäyttöliittymän tai CLI-työkalun komennot johtavat tämänkaltaiseen oikeuksia muuttavaan kyselyyn:

GRANT|REVOKE ALL ON SCHEMA public TO|FROM ${USER};

Voit aina ottaa root-käyttöoikeuden käyttöön tietokantaesiintymässä ja kirjautua sisään root-käyttäjänä muokataksesi oikeuksia vapaammin.

Huomio oikeuksista

Jos sinulla on vain vähän tai ei lainkaan aiempaa kokemusta PostgreSQL:stä, suosittelemme tutustumaan siihen, miten PSQL:n oikeudet liittyvät tietokantoihin, skeemoihin ja tauluihin. Tässä on yksi opas, josta voi olla hyötyä.

Sekaannusten välttämiseksi kannattaa pitää mielessä, että PostgreSQL 14:ssä oletusoikeudet sallivat jokaisen käyttäjän yhdistää mihin tahansa tietokantaan ja luoda tauluja oletus-public-skeemaan. He eivät kuitenkaan voi käyttää olemassa olevia tauluja tai muita skeemoja ilman erillistä lupaa, eivätkä he voi luoda uusia skeemoja.

Tyypillisesti PSQL:ssä objektin omistaja (objekti voi olla tietokanta, skeema, taulu jne.) on ainoa, jolla on siihen liittyviä oikeuksia, ellei toisin ole määritetty. Tämä yhdessä sen kanssa, että oikeudet eivät periydy hierarkiassa "alaspäin", voi aiheuttaa hämmennystä. Oikeudet skeemaan eivät tarkoita, että käyttäjällä olisi oikeuksia sen sisältämiin tauluihin. Lisätietoja löytyy virallisesta oikeuksia käsittelevästä dokumentaatiosta.

Oikeuksien esimerkkikäyttö

Nämä kyselyt sallivat käyttäjän example_user lukea dataa taulusta example_table. Huomaa, että nämä kaksi kyselyä ovat identtisiä, kunhan hakupolkua ei ole muutettu.

GRANT SELECT ON example_table TO example_user;
GRANT SELECT ON public.example_table TO example_user;

Huomaa, että example_user tarkoittaa tässä roolia, joka voi olla myös ryhmä. Nämä kyselyt loisivat uuden ryhmän, liittäisivät käyttäjän siihen ja antaisivat oikeuden lukea dataa kaikista public-skeeman tauluista.

CREATE ROLE example_group;
GRANT example_group TO example_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO example_group;

Oikeuksien hallinnan helpottamiseksi suosittelemme luomaan ryhmiä ja liittämään käyttäjiä niihin sen sijaan, että oikeuksia säädettäisiin käyttäjäkohtaisesti.

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta