Kapitola 18. Databázové role a oprávnění
On 25 října, 2021 by adminDatabázové role jsou koncepčně zcela odděleny od uživatelů operačního systému. V praxi může být vhodné udržovat shodu, ale není to nutné. Databázové role jsou globální pro celou instalaci databázového clusteru (a nikoli pro jednotlivé databáze). Pro vytvoření role použijte příkaz CREATE ROLE SQL:
CREATE ROLE name;
jméno se řídí pravidly pro identifikátory SQL: buď bez ozdob bez speciálních znaků, nebo s dvojitými uvozovkami. (V praxi budete obvykle chtít k příkazu přidat další volby, například LOGIN. Podrobnější informace jsou uvedeny níže.) Chcete-li odstranit existující roli, použijte analogický příkaz DROP ROLE:
DROP ROLE name;
Pro usnadnění jsou k dispozici programy createuser a dropuser jako obaly těchto příkazů SQL, které lze volat z příkazového řádku shellu:
createuser namedropuser name
Pro zjištění množiny existujících rolí prozkoumejte systémový katalog pg_roles, například
SELECT rolname FROM pg_roles;
Pro výpis existujících rolí je užitečný také metapříkaz \du programu psql.
Pro zavedení databázového systému obsahuje čerstvě inicializovaný systém vždy jednu předdefinovanou roli. Tato role je vždy „superuživatel“ a ve výchozím nastavení (pokud není změněna při spuštění initdb) bude mít stejné jméno jako uživatel operačního systému, který inicializoval databázový cluster. Obvykle se tato role jmenuje postgres. Chcete-li vytvořit další role, musíte se nejprve připojit jako tato počáteční role.
Každé připojení k databázovému serveru se provádí jménem nějaké konkrétní role a tato role určuje počáteční přístupová práva pro příkazy vydané na tomto připojení. Jméno role, které se má použít pro konkrétní připojení k databázi, udává klient, který iniciuje požadavek na připojení, způsobem specifickým pro danou aplikaci. Například program psql používá volbu příkazového řádku -U k určení role, jako která se má připojit. Mnoho aplikací ve výchozím nastavení předpokládá jméno aktuálního uživatele operačního systému (včetně createuser a psql). Proto je často vhodné udržovat jmennou shodu mezi rolemi a uživateli operačního systému.
Sada databázových rolí, jako které se může dané klientské připojení připojit, je určena nastavením ověřování klienta, jak je vysvětleno v kapitole 20. (Klient se tedy nemusí nutně připojovat jako role se stejným jménem jako jeho uživatel operačního systému, stejně jako přihlašovací jméno osoby nemusí odpovídat jejímu skutečnému jménu). Protože identita role určuje sadu oprávnění, která má připojený klient k dispozici, je důležité ji při nastavování víceuživatelského prostředí pečlivě nakonfigurovat.
Napsat komentář