PostgreSQL egy nyílt forráskódú DBMS, amely SQL-t használ. Ez egy nagyon hatékony eszköz, amelyet alkalmazások kezelésére és webes adatok hosztolására használnak VPS-en. Ebben az útmutatóban megtanulhatja, hogyan kezelheti a jogosultságokat a PostgreSQL-ben. Segítségével megadhatja az alkalmazásszerepköröknek a szükséges jogosultságokat. Ezt az útmutatót PostgreSQL használatával fogjuk elvégezni egy Ubuntu 18.04-es felhőszerveren a CloudSigma-n.
A PostgreSQL telepítése
A PostgreSQL letöltéséhez és telepítéséhez futtassa a következő parancsokat:
|
1 2 |
sudo apt-get update sudo apt-get install postgresql postgresql-contrib |
A telepítő létrehoz egy alapértelmezett felhasználót – “Postgres” néven, amely alatt futni fog. A jelen útmutató nagy részében ezt a felhasználót fogjuk használni. A következő paranccsal jelentkezhet be ehhez a felhasználóhoz:
|
1 |
sudo su - postgres |
Most, hogy a PostgreSQL telepítve van, megtanulhatja, hogyan kezeli a jogosultságokat. Követheti továbbá az útmutatónkat a PostgreSQL beállításáról Ubuntu-n a telepítési folyamat részletes, lépésről lépésre történő bemutatásához.
PostgreSQL jogosultsági fogalmak
A Postgres a jogosultságokat a “szerepkörök” (roles) koncepcióján keresztül kezeli. A szerepkörök esetében nincs különbség a felhasználók és a csoportok között. A szerepkörök rugalmasabbak, mint a hagyományos Unix felhasználói és csoportrendszer. Például egy szerepkör eljárhat egy másik szerepkör tagjaként, örökölve annak jogosultságait.
Szerepkörök megtekintése a PostgreSQL-ben
A PostgreSQL szerepköreinek megtekintéséhez először be kell jelentkeznie a parancssorba a következő paranccsal:
|
1 |
psql |
Ezután futtassa a következőt a szerepkörök megtekintéséhez:
|
1 |
\du |

Jelenleg csak egyetlen alapértelmezett szerepkör létezik az összes jogosultsággal.
Hogyan hozzunk létre szerepköröket a PostgreSQL-ben
A Postgres szerepköreit létrehozhatja parancssorból vagy a Postgres shellen belülről is. Kipróbálhatja a következő két megközelítést, amelyek után láthatja, hogyan kezelheti a jogosultságokat és a hozzáféréseket a PostgreSQL-ben.
Hogyan hozzunk létre szerepköröket a PostgreSQL-en belülről
A szerepkörök létrehozásának legegyszerűbb módja a Postgres parancssorából történik. Ezt a következő paranccsal teheti meg:
|
1 |
CREATE ROLE demo_role; |
A létrehozás ellenőrzéséhez futtassa a parancsot:
|
1 |
\du |

Ez azt jelzi, hogy az új szerepkörnek nincsenek bejelentkezési jogosultságai. Ennek megváltoztatását az útmutató későbbi részében fogja megtanulni.
Hogyan hozzunk létre szerepköröket parancssorból
A fenti módszer alternatívája a felhasználó parancssorból történő létrehozása. A PostgreSQL parancssorból való kilépéshez írja be a következőt:
|
1 |
\q |
A következő paranccsal létrehozhat egy “test” nevű szerepkört:
|
1 |
createuser test |
Miután végrehajtotta a fenti parancsot, jelentkezzen be a psql-be, és listázza a szerepköröket a következő parancsokkal:
|
1 2 |
psql \du |

Megfigyelheti, hogy az így létrehozott felhasználó nem rendelkezik ugyanazokkal az attribútumokkal.
Hogyan töröljünk szerepköröket a PostgreSQL-ben
A PostgreSQL-ben a következő szintaxissal egyszerűen törölhet szerepköröket:
|
1 |
DROP ROLE role_name; |
A korábban létrehozott demo szerepkört a következő paranccsal törölheti:
|
1 |
DROP ROLE demo_role; |

