.NET

Role a oprávnění

Sekce Oprávnění je prohlížeč rolí a oprávnění pro PostgreSQL. Role serveru rozkládá po vzoru Finderu do sloupců vedle sebe: vlevo vyberete roli a sloupce napravo od ní ukazují, čeho je členem, kdo je členem jí a co může skutečně dělat s každým databázovým objektem — včetně všeho, co má jen nepřímo, prostřednictvím zděděných členství v rolích nebo prostřednictvím PUBLIC. Role, členství, oprávnění, výchozí oprávnění a vlastnictví lze přímo zde vytvářet, měnit a odebírat.

Poznámka: tato sekce v současnosti podporuje pouze PostgreSQL. U všech ostatních připojení zobrazí Oprávnění zatím nejsou podporována pro … / Aktuálně je podporován pouze PostgreSQL.

The Permissions section with three columns

Otevření sekce

Klikněte na ikonu Oprávnění (ikona lidí) na levé liště. Sekce pracuje s připojením, které je už otevřené v sekci Databáze: nahoře se zobrazuje stejný pruh záložek otevřených připojení a sekce používá tu záložku připojení, která je v něm vybraná. Není-li otevřeno žádné připojení, zobrazí se Není otevřené žádné připojení — nejprve nějaké otevřete (viz Správa databází). Sloupce se sestavují znovu při každém vstupu do sekce, takže se předchozí výběr vždy zruší.

Vše, co zde děláte, vyžaduje stejná oprávnění, jaká by vyžadoval odpovídající SQL příkaz (CREATEROLE, superuživatele nebo vlastnictví objektu, podle akce) — OmniDB spouští příkazy s přihlašovacími údaji připojení, které používáte. Tři sloupce lze zvětšovat a zmenšovat tažením tenkého úchytu na jejich pravém okraji; dvojklik na úchyt vrátí šířku daného sloupce do výchozího stavu a šířky se pamatují.

Sloupec 1: Role

Sloupec Role obsahuje všechny role na serveru včetně vestavěných rolí pg_*, seřazené podle názvu. Role, které se mohou přihlásit (uživatelé), mají ikonu jedné postavy; role, které se přihlásit nemohou (skupiny), mají ikonu dvou postav; superuživatelé jsou označeni (superuživatel) a role s vypršelou platností účtu (prošlá platnost). Prvním řádkem je vždy PUBLIC (ikona zeměkoule) — nejde o skutečnou roli, ale o pseudoroli, do které implicitně patří každá role, aby bylo možné oprávnění udělená roli PUBLIC procházet a upravovat stejným způsobem.

Pole nad seznamem filtruje role podle názvu a rozbalovací seznam vedle něj podle druhu: Všechny role, Uživatelé (mohou se přihlásit), Skupiny (bez přihlášení), Superuživatelé nebo Prošlé.

Kliknutím na roli ji zaměříte; ostatní sloupce pak ukazují tuto roli. Pod seznamem:

The Create Role dialog with the SQL preview

Kliknutí pravým tlačítkem na roli (kromě PUBLIC) nabídne:

The context menu of a role

Sloupec 2: členství

Druhý sloupec je rozdělen na dvě poloviny:

V obou polovinách se přímá členství zobrazují normálním písmem a nepřímá (zděděná) kurzívou s vybledlou ikonou. Přímé členství udělené WITH ADMIN OPTION je označeno (admin option); na PostgreSQL 16 a novějším označují (bez dědění) a (bez SET) členství, kterým chybí volba INHERIT nebo SET.

Sloupec 3: objekty a efektivní oprávnění

Třetí sloupec, … — Objekty, je strom všeho, k čemu má zaměřená role jakékoli oprávnění — jejích efektivních oprávnění: vlastních přímých udělení a všeho, co dědí přes svá členství a přes PUBLIC. Začíná dvěma skupinami, Databáze (všechny databáze na serveru) a Tablespace; uzel se zobrazí normálně, pokud v něm role má nějaké oprávnění, jinak šedě. Pole nahoře filtruje databáze a tablespace podle názvu a při přepnutí role si svůj text zachová.

