2017-11-28 5 views
2

Ich möchte einen Benutzer in Postgres erstellen, die SELECT nur in allen Tabellen der aktuellen Datenbank vornehmen können. Wie kann ALL Tabellen in Puppe angeben?Wie definiert man einen Benutzer mit SELECT-Privilegien mit Marionette?

Hier ein Auszug meiner Puppen Datei:

... 
postgresql::server::database_grant { 'PnBP': 
    privilege => 'CREATE', 
    db  => 'db', 
    role  => 'role', 
} 

postgresql::server::table_grant { 'SELECT': 
    privilege => 'SELECT', 
    table  => 'ALL', 
    db  => 'db', 
    role  => 'role', 
} 
... 

Aber wenn ich das Wort angeben ALL es funktioniert nicht. Hier ist der Fehler:

Fehler:/Stage [main]/Main/Node [Standard]/Postgresql :: Server :: Table_grant [PnBP]/Postgresql :: Server :: Grants [table: PnBP]/Postgresql_psql [Zuschuss: Tabelle: PnBP]: konnte nicht bewerten: Fehler 'es sei denn' -Klausel Auswertens, kehrte pid 30443 Ausgang 1: 'ERROR: relation "alle" existiert nicht'

ich das doc überprüfen, aber es doesn Geben Sie nicht an, wie die Berechtigungen für alle Tabellen angewendet werden.

table : Specifies the table to which you are granting access.

postgresql::server::table_grant

+1

ich in den Code gegraben für Sie und die Liste der zulässigen Werte für diesen Parameter hier: https://github.com/puppetlabs/ puppetlabs-postgresql/blob/master/manifesten/server/grant.pp # L6-L20. Überprüfen Sie, wie Sie 'ALL' in das konvertieren, wonach das Modul sucht. –

+0

Ich habe versucht, den Wert auf "ALLE TABELLEN IN SCHEMA" zu setzen, was aussieht, als müsste es basierend auf diesem Link gültig sein, aber ich bekomme nur 'FEHLER: ungültige Namenssyntax', wenn ich das versuche. –

+1

Sieht so aus, als ob Marionette nicht direkt damit umgehen kann, da die Bearbeitung von Postgres-Berechtigungen nicht einfach ist. Eine Problemumgehung wird von der Google-Gruppe für Puppet-Nutzer bereitgestellt: https://groups.google.com/forum/#!msg/puppet-users/6x2jBEXn-lE/mjr-yXkMBgAJ –

Antwort

1

Die Puppet-Dokumentation für Postgresql beschreibt ein postgresql :: Server :: GRANT-Option, die flexibler als die table_grant sieht, die eine einzige Tabelle einnimmt.

Sieht so etwas wie zu sein:

postgresql::server::grant{ 'SELECT': 
    object_type => 'ALL TABLES IN SCHEMA', 
    object_name => 'public', 
    privilege => 'SELECT', 
    db  => 'db', 
    role  => 'role', 
} 

https://github.com/puppetlabs/puppetlabs-postgresql#postgresqlservergrant

+0

Danke, das funktioniert für mich, Es ist nur wichtig, dem selben Benutzer die 'CONNECT'-Rechte hinzuzufügen. Danke vielmals. – winter

Verwandte Themen