Ha olyan szerepkört próbálunk meg törölni, amely nem létezik, az hibát fog dobni. Ennek megtekintéséhez próbálja meg újra törölni ugyanazt a szerepkört:
|
1 |
DROP ROLE demo_role; |

Ha azt szeretné, hogy a parancs ne dobjon hibát, ha a szerepkör nem létezik, hozzáadhatja az ‘IF EXISTS’ kifejezést a parancshoz:
|
1 |
DROP ROLE IF EXISTS role_name; |
A szerepkör törlését újra megpróbálhatja ezzel a paranccsal:
|
1 |
DROP ROLE IF EXISTS demo_role; |
Hogyan határozzunk meg jogosultságokat a szerepkör létrehozásakor
Eddig szerepköröket hozott létre és törölt. Ebben a részben módosított jogosultságokkal rendelkező szerepköröket fog létrehozni. Ezt úgy teheti meg, hogy a létrehozó paranccsal megadja a szerepkör jogosultságait:
|
1 |
CREATE ROLE role_name WITH optional_permissions; |
Az ehhez kapcsolódó lehetőségek megtekintéséhez megnyithatja a súgót ezzel a paranccsal:
|
1 |
\h CREATE ROLE |

Ha bejelentkezési jogosultságokkal rendelkező szerepkört szeretne létrehozni, a parancsot így alakíthatja ki:
|
1 |
CREATE ROLE demo_role WITH LOGIN; |

Ahogy korábban láttuk, ha bejelentkezési jogosultsággal rendelkező szerepköröket szeretne létrehozni, a következő parancsot is használhatja:
|
1 |
CREATE USER role_name; |
A két parancs közötti egyetlen különbség az, hogy a ‘CREATE USER’ alapértelmezés szerint bejelentkezési jogosultságot ad a szerepkörnek.
Szerepkörök jogosultságainak módosítása PostgreSQL-ben
Eddig azt próbálta ki, hogyan adhat jogosultságokat a felhasználó létrehozása során. Ebben a szakaszban a már létrehozott felhasználók jogosultságait fogja módosítani. Az alter parancs szintaxisa a következő:
|
1 |
ALTER ROLE role_name WITH attribute_options; |
Például, ha szeretné, ezzel a paranccsal megváltoztathatja a demo_role bejelentkezési jogosultságait ‘log in’-re:
|
1 |
ALTER ROLE demo_role WITH NOLOGIN; |

Ahhoz, hogy a felhasználó újra bejelentkezhessen, a következő paranccsal módosíthatja a jogosultságokat:
|
1 |
ALTER ROLE demo_role WITH LOGIN; |
Hogyan jelentkezzünk be más felhasználóként PostgreSQL-ben
A PostgreSQL alapértelmezés szerint csak helyileg engedélyezi a bejelentkezést, ha a felhasználóneve megegyezik a rendszer felhasználónevével. Ennek megkerülésére vagy megváltoztathatja a bejelentkezési típust, vagy beállíthatja a PostgreSQL-t a loopback hálózati interfész használatára. Ez az interfész távolira változtatná a kapcsolat típusát, még akkor is, ha a kapcsolat helyi.
Ebben a szakaszban a másodikat fogja kipróbálni. Kezdésként beállíthatja a felhasználó jelszavát, így a hitelesítés lehetségessé válik.
Állítsa be a ‘demo_user’ jelszavát a következő paranccsal:
|
1 |
\password test |
Amikor a rendszer kéri, adja meg és erősítse meg a jelszót. Ha végzett, kiléphet a PostgreSQL felületről, és visszatérhet a normál gépfelhasználójához:
|
1 2 |
\q exit |
A PostgreSQL megköveteli, hogy az operációs rendszer felhasználónevével megegyező felhasználónévvel jelentkezzen be, és az adatbázishoz is ugyanezzel a felhasználónévvel kapcsolódjon. Mivel ebben az esetben nem ezt teszi, kifejezetten meg kell adnia a használni kívánt opciókat. A következő szintaxist használhatja:
|
1 |
psql -U <span class="highlight">user</span> -d <span class="highlight">db</span> -h 127.0.0.1 -W |
user: A felhasználónév, amellyel kapcsolódni szeretne
DB: Egy létező adatbázis, amelyhez hozzáféréssel rendelkezik
-h 127.0.0.1: Jelzi a PostgreSQL számára, hogy hálózati interfészen keresztül fog kapcsolódni a helyi géphez. Ez az opció lehetővé teszi a hitelesítést még akkor is, ha a felhasználónév nem egyezik meg a rendszer felhasználónevével.
-W: Jelzi a PostgreSQL számára, hogy jelszót fog megadni
A “test_user” felhasználónkkal való bejelentkezéshez a következő parancsot adhatjuk ki:
|
1 |
psql -U test -d postgres -h 127.0.0.1 -W |