Rozbalení databáze načte její objekty přes samostatné připojení k této databázi (aktivní databáze samotné záložky připojení se nemění): Schémata a uvnitř každého schématu složky pro Tabulky, Pohledy, Sekvence, Funkce, Procedury, Materializované pohledy, Typy a Domény; foreign data wrappery a cizí servery jsou přímo pod databází. Uvádějí se jen objekty, ke kterým role skutečně má nějaké oprávnění (systémová schémata jsou vynechána); šedě zobrazené schéma je v seznamu jen proto, že něco uvnitř něj oprávnění má. Každá databáze má navíc dvě další složky: Vlastněné objekty (n), která uvádí, co tam role vlastní (nejvýše 1000 položek), a Výchozí oprávnění, popsaná níže. Není-li tam vůbec nic, databáze zobrazí Žádná oprávnění na objektech v této databázi.

The Objects column expanded down to the tables

Úprava oprávnění

Klikněte pravým tlačítkem na databázi, tablespace, schéma nebo objekt a zvolte Upravit oprávnění. Dialog zobrazí každé oprávnění platné pro daný druh objektu jako zaškrtávací políčko:

Políčka ukazují, co role drží přímo:

The Edit Privileges dialog with the SQL preview

S právem předávat toto oprávnění dál se vztahuje na oprávnění, která v dialogu nově udělíte. Potvrďte tlačítkem Uložit.

Chcete-li udělit oprávnění k objektu, který ve stromu zatím není, použijte + (Přidat oprávnění na objektu) pod sloupcem: zvolte Typ objektu, poté Databázi (u všeho kromě databází a tablespace; ve výchozím stavu aktuální databáze připojení), Schéma u objektů na úrovni schématu, samotný Objekt (funkce se zobrazují se signaturou argumentů), zaškrtněte Oprávnění a případně S právem předávat toto oprávnění dál. U tabulek, sekvencí, funkcí a procedur lze volbu Rozsah přepnout z Vybraný objekt na Všechny … ve schématu s akcí Udělit nebo Odebrat: OmniDB pak spustí GRANT/REVOKE … ON ALL … IN SCHEMA, což se týká objektů existujících nyní, nikoli těch vytvořených později.

Když v prvním sloupci vyberete PUBLIC, můžete upravovat, co je uděleno přímo roli PUBLIC (GRANT … TO PUBLIC / REVOKE … FROM PUBLIC).

Výchozí oprávnění

Složka Výchozí oprávnění u databáze uvádí položky ALTER DEFAULT PRIVILEGES, které se týkají zaměřené role, ať jako příjemce, nebo jako vytvářející role. Slouží k pokrytí objektů, které vzniknou v budoucnu. Klikněte na složku pravým tlačítkem a zvolte Přidat výchozí oprávnění: vyberte vytvářející roli (Pro objekty vytvořené rolí), schéma (nebo všechna schémata), druh objektu (tabulky, sekvence, funkce, typy, schémata) a oprávnění. Pravým tlačítkem na existující položku zvolíte Upravit oprávnění (udělí se nebo odeberou jen ta zaškrtnutí, která změníte) nebo Odebrat výchozí oprávnění.

Vlastnictví a kdo má přístup

The Who Has Access dialog

Náhled SQL

Dialogy pro vytvoření, úpravu, přejmenování a klonování rolí, přidání členství, udělení nebo úpravu oprávnění, výchozí oprávnění a změnu vlastníka mají sbalitelné pole Zobrazit SQL. Ukazuje přesné příkazy, které by se s aktuálními hodnotami formuláře spustily — sestavené stejným kódem serveru jako skutečné volání, nic se neprovádí, hesla jsou maskována — a při změnách formuláře je průběžně aktualizuje. Kopírovat SQL je zkopíruje.

Důležité: potvrzení dialogu provede příkazy na serveru okamžitě — neexistuje možnost vrácení zpět. Nejprve je zkontrolujte pomocí Zobrazit SQL. Odstranit roli, Odebrat členství a Odebrat výchozí oprávnění se navíc ptají na potvrzení. Pokud server příkaz odmítne, zobrazí se jeho chybová zpráva.