Postgres pro standard dokumentáció 9
GRANT parancs két alapvető változata van: az első hozzárendeli a jogot, hogy az adatbázis eléréséhez objektumok (táblák, oszlopok, nézetek, ezen kívül asztal, szekvenciák, adatbázis, csomagoló harmadik féltől származó adatok, a szerver oldali funkciókat, eljárási nyelv, séma vagy asztalra szóközökkel együtt), a második egy szerepet rendel a többi taghoz. Ezek a fajok sok tekintetben hasonlítanak egymásra, de elégséges különbségek vannak ahhoz, hogy külön-külön megvizsgálják őket.
GRANT adatbázis-objektumokhoz
A GRANT parancs ezen verziója egy vagy több szerephez biztosít néhány hozzáférési jogosultságot az adatbázis objektumhoz. Ezeket a jogokat hozzáadják a rendelkezésre álló jogok listájához, ha a szerep már rendelkezik bizonyos jogokkal.
Az egy vagy több sémához ugyanolyan típusú objektumokhoz is helyet kaphat. Ezt a funkciót jelenleg csak táblák, szekvenciák és funkciók támogatják (de vegye figyelembe, hogy az ALL TABLES utasítás is vonatkozik a nézetekre és a harmadik féltől származó táblákra).
A PUBLIC kulcsszó azt jelenti, hogy minden szerephez joga van, beleértve azokat is, amelyek később létrehozhatók. A PUBLIC implicit módon meghatározott csoportnak tekinthető, amely magában foglalja az összes szerepet. Bármelyik különleges szerepet teljes egészében megkapja a közvetlenül hozzá biztosított jogok, a szerepek, amelyeknek tagja, valamint a PUBLIC szerephez fűződő jogok.
Ha WITH GRANT OPTION van megadva. A jogosult címzettje viszont megadhatja másoknak. Ennek az utasításnak a hiányában nem lesz képes a rendelkezésére bocsátani a jogait. A PUBLIC nem jogosult a jog átruházására.
Nem szükséges explicit módon megadni az objektum tulajdonosához (általában az objektumot létrehozó felhasználóhoz) való hozzáféréshez való jogot, mivel alapértelmezés szerint minden joggal rendelkezik. (Azonban a tulajdonos biztonsági okokból megfosztja magát a jogaitól.)
Az objektum törlésének jogát, vagy a meghatározását tetszőleges módon megváltoztatják, nem tekinthető hozzárendelhetőnek; ez tulajdonképpen társul a tulajdonoshoz, így lehetetlen ezt visszavonni, vagy valaki másnak adni. (Ugyanakkor hasonló hatás érhető el azáltal, hogy ellenőrzi a tagságot az objektum tulajdonában lévő szerepben, lásd alább.) A tulajdonos implicit módon is megkapja a jogát, hogy a tárgyhoz tartozó összes jogot eldobja.
A Postgres Pro alapértelmezés szerint meghatározott típusú objektumokhoz bizonyos Jogosultságok csoportjához bizonyos jogokat rendez. A táblázatok, oszlopok, sémák és táblaterületek esetében a PUBLIC nem rendelkezik alapértelmezett jogosultságokkal. Más típusú objektumok esetében a PUBLIC a következő jogokkal rendelkezik: CONNECT és CREATE TEMP TABLE - adatbázisokhoz; EXECUTE - funkciókhoz; HASZNÁLAT - a nyelvek esetében. Az objektum tulajdonosa, természetesen, visszavonhatja (a REVOKE használatával) mind a kifejezetten hozzárendelt jogokat, mind az alapértelmezett hozzárendelt jogokat. (A maximális biztonság REVOKE parancsot végre kell hajtani a tranzakciót, amely létrehozza az objektumot, ha nem egy ablak van kialakítva, amely egy másik felhasználó hozzáfér az objektumhoz.) Ezen túlmenően, az eredetileg kijelölt alapértelmezett engedélyek lehet változtatni a ALTER DEFAULT PRIVILEGES parancsot.
Az összes lehetséges jog az alábbi listában található:
Lehetővé teszi az adatok frissítését (UPDATE) az összes vagy csak a megadott táblázatban szereplő oszlopokban. (Ez a gyakorlatban bármilyen triviális UPDATE parancs van szükség, és a jogot, hogy a SELECT. Mert utalni kell a táblázat egyes oszlopainak, hogy melyik vonal változhatnak és / vagy ki kell számítania az új oszlop értékeit.) A SELECT. FOR UPDATE és SELECT. A SHARE esetében ez a jog szükséges legalább egy oszlophoz, a SELECT engedély mellett. Szekvenciák esetén ez a jog lehetővé teszi a következő és a setval funkciók használatát. Nagyobb objektumok esetén ez a jog lehetővé teszi, hogy adatokat írjon egy objektumra, vagy vágja le. DELETE
Lehetővé teszi a sorok törlését egy megadott táblából a DELETE segítségével. (Ez a gyakorlatban bármilyen triviális DELETE parancs lesz szükség a megfelelő SELECT. Mert annak meg kell a táblázat egyes oszlopainak, hogy melyik sort kell távolítani.) TRUNCATE
Lehetővé teszi a megadott táblázat ürítését a TRUNCATE segítségével. IRODALOM
Ez a jog szükséges külföldi kulcskorlátok létrehozására, mind a referencia, mind a céloszlopokra. Mindenki számára megadhatja ezt a jogot, vagy csak az asztal néhány oszlopát. TRIGGER
Lehetővé teszi az aktiválók létrehozását egy adott táblázatban. (Lásd a CREATE TRIGGER utasítás leírását.) CREATE
Adatbázisok esetén ez a jog lehetővé teszi, hogy sémákat hozzon létre egy adott adatbázisban.
Séma esetén ez a jog lehetővé teszi új objektumok létrehozását egy adott sémában. Meglévő objektum átnevezése érdekében Önnek az objektum tulajdonosának kell lennie, és ennek joga van az azt tartalmazó séma számára.
A táblaterületek esetében ez a jog lehetővé teszi táblák, indexek és ideiglenes fájlok létrehozását egy adott táblaterületen, és létrehozhat adatbázisokat, amelyek számára ez a terület lesz az elsődleges. (Ne feledje, hogy ha ezt a jogot visszavonják, a meglévő objektumok ugyanazon a helyen maradnak.) CONNECT
Lehetővé teszi a felhasználó számára, hogy csatlakozzon a megadott adatbázishoz. Ezt a jogot ellenõrizzük a kapcsolat létrejötte után (a konfigurációban megadott feltételeken kívül, pg_hba.conf). IDEIGLENES
TEMP
Lehetővé teszi az ideiglenes táblák létrehozását egy adott adatbázisban. EXECUTE
Lehetővé teszi a megadott funkció végrehajtását és a tetején meghatározott operátorok alkalmazását. Ez a funkciókra alkalmazandó jogok kizárólagos joga. (Ez a szintaxis az aggregált függvényekre vonatkozik.) HASZNÁLAT
Az eljárási nyelvek esetében ez a jog lehetővé teszi a funkciók létrehozását egy adott nyelven. Ez az eljárási nyelvekre alkalmazandó jogok kizárólagos joga.
A szekvenciákhoz ez a jog lehetővé teszi a currval és a következő funkciók használatát.
A típusok és domainek esetében ez a jog lehetővé teszi a megadott típus vagy tartomány használatát táblák, függvények vagy más sématárgyak létrehozásakor. (Megjegyzendő, hogy ez a jog nem korlátozza az általános „használatra”, mint például a referencia értékeinek a típus lekérdezéseket. E nélkül a jobb, a téma meg van fosztva az egyetlen lehetőség, hogy hozzon létre objektumok függ egy meghatározott típusú. A fő célja ennek a törvénynek az, hogy korlátozza azok a felhasználók, akik képesek létrehozni függőséget a típustól, amely megakadályozhatja, hogy a típustulajdonos megváltoztassa.)
Harmadik féltől származó adat csomagolók esetén ez a jog lehetővé teszi a téma számára, hogy harmadik féltől származó kiszolgáló-definíciókat hozzon létre, amelyek a megadott harmadik fél adatainak csomagolását használják.
A szerverek esetében ez a jog lehetővé teszi a téma számára, hogy harmadik fél tábla-definícióit hozzon létre a megadott kiszolgálón, és létrehozza, módosítsa és törölje a felhasználó saját nevéhez tartozó leképezést. MINDEN PRIVILEGES
Az összes jogot egyszerre célozza meg. A PRIVILEGES kulcsszó opcionális a Postgres Pro-ban. bár szigorú SQL-ben van szükség.
A többi csapathoz szükséges jogokat a csapatok súgóoldalain találja meg.
GRANT a szerepekért
A GRANT parancsnak ez a verziója szerepet játszik egy vagy több más szerep tagjai között. A szerepet játszó tagság fontos szerepet játszik, mivel a szerepek által biztosított jogok kiterjednek valamennyi tagjára.
Az ADMIN OPTION funkcióval az újonnan létrehozott tag magában foglalhatja a szerepkör tagjait, és kizárhatja más szerepeket is. E jelzés nélkül a szokásos felhasználók ezt nem tehetik meg. Feltételezzük, hogy a szerepkör nem rendelkezik saját WITH ADMIN OPTION jogosultsággal, de engedélyezheti, hogy kezelje tagjait azon munkamenetből, amelyben a munkamenet-felhasználó megfelel ennek a szerepnek. Az adatbázisok felülírói magukban foglalhatnak vagy kizárhatnak bármilyen szerepet bármilyen szerepkörből. A jobb CREATEROLE szerepek bármelyik szerepkörben kezelhetik a tagságot, kivéve a felettesfelek szerepét.
A jogokkal ellentétben a szerepkör tagsága nem rendelhető a PUBLIC csoporthoz. Vegye figyelembe azt is, hogy ez a parancsformátum nem fogadja el a redundáns GROUP szót.
A hozzáférési jogok visszavonásához a REVOKE parancsot kell használni.
A PostgreSQL 8.1-es verziójával kezdődően a felhasználók és a csoportok fogalmai egyetlen entitásra nevezhetők. Így most nincs szükség a GROUP kulcsszó hozzáadására. Annak megmutatása, hogy a téma egy csoport, nem pedig egy felhasználó. A GROUP szót még mindig elfogadja ez a parancs, de értelmetlen.
A felhasználó végrehajthatja a SELECT parancsot. INSERT és hasonló parancsok táblázatos oszlopokkal, ha ez az oszlop vagy az egész tábla számára ez a jog. Ha hozzá a felhasználó a kívánt jobbra a tábla szinten, majd visszavonja az egyik oszlop, nincs hatása, amelyek várhatóan: a művelet jogok oszlopszinten nem befolyásolja a jogot, hogy szinten.
Ha kijelöli a hozzáférési jogot az objektum (a GRANT) nem próbálja objektum tulajdonosa, a csapat sikertelen lesz, ha a felhasználónak nincs joga erre az épületre. Ha a felhasználónak vannak jogaik, akkor a parancs végrehajtásra kerül, de a felhasználó csak azokat a jogokat nyújthatja másoknak, akik számára átadásra jogot kapott. Forms összes jog engedélyezése figyelmeztető üzenetet ad, ha nem rendelkezik ezekkel a jogokkal, míg más formák figyelmeztető üzenetet ad, ha a felhasználó nincs joga semmisítse meg a meghatározott jogokat a parancsot. (Elvileg ezek a kijelentések az objektum tulajdonosára vonatkoznak, de jogosult arra, hogy rendelkezzen minden joggal, így az ilyen helyzetek lehetetlenek.)
Meg kell jegyezni, hogy az adatbázisok felettesei bármilyen objektumhoz hozzáférhetnek, függetlenül attól, hogy rendelkezésre áll-e bármilyen jog. Ez hasonlítható a root felhasználó kiváltságaihoz a Unix rendszeren. És ugyanúgy, mint a gyökér. a felhatalmazó szerepet csak akkor szabad használni, ha feltétlenül szükséges.
Ha a felettes elhatározza, hogy végrehajtja a GRANT vagy REVOKE parancsot. akkor végrehajtódik, mintha az adott objektum tulajdonosa végezte volna. Különösen az ilyen parancs által hozzárendelt jogok az objektum tulajdonosa által kijelölt jogokként kerülnek bemutatásra. (Ha egy szerephez is csatlakozik, akkor azt a szerep betöltheti.)
Megadása és visszavonása is elvégezhető a szerepet, amelyet nem a tulajdonos a megadott objektumot, de tagja a szerepe a tulajdonos vagy tagja a szerep, amelynek jobb WITH GRANT OPTION erre az épületre. Ebben az esetben a jogokat az a szerep betöltheti, amely tulajdonképpen az objektumot tulajdonolja, vagy jogosult a GRANT OPTION-vel. Például, ha a t1 táblázat a g1 szerepéhez tartozik. amelyből az u1 tagja. akkor u1 megadhatja a jogot az u2 szerepkör t1 használatához. de ezeket a jogokat a g1 szerepének közvetlen hozzárendeléséhez fogják képviselni. Később a g1 szerepkör bármely tagja visszavonhatja ezeket a jogokat.
Ha a GRANT parancsot végrehajtja. megkapja a szükséges jogot a tagság különböző módjaiban, melyik szerepet fogják kinevezni kinevezési jognak, nincs meghatározva. Ha ez fontos, akkor ezekben az esetekben ajánlott a SET ROLE parancs használata, és váltani a szerepre, amelyet a végrehajtó GRANT-nek tekinteni.
A táblázathoz való hozzáférési jogosultságok hozzárendelésekor nem terjednek automatikusan a táblázatban használt sorozatokra, beleértve a SERIAL oszlopokhoz tartozó szekvenciákat. A szekvenciákhoz való hozzáférési jogokat külön kell rendelni.
A táblákhoz és oszlopokhoz rendelt meglévő jogokhoz szükséges információk megszerzéséhez használja a psql \ dp parancsát. Például:
A \ dp parancs kimenete. a következőképpen értelmezendők:
A fenti példa azt mutatja, amit a felhasználó miriam lát. ha táblát hoz létre a mytable és végrehajtja:
Ha az oszlop „hozzáférési jog” az ingatlan üres, ami azt jelenti, hogy a szokásos jogi (azaz a jobb oszlop tartalmazza NULL) alkalmazni az objektumot. alapértelmezett jogokat minden esetben tartalmazzák az összes jogot a tulajdonos, és tartalmazhat bizonyos jogokat az állami függően az objektum típusát, a fentiek szerint. Az első parancs megadása és visszavonása tárgy okozza kijelző alapértelmezett jogok terén (például), és megváltoztatja a bejegyzés szerint egy adott lekérdezés. Hasonlóképpen az "oszlophozzáférési jogosultságok" oszlopban szereplő sorok. Csak a nem szabványos hozzáférési jogosultságú oszlopokhoz jelenik meg. (Megjegyezzük, hogy ebben az összefüggésben a „Standard Rules” mindig egy olyan beépített a jogok, előre meghatározott típusú objektum. Ha az objektumnak az alapértelmezett jogok követően nyert eredményeként ALTER DEFAULT jogosultságokkal. Módosított jogok mindig meg fog jelenni világosan mutatja a hatását az ALTER parancsból.)
Felhívjuk a figyelmet arra, hogy a tulajdonos jogainak elidegenítésének joga nem szerepel a kimeneti összefoglalóban. Kijelentkezés * csak azokat a átruházási jogokat jelölik meg, amelyeket kifejezetten hozzárendelnek valakinek.
A következő parancs segítségével mindenki hozzáadhat bejegyzéseket a filmtáblához.
Ez a parancs megadja a felhasználónak minden jogot, hogy képviselje a típusokat.
Ne feledje, hogy ha azt a felettes vagy a típusnézet tulajdonosai futtatják. ez a csapat valóban ad a téma minden rendben, de ha elvégzi a rendszeres felhasználó, az alany kap csak azok a jogok, amelyek az adott tájékoztatja a felhasználót a megfelelő felszerelés.
Tegye be a felhasználói joe-t az adminisztrátorok szerepkörébe.
kompatibilitás
Az SQL szabvány szerint a PRIVILEGES szó az ALL PRIVILEGES jelzésében kötelező. Az SQL szabvány nem teszi lehetővé több objektumhoz tartozó jogok egyidejű hozzárendelését egyetlen parancs segítségével.
Postgres Pro lehetővé teszi, hogy a tulajdonos kifogás megfosztják magukat a használati jogok: például a tulajdonos egy asztal lehetővé teszi magát a csak olvasható tábla, emlékeztetve a saját INSERT jogait. UPDATE. TÖRLÉS és TRUNCATE. Az SQL szabványban ez nem lehetséges. Ez azért van így, mert a Postgres Pro érzékeli a tulajdonos által kijelölt jogokat; így visszavonhatók. Az SQL szabványban a tulajdonos jogait a feltételezett "_SYSTEM" entitástól kapja. Mivel az objektum tulajdonosa eltér a "_SYSTEM" -től. Nem foszthatja meg magától ezeket a jogokat.
Az SQL szabvány szerint az átadás joga a PUBLIC tárgyának adható; Azonban a Postgres Pro jogosult a jogot arra, hogy csak szerepekre ruházza át a jogot.
Az SQL szabványban a HASZNÁLAT jog kiterjed más típusú objektumokra: karakterkészletek, rendezési szabályok és átalakítások.
Az SQL szabványban a szekvenciákhoz használt USAGE jogosítja a NEXT VALUE FOR kifejezés használatát. amely megfelel a Postgres Pro legközelebbi funkciójának. A szekvenciák SELECT és UPDATE jogai a Postgres Pro kiterjesztések. Az a tény, hogy a szekvenciákhoz használt USAGE jogosítja fel a currval funkció használatát. Ez vonatkozik a Postgres Pro kiterjesztésekre (valamint a funkcióra is).
Az adatbázisok, táblaterületek, sémák és nyelvek jogai a Postgres Pro kiterjesztésekre vonatkoznak.