Erinevus lehekülje "PostgreSQL haldamine" redaktsioonide vahel
(→Skeemid) |
(→Skeemid) |
||
30. rida: | 30. rida: | ||
"$user",public | "$user",public | ||
(1 row) | (1 row) | ||
+ | |||
+ | Skeemirada töötab sarnaselt tabelile ka muude skeemis sisalduvate objektidega, nt funktsioonid. | ||
===PostgreSQL privileegisüsteem=== | ===PostgreSQL privileegisüsteem=== |
Redaktsioon: 21. märts 2010, kell 19:50
Sisukord
Sissejuhatus
TODO
Skeemid
- Võimaldada mitmetele kasutajatel kasutada sama andmebaasi säilitades kasutajate privaatsuse.
- Korraldada andmebaasi objektid loogilistesse gruppidesse selleks, et andmebaas oleks paremini hallatav
- Erinevates skeemides saab kasutada samu objektide nimesid
Skeemi moodustamiseks sobib öelda, tavaliselt tekitab nii süsteemi administraator oma kasutajatele skeeme
CREATE SCHEMA priiduskeem AUTHORIZATION priit;
kus
- priiduskeem - tekitatava skeemi nimi
- priit - andmebaasi kasutaja (üldisemalt roll)
Skeemide moodustamisel peab nimevalikul arvestama, et pg_ algusega nimede on reserveeritud ja neid kasutada ei saa.
Kui andmebaasiga töötades skeemi mitte näidata, siis vaikimisi toimub tegevus
- kasutajanimelises skeemis
- kasutajanimelise skeemi puudumisel skeemis 'public'; see skeem moodustatakse andmebaasi loomisel automaatselt.
test=> show search_path; search_path ---------------- "$user",public (1 row)
Skeemirada töötab sarnaselt tabelile ka muude skeemis sisalduvate objektidega, nt funktsioonid.
PostgreSQL privileegisüsteem
PostgreSQL privileegisüsteem kontrollib, mida saavad erinevad kasutajad andmebaasis teha. Üldiselt on andmebaasi ligipääsule võimalik piiranguid seada kolmel tasemel
- võrguühenduse tase - nt andmebaasi ees töötavas tulemüüris võrguühendusi src ipi aadressi täpsusega piirates
- pg_hba.conf failis
- andmebaasi sisemiste vahenditega
Andmebaasi sisemiste vahenditega saab ligipääse piirata kõige täpsemalt kusjuures seadistatud ligipääse hoib andmebaas selleks ettenähtud andmebaasi tabelites.
Kasutajad ja grupid - rollid
Üldiselt öeldakse, et PostgreSQLi andmebaasi kasutajad tegutsevad andmebaasi kasutades mingites rollides
- andmebaasi objektide, nt tablitele juures on kirjas, millise rolliga kasutaja saab kõnealuse objektida millist tegevust sooritada, nt tabelit sisu select käsuga lugeda
- andmebaasi sisselogimiseks on kasutajal vaja teada mõnda andmebaasis kirjeldatud LOGIN omadusega rolli ligipääse (sh parooli)
- rollid võivad moodustada hierarhiaid, mida võib praktiliselt ette kujutada grupikuuluvustena; praktiliselt tähendab see nt seda, et andmebaasis kirjeldatakse roll ja sellega seostatakse mingid ligipääsud erinevatele objektidele ning selleks, et konkreetsed sisselogivad kasutajad saaksid kõnealustele objektidega tegevusi sooritada määratakse nad kirjeldatud rolli nö pärijateks
Rollide moodustamine
Andmebaasi paigaldamisel tekitatakse andmebaasi selle kasutaja nimeline LOGIN omadusega roll, millena andmebaas paigaldati, traditsiooniliselt on selle rolli nimeks 'postgres'.
Järgnevate rollide moodustamiseks sobib öelda
create role priit
Rolli eemaldamiseks sobib öelda
drop role priit
Rollide kasutamine
Käesoleva rollinime küsimiseks sobib öelda
select user;
Uue rolli omandamiseks sobib öelda
set role uusrollinimi
Vaikimisi rolli tagasilülitamiseks
reset role
Rollidele andmebaasiobjektide kasutamise lubamine
Andmebaasi objektidel on privileegisüsteemi seisukohast kaks olulist omadust
- objekti omanik (ingl. k. owner) - objekti moodustanud roll, kellel on objekti suhtes kõikvõimalikud õigused
- pääsunimekiri (ingl. k. access control list, ACL) - millised omanikud saavad kõnealuse objektida milliseid tegevusi sooritada
Tabel
Olgu andmebaasi administraator tekitanud kaks rolli priit ning mart ning moodustanud kummagi kasutaja jaoks andmebaasi nendenimelise skeemi. Sellises olukorras saavad mõlemad kasutajad oma skeemis toimetada kuid üksteise tabelitele sisule ligi ei pääse.
test=> select * from priit.priidutabel; ERROR: permission denied for schema priit LINE 1: select * from priit.priidutabel;
Selleks, et kasutaja mart pääseks lugema kasutaja priit tabeli priit.priidutabel sisu peab priit kõnealusele tabelile andma kasutajale mart select pääsu
Misc
- show <tab> - esitab nimekirja võimalikest küsimustest, nt
show max_connections; max_connections ----------------- 100 (1 row)