Hallo zusammen,
ich benötige Unterstützung ... Ich bin kein Guru und bisher mit DB-Abfragen beschäftigt.
Seit 4-6 Wochen bin ich dabei eine Postgres Datenbank für mehrere Applikationen aufzubauen.
Das OS steht und funktioniert. Partitionen passend erstellt, SSH Key und Firewall alles eingerichtet, etc.
Seit 3 Wochen lese, teste und kämpfe ich mich der Einrichtung von Postgres
Meine erste Idee waren mehrer Databases auf einem Cluster. Hab ich dann verworfen und erstelle für jede App einen eigenen Cluster.
Ist mit ... pg_createcluster 16 test_cluster -p 7777... ganz schnell erledigt.
Ich bin dabei eine Vorlage/Musteraufbau für alle Cluster zu erstellen.
Würde ich default alles belassen, könnte ich direkt loslegen, ich will aber etwas mehr Sicherheit rein bringen ...
Nicht jede Applikation braucht alles, z.b. read-onyl etc...
Aber ich baue lieber eine Vorlage mit allen Funktionen und ergänze/reduziere diese passend.
Meine Idee...
- abgespeckter Superuser
und User über Gruppen-Rollen:
- DB-Admin_Gruppe
- Produktiv_Gruppe
- Develop_Gruppe
- read_only_Gruppe
Ich gehe mal "Schritt für Schritt" durch was/wie ich dies bisher benutzt habe ...
Ich würde die Rechtevergabe über Gruppen erledigen.
Die admin1, admin2 haben später die Möglichkeit Tabellen etc. zu erstellen. Dann wäre mal der eine, mal der andere der "Owner".
Gestern habe ich noch eine Funktion/Trigger gefunden, welches automatisch die Owner Rechte bei Erstellung einer Tabelle, der admin_grp geben würde.
Dies hat auch wunderbar funktioniert.
Heute Morgen habe ich noch eine einfachere Möglichkeit gefunden ...
ALTER ROLE admin1 SET ROLE admin_grp;
ALTER ROLE admin2 SET ROLE admin_grp;
... in meinem ersten Test hat dies auch wunderbar funktioniert.
Wenn ich es gerade probiere, kommt es aber zu einem >>> HINWEIS: Berechtigung fehlt, um Rolle »admin_grp« zu setzen <<<
Ich habe einiges probiert, irgendwie hab ich es hin bekommen. Wie weiß ich aber nicht wie ...
Mache ich aktuell ein "ALTER ROLE admin1 SET ROLE admin_grp;" wird dies direkt ohne Fehlermeldung mit "ALTER ROLE" bestätigt.
Bei der zweiten Gruppe "developer_grp" kommt es aber immer noch zu dieser Meldung. "HINWEIS: Berechtigung fehlt, um Rolle »developer_grp« zu setzen"
SELECT current_user, session_user;
current_user | session_user
--------------+--------------
dbadmin | dbadmin
An SET dbadmin; lag es nicht. Ich habe auch schon SET developer_grp; probiert etc.
Was mache ich gerade falsch? Ist es die Reihenfolge?
Als postgres würde es sich natürlich setzen lassen.
Fehlen "dbadmin" noch zusätzliche Rechte, oder mache ich in der Reihenfolge etwas falsch?
Viele Grüße
Chris
ich benötige Unterstützung ... Ich bin kein Guru und bisher mit DB-Abfragen beschäftigt.
Seit 4-6 Wochen bin ich dabei eine Postgres Datenbank für mehrere Applikationen aufzubauen.
Das OS steht und funktioniert. Partitionen passend erstellt, SSH Key und Firewall alles eingerichtet, etc.
Seit 3 Wochen lese, teste und kämpfe ich mich der Einrichtung von Postgres