A jelszó megadása után bejelentkezik a shellbe. Példánkban a ‘postgres’ adatbázist használjuk, amely a telepítés során automatikusan beállított alapértelmezett adatbázis.
Ebben a munkamenetben a bejelentkezéshez kiválasztott felhasználótól függően azzal a problémával fog szembesülni, hogy nem rendelkezik a megfelelő jogosultságokkal a különböző műveletek végrehajtásához. A probléma oka az, hogy még nem adott elegendő jogosultságot a felhasználónak a dolgok adminisztrálására.
A következő szakaszban megadja a szükséges jogosultságokat a felhasználóknak. Először vissza kell váltania a felhasználót egy adminisztratív felhasználóra:
|
1 2 3 |
\q sudo su - postgres psql |
Jogosultságok kezelése PostgreSQL-ben: Hogyan adjunk jogosultságokat PostgreSQL-ben
PostgreSQL-ben, ha egy adatbázist vagy táblát egy adott szerepkör hoz létre, csak annak a szerepkörnek van jogosultsága a módosítására. Ez alól kivételt képeznek a szuperfelhasználói (superuser) jogosultságokkal rendelkező szerepkörök. Ebben a szakaszban jogosultságokat fog adni más szerepköröknek. Más szerepköröknek a ‘GRANT’ utasítással adhat jogosultságokat. A szintaxis a következő:
|
1 |
GRANT permission_type ON table_name TO role_name; |
Létrehozhat egy egyszerű táblát a parancs végrehajtásához:
|
1 2 3 4 |
CREATE TABLE demo ( name varchar(25), id serial, start_date date); |
A létrehozott tábla megtekintéséhez futtassa a parancsot:
|
1 |
\d |

