.NET

Rollen und Berechtigungen

Der Bereich Berechtigungen ist ein Browser für Rollen und Privilegien in PostgreSQL. Er stellt die Rollen eines Servers im Finder-Stil in nebeneinanderliegenden Spalten dar: Wählen Sie links eine Rolle, und die Spalten rechts davon zeigen, wovon sie Mitglied ist, wer Mitglied von ihr ist und was sie auf jedem Datenbankobjekt tatsächlich tun darf — einschließlich allem, was sie nur indirekt besitzt, über geerbte Rollenmitgliedschaften oder über PUBLIC. Rollen, Mitgliedschaften, Privilegien, Standardberechtigungen und Eigentümerschaft lassen sich direkt dort anlegen, ändern und entziehen.

Hinweis: Dieser Bereich unterstützt derzeit nur PostgreSQL. Für jede andere Verbindung zeigt er Berechtigungen werden für … noch nicht unterstützt. / Derzeit wird nur PostgreSQL unterstützt.

The Permissions section with three columns

Den Bereich öffnen

Klicken Sie in der linken Leiste auf das Symbol Berechtigungen (das Personensymbol). Der Bereich arbeitet mit einer Verbindung, die bereits im Bereich Datenbank geöffnet ist: Oben wird dieselbe Leiste der geöffneten Verbindungs-Tabs angezeigt, und der Bereich verwendet den dort ausgewählten Verbindungs-Tab. Ist keine Verbindung geöffnet, zeigt er Keine Verbindung geöffnet — öffnen Sie zuerst eine (siehe Datenbanken verwalten). Die Spalten werden bei jedem Betreten des Bereichs neu aufgebaut, eine frühere Auswahl wird also zurückgesetzt.

Alles, was Sie hier tun, erfordert dieselben Privilegien wie das entsprechende SQL (CREATEROLE, Superuser oder Eigentümerschaft am Objekt, je nach Aktion) — OmniDB führt die Anweisungen mit den Zugangsdaten der verwendeten Verbindung aus. Die drei Spalten lassen sich durch Ziehen des schmalen Griffs an ihrem rechten Rand in der Breite ändern; ein Doppelklick auf einen Griff setzt die jeweilige Spalte zurück, und die Breiten werden gespeichert.

Spalte 1: Rollen

Die Spalte Rollen listet alle Rollen des Servers auf, einschließlich der eingebauten pg_*-Rollen, sortiert nach Namen. Rollen, die sich anmelden können (Benutzer), haben ein Symbol mit einer Person; Rollen, die das nicht können (Gruppen), ein Symbol mit zwei Personen; Superuser sind mit Superuser gekennzeichnet und Rollen, deren Konto abgelaufen ist, mit abgelaufen. Die erste Zeile ist immer PUBLIC (Globussymbol) — keine echte Rolle, sondern die Pseudorolle, der jede Rolle implizit angehört, sodass an PUBLIC vergebene Privilegien auf dieselbe Weise angezeigt und bearbeitet werden können.

Das Feld über der Liste filtert Rollen nach Namen, die Auswahlliste daneben nach Art: Alle Rollen, Benutzer (Login möglich), Gruppen (ohne Login), Superuser oder Abgelaufen.

Klicken Sie auf eine Rolle, um sie zu fokussieren; die übrigen Spalten zeigen dann diese Rolle. Unter der Liste:

The Create Role dialog with the SQL preview

Ein Rechtsklick auf eine Rolle (nicht PUBLIC) bietet:

The context menu of a role

Spalte 2: Mitgliedschaften

Die zweite Spalte ist in zwei Hälften geteilt:

In beiden Hälften werden direkte Mitgliedschaften in normaler Schrift und indirekte (geerbte) kursiv mit verblasstem Symbol dargestellt. Eine direkte Mitgliedschaft, die WITH ADMIN OPTION vergeben wurde, ist mit (Admin-Option) gekennzeichnet; ab PostgreSQL 16 markieren (ohne Vererbung) und (ohne SET) Mitgliedschaften, denen die Option INHERIT bzw. SET fehlt.

Spalte 3: Objekte und effektive Privilegien

Die dritte Spalte, … — Objekte, ist ein Baum aller Objekte, auf die die fokussierte Rolle irgendein Privileg hat — ihre effektiven Privilegien: ihre eigenen direkten Grants plus alles, was sie über ihre Mitgliedschaften und über PUBLIC erbt. Er beginnt mit zwei Gruppen, Datenbanken (alle Datenbanken des Servers) und Tablespaces; ein Knoten wird normal dargestellt, wenn die Rolle dort ein Privileg hat, andernfalls ausgegraut. Das Feld oben filtert Datenbanken und Tablespaces nach Namen und behält seinen Text beim Wechsel der Rolle.

Beim Aufklappen einer Datenbank werden deren Objekte über eine separate Verbindung zu dieser Datenbank geladen (die aktive Datenbank des Verbindungs-Tabs ändert sich nicht): Schemas und innerhalb jedes Schemas Ordner für Tabellen, Ansichten, Sequenzen, Funktionen, Prozeduren, Materialisierte Ansichten, Typen und Domänen; Foreign Data Wrappers und Fremdserver liegen direkt unter der Datenbank. Aufgeführt werden nur Objekte, auf die die Rolle tatsächlich ein Privileg hat (Systemschemas werden ausgelassen); ein ausgegrautes Schema erscheint nur, weil etwas darin enthalten ist. Jede Datenbank hat außerdem zwei zusätzliche Ordner: Eigene Objekte (n), der auflistet, was die Rolle dort besitzt (bis zu 1000 Einträge), und Standardberechtigungen, siehe unten. Gibt es überhaupt nichts, zeigt die Datenbank Keine Privilegien für Objekte in dieser Datenbank.

The Objects column expanded down to the tables

Privilegien bearbeiten

Klicken Sie mit der rechten Maustaste auf eine Datenbank, einen Tablespace, ein Schema oder ein Objekt und wählen Sie Privilegien bearbeiten. Der Dialog listet jedes für diese Objektart gültige Privileg als Kontrollkästchen auf:

Die Kontrollkästchen zeigen, was die Rolle direkt besitzt:

The Edit Privileges dialog with the SQL preview

Mit Grant-Option (Privileg weitergeben) gilt für die Privilegien, die Sie in diesem Dialog neu vergeben. Bestätigen Sie mit Speichern.

Um etwas auf einem Objekt zu vergeben, das noch nicht im Baum steht, verwenden Sie das + (Objektprivileg hinzufügen) unter der Spalte: Wählen Sie den Objekttyp, dann die Datenbank (für alles außer Datenbanken und Tablespaces; voreingestellt ist die aktuelle Datenbank der Verbindung), das Schema für Objekte auf Schemaebene, das Objekt selbst (Funktionen werden mit ihrer Argumentsignatur angezeigt), kreuzen Sie die Privilegien an und optional Mit Grant-Option (Privileg weitergeben). Für Tabellen, Sequenzen, Funktionen und Prozeduren lässt sich die Auswahl Umfang von Ausgewähltes Objekt auf Alle … im Schema umstellen, mit Gewähren oder Entziehen: OmniDB führt dann GRANT/REVOKE … ON ALL … IN SCHEMA aus, was sich auf die jetzt vorhandenen Objekte auswirkt, nicht auf später erstellte.

Wenn Sie in der ersten Spalte PUBLIC auswählen, können Sie bearbeiten, was PUBLIC selbst gewährt ist (GRANT … TO PUBLIC / REVOKE … FROM PUBLIC).

Standardberechtigungen

Der Ordner Standardberechtigungen einer Datenbank listet die ALTER DEFAULT PRIVILEGES-Einträge auf, an denen die fokussierte Rolle beteiligt ist, entweder als Empfänger oder als erstellende Rolle. Sie sind der Weg, um künftig erstellte Objekte abzudecken. Klicken Sie mit der rechten Maustaste auf den Ordner für Standardberechtigungen hinzufügen: Wählen Sie die erstellende Rolle (Für Objekte, erstellt von), das Schema (oder alle Schemas), die Objektart (Tabellen, Sequenzen, Funktionen, Typen, Schemas) und die Privilegien. Klicken Sie mit der rechten Maustaste auf einen vorhandenen Eintrag für Privilegien bearbeiten (nur die von Ihnen geänderten Häkchen werden vergeben oder entzogen) oder Standardberechtigungen entfernen.

Eigentümerschaft und wer Zugriff hat

The Who Has Access dialog

Die SQL-Vorschau

Die Dialoge zum Erstellen, Ändern, Umbenennen und Klonen von Rollen, zum Hinzufügen von Mitgliedschaften, zum Vergeben oder Bearbeiten von Privilegien, für Standardberechtigungen und zum Ändern von Eigentümern haben ein einklappbares Feld SQL anzeigen. Es zeigt die genauen Anweisungen, die die aktuellen Formularwerte ausführen würden — erzeugt vom selben Servercode wie der echte Aufruf, nichts wird ausgeführt, Passwörter werden maskiert — und hält sie aktuell, während sich das Formular ändert. SQL kopieren kopiert sie.

Wichtig: Das Bestätigen eines Dialogs führt die Anweisungen sofort auf dem Server aus — es gibt kein Rückgängigmachen. Prüfen Sie sie vorher mit SQL anzeigen. Rolle löschen, Mitgliedschaft entfernen und Standardberechtigungen entfernen fragen außerdem nach einer Bestätigung. Lehnt der Server eine Anweisung ab, wird seine Fehlermeldung angezeigt.