Meine erste Idee waren mehrer Databases auf einem Cluster. Hab ich dann verworfen und erstelle für jede App einen eigenen Cluster.
Ist mit ... pg_createcluster 16 test_cluster -p 7777... ganz schnell erledigt.
Ich bin dabei eine Vorlage/Musteraufbau für alle Cluster zu erstellen.
Würde ich default alles belassen, könnte ich direkt loslegen, ich will aber etwas mehr Sicherheit rein bringen ...
Nicht jede Applikation braucht alles, z.b. read-onyl etc...
Aber ich baue lieber eine Vorlage mit allen Funktionen und ergänze/reduziere diese passend.
Meine Idee...
- abgespeckter Superuser
und User über Gruppen-Rollen:
- DB-Admin_Gruppe
- Produktiv_Gruppe
- Develop_Gruppe
- read_only_Gruppe
Ich gehe mal "Schritt für Schritt" durch was/wie ich dies bisher benutzt habe ...
Code:
frisch aufgesetzter Cluster mit ... pg_createcluster 16 test_cluster -p 7777
psql -p 7777
ALTER USER postgres PASSWORD 'super123';
-- dies sollte mein abgespeckter superuser sein
CREATE ROLE dbadmin WITH CREATEDB CREATEROLE LOGIN PASSWORD 'dbadmin123';
-- wechsel zum abgespeckten Superuser
\c postgres dbadmin
-- erstelle Gruppen Rollen
CREATE ROLE admin_grp WITH NOLOGIN;
CREATE ROLE production_grp WITH NOLOGIN;
CREATE ROLE developer_grp WITH NOLOGIN;
CREATE ROLE read_only_grp WITH NOLOGIN;
-- erstelle User Rollen
CREATE ROLE admin1 WITH LOGIN PASSWORD 'admin1user123';
CREATE ROLE admin2 WITH LOGIN PASSWORD 'admin2user123';
CREATE ROLE app1 WITH LOGIN PASSWORD 'app1user123';
CREATE ROLE app2 WITH LOGIN PASSWORD 'app2user123';
CREATE ROLE dev1 WITH LOGIN PASSWORD 'dev1user123';
CREATE ROLE dev2 WITH LOGIN PASSWORD 'dev2user123';
CREATE ROLE readonly1 WITH LOGIN PASSWORD 'readonly1user123';
CREATE ROLE readonly2 WITH LOGIN PASSWORD 'readonly2user123';
... und jetzt kommt es zu problemen.
Ich würde die Rechtevergabe über Gruppen erledigen.
Die admin1, admin2 haben später die Möglichkeit Tabellen etc. zu erstellen. Dann wäre mal der eine, mal der andere der "Owner".
Gestern habe ich noch eine Funktion/Trigger gefunden, welches automatisch die Owner Rechte bei Erstellung einer Tabelle, der admin_grp geben würde.
Dies hat auch wunderbar funktioniert.
Heute Morgen habe ich noch eine einfachere Möglichkeit gefunden ...
ALTER ROLE admin1 SET ROLE admin_grp;
ALTER ROLE admin2 SET ROLE admin_grp;
... in meinem ersten Test hat dies auch wunderbar funktioniert.
Wenn ich es gerade probiere, kommt es aber zu einem >>> HINWEIS: Berechtigung fehlt, um Rolle »admin_grp« zu setzen <<<
Ich habe einiges probiert, irgendwie hab ich es hin bekommen. Wie weiß ich aber nicht wie ...
Mache ich aktuell ein "ALTER ROLE admin1 SET ROLE admin_grp;" wird dies direkt ohne Fehlermeldung mit "ALTER ROLE" bestätigt.
Bei der zweiten Gruppe "developer_grp" kommt es aber immer noch zu dieser Meldung. "HINWEIS: Berechtigung fehlt, um Rolle »developer_grp« zu setzen"
SELECT current_user, session_user;
current_user | session_user
--------------+--------------
dbadmin | dbadmin
An SET dbadmin; lag es nicht. Ich habe auch schon SET developer_grp; probiert etc.
Was mache ich gerade falsch? Ist es die Reihenfolge?
Als postgres würde es sich natürlich setzen lassen.
Fehlen "dbadmin" noch zusätzliche Rechte, oder mache ich in der Reihenfolge etwas falsch?
Viele Grüße
Chris