PostgreSQL Utenti APP

Navigation:  DATABASE > PostgreSQL > PostgreSQL Gestione Utenti >

PostgreSQL Utenti APP

Previous pageReturn to chapter overviewNext page

Il principio di funzionamento è questo:

il DB di connessione è C00000 per tutti

lo schema targettato è "public"

gli oggetti che devono essere resi disponibili sono tabelle, sequenze, funzioni

I permessi e gli utenti possono essere creati, revocati, impostati o tramite PgAdmin III nella finestra di proprietà dell'oggetto alla voce Privileges (o Default Privileges) o tramite script presenti in "R:\postgresql\sql\areaapp\sql x gestione utenti c00000".

 

 

 

Premessa

 

Il database mette a disposizione due tipi di utente che nella terminologia Postgres vengono definiti roles:

1.group roles: sono utenti per i quali solitamente si determinano le operazioni che possono fare sugli oggetti del database, non hanno facoltà di connettersi al database tramite un'interfaccia client

2.login roles: sono gli utenti tramite i quali un certo client si connette al DB, solitamente non hanno espliciti diritti verso gli oggetti del database

 

L'obbiettivo è quindi quello di avere differenti group roles con gli opportuni permessi verso gli oggetti database, questi group roles grantano ai login roles i diritti per operare sul database. In questo modo posso attivare/disattivare utenti di accesso (login roles) semplicemente assegnadogli o disassegandogli ai group roles.

 

Lo schema public è grantato di default al ruolo public, ruolo a cui appartengono di default TUTTI gli utenti (roles) creati.

Grantare i diritti di USAGE (uso) ad un utente per lo schema public indica che l'utente può "vedere" gli oggetti presenti nello schema, poi l'utilizzo di tali oggetti è determinato dai privilegi assegnati all'utente.

 

 

Preparazione del server

 

creazione dei group roles: sono gli utenti che opereranno sul DB quindi vengono suddivisi per tipologia:

oapp- sono gli utenti che si collegano tramite app o tramite demone PHP per operare sul C00000

olog- sono gli utenti che opereranno sol DB di log ActivityDb

oswa- sono gli utenti usati dai programmi gestionali swa per operare sul C00000

owes- sono gli utenti usati da WEb Service per operare sul C00000

 

Gli script che creano questi utenti sono denominati:
"create group role ...-group.sql"

 

esempio di script di creazione:

 

-- Role: es2000-app-group

 

-- DROP ROLE "es2000-app-group";

 

CREATE ROLE "es2000-app-group"

  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

COMMENT ON ROLE "es2000-app-group" IS 'utente di app es2000, ruolo operativo su DB';

 

Come si nota non viene indicata una password perchè non è implementata.

 

creazione dei permessi standard sullo schema public: con questo settaggio si fa sì che i nuovi oggetti che verranno creati all'interno dello schema public prendano di default i diritti grantati al group role.
 
clip0287_zoom50
notare che i privilegi sono per tipologia di oggetti: tabelle, sequenze, funzioni, tipi
 
Questo per esempio è lo script che crea i diritti di default per un group role "es2000-app-group":

 

ALTER DEFAULT PRIVILEGES IN SCHEMA public

    GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES

    TO "es2000-app-group" WITH GRANT OPTION;

 

ALTER DEFAULT PRIVILEGES IN SCHEMA public

    GRANT SELECT, UPDATE, USAGE ON SEQUENCES

    TO "es2000-app-group" WITH GRANT OPTION;

 

ALTER DEFAULT PRIVILEGES IN SCHEMA public

    GRANT EXECUTE ON FUNCTIONS

    TO "es2000-app-group" WITH GRANT OPTION;

 

La presenza del parametro WITH GRANT OPTION è importante perchè permetterà al role di grantare a sua volta i diritti concessi.

 

concessione dei permessi al group role: con questa operazione si vanno a concedere i per eseguire determinate operazioni SQL sugli oggetti (tabelle, sequenze, funzioni) attualmente presenti nel DB. In questo caso se si usa PgAdmin si deve selezionare la cartella degli oggetti interessati, poi click con il pulsante dx e quindi selezionare la voce su "Grant Wizard..." e da lì parte un interfaccia che permette di selezionare gli oggetti ed assegnargli i diritti opportuni.
 
clip0288_zoom50     clip0289_zoom50
 
Si fa prima usando lo script "grant partial to role ...-group on C00000.sql", di cui sotto c'è un esempio:
 
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA PUBLIC to GROUP "es2000-app-group" WITH GRANT OPTION;
GRANT SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA PUBLIC to GROUP "es2000-app-group" WITH GRANT OPTION;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA PUBLIC to GROUP "es2000-app-group" WITH GRANT OPTION;

 

 

Creazione Nuovo Utente di Accesso

 

Questo è lo step che viene ripetuto per ciascun utente client che deve accedere al DB: con questa procedura si crea un login role che permetterà l'accesso al database e che potrà operare sugli oggetti del DB tramite il group role a cui verrà associato.

Questa procedura è preferibile farla tramite PgAdmin III in questo modo viene creato un hash MD5 per la password, altrimenti esempio di script:

 

Esempio di creazione di un utente per SWA gestionale SWU_C04351

 

-- Role: SWU_C04351

 

-- DROP ROLE "SWU_C04351";

 

CREATE ROLE "SWU_C04351" LOGIN

  ENCRYPTED PASSWORD 'md5c7bf75bb0109d66c5c121497cb6f17ad'

  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

GRANT "es2000-swa-group" TO "SWU_C04351";

COMMENT ON ROLE "SWU_C04351" IS 'Swa User, pwd=2016!swu#c04351!';

 

 

Esempio di creazione di un utente di Web service WSU_ES2000

 

-- Role: WSU_ES2000

 

-- DROP ROLE "WSU_ES2000";

 

CREATE ROLE "WSU_ES2000" LOGIN

  ENCRYPTED PASSWORD 'md5817f55be3baecc1250c0aa77cf09b025'

  NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

GRANT "es2000-wes-group" TO "WSU_ES2000";

COMMENT ON ROLE "WSU_ES2000" IS 'User Webservice, pwd=2000!wsu';