Was ist der Unterschied zwischen Gruppenrollen und Anmelderollen?

8

Es sieht so aus, als ob ich für einen einzelnen Benutzer eine Anmelderolle und dann die entsprechenden Gruppenrollen erstellen sollte, da ich der Anmelderolle keine direkten Berechtigungen zuweisen kann. Ist es wahr? Was ist der Zweck einer solchen Trennung?

Soweit ich weiß, ist es auch nur möglich, sich mit der Anmelderolle zu authentifizieren . Was ist der Zweck des Kennwortfelds in einer Gruppenrolle ? Oder ist es möglich, sich als Gruppenrolle zu authentifizieren? Warum sollte dann jemand Anmelderollen benötigen?

Es sieht auch so aus, als könnte ich in pg_hba sowohl Anmelde- als auch Gruppenrollen festlegen.

Vlad
quelle

Antworten:

7

All diese Fragen werden grundsätzlich in der Dokumentation beantwortet . Um genau zu sein:

Eine Rolle ist eine Entität, die Datenbankobjekte besitzen und über Datenbankberechtigungen verfügen kann. Eine Rolle kann je nach Verwendung als "Benutzer", "Gruppe" oder beides betrachtet werden.

Dies bedeutet, dass intern kein Unterschied zwischen diesen besteht, mit Ausnahme der LOGINOption. Wenn Sie angeben LOGIN(oder verwenden CREATE USER):

CREATE ROLE dezso WITH LOGIN PASSWORD 'bla';

dezsowird eine Login-Rolle, sonst nicht. Sie können auch Kennwörter für Nicht-Anmelderollen angeben. Wenn Sie sich später dafür entscheiden, diese zu einer Anmelderolle zu machen, verwenden Sie

CREATE ROLE non_login_role PASSWORD 'bla';

--later
ALTER ROLE non_login_role WITH LOGIN;

Sie haben Recht, wenn Sie sagen , dass eine Authentifizierung nur mit der Anmelderolle möglich ist . Beachten Sie jedoch, dass ein Kennwort nicht immer erforderlich ist - wenn Sie etwas anderes als die Authentifizierungsmethode passwordodermd5 verwenden. Andererseits bedeutet dies, dass sich eine Rolle ohne die festgelegte LOGINOption in keiner Weise anmelden kann.

Schließlich können Sie Regeln pg_hba.conffür Nicht-Anmelderollen festlegen. Da diese Rollen jedoch nur zur Authentifizierung verwendet werden, haben sie keine Auswirkungen (es sei denn, Sie aktivieren die Anmeldung später wie oben beschrieben).

dezso
quelle
1
Warum kann ich in pgAdmin keine Tabellenberechtigungen für Anmelderollen zuweisen? Dort werden nur Gruppenrollen aufgelistet.
Vlad
4
Es muss ein Designproblem / -fehler sein - ich habe mich gefragt. Solche Probleme sind die Gründe, warum ich psqlfür alles ausschließlich normale SQL-Anweisungen verwende.
Dekso