Most, hogy már van egy demo táblája, jogosultságokat adhat a ‘demo’ táblához a ‘demo_role’ szerepkörnek. Az ‘UPDATE’ jogosultságot a következő paranccsal adhatja meg a szerepkörnek:
|
1 |
GRANT UPDATE ON demo TO demo_role; |
Egy szerepkörnek az összes jogosultságot megadhatja, ha a jogosultságot ‘ALL’-ként adja meg:
|
1 |
GRANT ALL ON demo TO demo_role; |
Ha egy adott jogosultságot a rendszer összes szerepkörének meg szeretne adni, a szerepkör helyett használhatja a ‘public’ kulcsszót, a következő parancshoz hasonlóan:
|
1 |
GRANT INSERT ON demo TO PUBLIC; |
A megadott jogosultságokat a következő paranccsal tekintheti meg:
|
1 |
\z |
Jogosultságok kezelése PostgreSQL-ben: Jogosultságok eltávolítása PostgreSQL-ben
Egy szerepkör jogosultságait könnyen eltávolíthatja a ‘REVOKE’ parancs használatával. Ez nagyon hasonlít a grant parancshoz:
|
1 |
REVOKE permission_type ON table_name FROM user_name; |
A GRANT-hoz hasonlóan használhatjuk az – ‘ALL’ és ‘PUBLIC’ kulcsszavakat az összes jogosultság megadására, vagy a jogosultságok megadására az összes szerepkörnek:
|
1 |
REVOKE INSERT ON demo FROM PUBLIC; |
Csoportszerepkörök használata PostgreSQL-ben
A széles körű jogosultságkezelés lehetővé tétele érdekében a szerepkörök elég rugalmasak ahhoz, hogy más szerepkörökkel csoportosíthatók legyenek. Például létrehozhat egy – ‘temporary_role’ szerepkört, majd hozzáadhatja a ‘demo_role’ és ‘test_user’ szerepköröket ehhez a szerepkörhöz:
|
1 2 3 |
CREATE ROLE temporary_role; GRANT temporary_role TO demo_role; GRANT temporary_role TO test_user; |
Most már kezelheti ezen két szerepkör jogosultságait pusztán a ‘temporary_role’ szerepkör jogosultságainak kezelésével. Ez lehetővé teszi a jogosultságok egyszerűbb kezelését. A szerepkör-tagsági információkat a következő paranccsal tekintheti meg:
|
1 |
\du |

Bármely csoporttag eljárhat a csoport nevében a ‘set role’ parancs használatával. Mivel a ‘postgres’ felhasználó egy szuperfelhasználó, használhatja a ‘set role’ parancsot akkor is, ha nem tagja a csoportnak:
|
1 |
SET ROLE temporary_role; |
Minden tábla, amelyet most hoz létre, a temporary_role tulajdonában lesz:
|
1 2 3 4 |
CREATE TABLE hello ( name varchar(25), id serial, start_date date); |
A tábla tulajdonjogának ellenőrzéséhez futtassa a következő parancsot:
|
1 |
\d |

Láthatja, hogy a ‘temporary_role’ szerepkör birtokolja az új táblát és a serial adattípushoz kapcsolódó szekvenciát. Az eredeti szerepkör-jogosultságokhoz való visszatéréshez futtassa a következő parancsot:
|
1 |
RESET ROLE; |
Ha azt szeretné, hogy a szerepkör rendelkezzen azon szerepkör összes jogosultságával, amelyhez tartozik, megadhatja az ‘inherit’ tulajdonságot az ‘alter role’ paranccsal:
|
1 |
ALTER ROLE test_user INHERIT; |
A fenti paranccsal a ‘test_user’ megkapta azon szerepkörök összes jogosultságát, amelyekhez tartozik. Egy szerepkör törléséhez használhatja a ‘drop role’ parancsot:
|
1 |
DROP ROLE temporary_users; |

A fenti parancs hibát jelez, mert vannak olyan objektumaink, mint például a ‘hello’ tábla, amelyek függnek tőle. A törléséhez átruházhatja a tábla tulajdonjogát egy másik szerepkörre:
|
1 |
ALTER TABLE hello OWNER TO demo_role; |
A következő paranccsal ellenőrizheti, hogy a temporary_role most már nem birtokol egyetlen táblát sem:
|
1 |
\d |

Most már törölheti a ‘temporary_role’ szerepkört, mivel már nincsenek függőségei:
|
1 |
DROP ROLE temporary_users; |
Habár a fenti parancs törli a temporary_users szerepkört, a szerepkör-csoport korábbi tagjai nem kerülnek eltávolításra.
Összegzés
Sikeresen elvégezte az útmutatót, és most már tudja, hogyan kezelheti a jogosultságokat a PostgreSQL-ben. Könnyedén adminisztrálhatja a jogosultságokat. A jogosultságok kezelésének ismerete biztosítja, hogy alkalmazásai hozzáférjenek a szükséges adatbázisokhoz, miközben nem férnek hozzá semmilyen más, egy másik alkalmazás által használt adatbázishoz.
Kellemes számítógép-használatot!


Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.