|
||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
Software (10844)
|
PostgreSQL (25) - Administrace skupin a uživatelů
Od počátku seriálu o PostgreSQL jsme se přehoupli přes řadu 8.1, která změnila systém vytváření uživatelů a je zapotřebí se seznámit i se systémem vytváření skupin a s pokročilejší správou uživatelů. Ale protože se vyskytují i servery, jejichž správci jsou konzervativní v nasazování nových verzí, pokusíme se shrnout i odlišnosti starších verzí.
Vytvoření a správa skupinVytváření skupin uživatelů může předcházet vytvoření jednotlivých uživatelů, proto jej předřazuji samotnému vytvoření uživatelů. Práva k jednotlivým databázím a tabulkám totiž lze přiřazovat jednotlivým skupinám, i uživatelům, ale je mnohem přehlednější vytvořit skupinu, která má garantované určité přístupy, do níž se pak přidávají nově vytvoření uživatelé, než vytvářet uživatele mimo skupiny a těm pak jednotlivě přiřazovat potřebná práva. Je rozdíl mezi verzemi před 8.0, včetně, a v tom, jaké jsou změny od řady 8.1. To jak je systém přepracován od verze 8.1 naleznete v odstavcích dále a tuto část textu můžete přeskočit. Nová skupina uživatelů se vytváří pomocí příkazu -- ve verzi 8.0 SYSID gid USER uzivatelske_jmeno [, dalsi_uzivatel [, ...]] Jedinými parametry jsou číslo skupiny (gid), které pokud nezadáte bude vygenerováno automaticky a členové skupiny, které však můžete přidávat později pomocí Například při tvorbě účetního systému pro přístup ke klíčovým datům, při rozdělení na různých činností, které je běžné ve velkých firmách, budete mít skupiny správců, perzonalistů a účetních (i ty lze rozdělit na mzdové a finanční), do kterých pak budete přiřazovat jednotlivé uživatele, kteří pak budou mít přístup definovaný pouze k určitým databázím, tabulkám, či pohledům. Změny ve skupinách se realizují pomocí příkazu -- pridani jednoho nebo vice uzivatelu do skupiny jmeno ALTER GROUP jmeno ADD USER uzivatel1 [, ...] -- odebrani jednoho nebo vice uzivatelu ze skupiny jmeno ALTER GROUP jmeno DROP USER uzivatel1 [, ...] -- prejmenovani skupiny, toto smi udelat pouze vlastnik db ALTER GROUP jmeno RENAME TO nove_jmeno Pro smazání skupiny je, nejjednodušší a nejkratší, příkaz Od verze 8.1 jsou skupiny v tomto pojetí zrušeny, nejedná se o SQL standard, a je povoleno vytvářet pouze uživatele/role. Vytváření a správa uživatelůStále platí, že pro vytvoření prvního uživatele musíte být přihlášeni jako hlavní uživatel postgres, a to ať z konzole/terminálu, nebo v rámci SQL příkazu, ale už zmizela jedna menší nelogičnost v právech vytváření uživatelů. Protože se snažím v seriálu postihnout vlastnosti řady 7 i aktuální 8, pokusíme se v tomto díle vysvětlit obě verze. Z terminálu vytvoříte uživatele, pochopitelně, máte-li k tomu patřičná práva, příkazem
Ostatní parametry zůstaly beze změny. Pokud nezadáte některý z podstatných parametrů, jako například má-li být superuživatelem, právo vytvářet databáze a další běžné uživatele, utilita Konzolový příkaz Ve verzích 8.0 a starších byly parametry: SYSID uid CREATEDB | NOCREATEDB CREATEUSER | NOCREATEUSER IN GROUP groupname [, ...] [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' VALID UNTIL 'abstime' A od verze 8.1 jsou platné parametry: SUPERUSER | NOSUPERUSER CREATEDB | NOCREATEDB CREATEROLE | NOCREATEROLE CREATEUSER | NOCREATEUSER INHERIT | NOINHERIT LOGIN | NOLOGIN CONNECTION LIMIT limit_spojeni [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'heslo' VALID UNTIL 'casovy_udaj' IN ROLE role [, ...] IN GROUP role [, ...] ROLE role [, ...] ADMIN role [, ...] USER role [, ...] SYSID uid Opět není třeba zadávat všechny parametry, leč nebudete na vlastnosti nového uživatele interaktivně dotázáni, ale budou použity defaultní volby, které jsou defaultní stejně jako v případě konzolové varianty. Jak vidíte z výpisu možných parametrů, které jsou použitelné v SQL příkazu, tak možnosti jsou poněkudsi širší. Některé parametry si popíšeme v krátkém seznamu.
Již z popisu přepínačů je vidět, že role zcela nahrazují původní model uživatelů a skupin uživatelů. Pro někoho může být pochopitelnější a průhlednější původní systém, ale do Postgresu se dostávají takto veliké změny po velmi zralé úvaze, čiže se bude jednat opravdu o značně lepší systém ve správě uživatelů, především je vidět jeho lepší variabilita. Podstatné je, že od verze 8.1 je zapotřebí přestat uvažovat o uživatelích a skupinách, ale uvažovat o rolích, které jsou i ANSI SQL standardem. Změna nastavení uživatelů se provádí příkazem Do verze 8.0, včetně, jsou parametry: CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'abstime' Od verze 8.1 platí následující parametry: SUPERUSER | NOSUPERUSER CREATEDB | NOCREATEDB CREATEROLE | NOCREATEROLE CREATEUSER | NOCREATEUSER INHERIT | NOINHERIT LOGIN | NOLOGIN CONNECTION LIMIT limit_spojeni [ENCRYPTED | UNECRYPTED] PASSWORD 'heslo' VALID_UNTIL 'casovy_udaj' Přiřazení právV předchozích odstavcích jste se seznámili s vytvářením jednotlivých uřivatelů a skupin v PostgreSQL, nyní je zapotřebí vytvořeným rolím přiřadit práva na objekty v databázi. K delegování práv slouží příkaz
Příklad-- hlavni role, ktera mi zastresuje cele mzdy CREATE ROLE amzdy NOLOGIN ENCRYPTED PASSWORD '123mzdy'; -- podrizene role CREATE ROLE pam NOLOGIN ENCRYPTED PASSWORD 'derf' IN ROLE amzdy; CREATE ROLE admin NOLOGIN ENCRYPTED PASSWORD 'fred' IN ROLE amzdy; -- Nyni uzivatele CREATE ROLE marek2 LOGIN ENCRYPTED PASSWORD 'm123' IN ROLE pam, admin; -- sebe davam jako (hlavniho) spravce do vsech roli CREATE ROLE jarsuk LOGIN ENCRYPTED PASSWORD 'jaro123'; -- zapomenuta role i s uzivateli CREATE ROLE mzdy NOLOGIN ENCRYPTED PASSWORD 'vyplaty' IN ROLE amzdy ROLE jarsuk, marek2; -- sobe pridelim veskera prava GRANT ALL ON DATABASE amzdy TO marek2 WITH GRANT OPTION; -- k mzdovym tabulkam (casti) pridam prava pro role mzdy a amzdy GRANT SELECT, INSERT, UPDATE, DELETE ON prac, nemd, mzdp, ucty TO amzdy, mzdy; -- uzivateli jarsuk odeberu prava mazani a prepisu REVOKE DELETE, UPDATE ON prac, nemd, mzdp, ucty FROM jarsuk; ZávěrV tomto díle jsem si dovolil udělat menší odbočku, která vznikla díky změně z PostgreSQL 7.2 na 8.1 na jednom serveru, o který se starám. Zpočátku se mi změna systému, od jednoduché terminologie skupin a uživatelů k rolím, příliž nelíbila, ale po vytvoření pár desítek rolí, z celkového počtu 120, jsem uznal, že tento systém je mnohem průhlednější a pružnější. Příště se zase vrátíme k běžné manipulaci s daty a bude již načase otevřít možnosti programování na straně databáze, tj. uděláme krok k vícevrstvým aplikacím.
|
Search Software
Search Google
|
||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |