Ruoli e permessi
La sezione Permessi è un browser di ruoli e privilegi per PostgreSQL. Dispone i
ruoli di un server in stile Finder, in colonne affiancate: scegli un ruolo a sinistra e le
colonne alla sua destra mostrano di chi è membro, chi è membro di esso e che cosa può
effettivamente fare su ogni oggetto del database — compreso tutto ciò che possiede solo
indirettamente, tramite appartenenze ereditate o tramite PUBLIC. Ruoli,
appartenenze, privilegi, privilegi predefiniti e proprietà si possono creare, modificare e
revocare direttamente lì.
Nota: al momento questa sezione supporta solo PostgreSQL. Per qualsiasi altra connessione mostra I permessi non sono ancora supportati per … / Al momento è supportato solo PostgreSQL.

Aprire la sezione
Fai clic sull’icona Permessi (l’icona con le persone) nella barra laterale sinistra. La sezione lavora su una connessione già aperta nella sezione Database: in alto viene mostrata la stessa striscia delle schede di connessione aperte, e la sezione usa la scheda di connessione selezionata lì. Se non c’è alcuna connessione aperta mostra Nessuna connessione aperta — aprine prima una (vedi Gestione dei database). Le colonne vengono ricostruite ogni volta che entri nella sezione, quindi qualsiasi selezione precedente viene azzerata.
Tutto ciò che fai qui richiede gli stessi privilegi che richiederebbe l’SQL equivalente
(CREATEROLE, superuser o la proprietà dell’oggetto, a seconda dell’azione) — OmniDB
esegue le istruzioni con le credenziali della connessione che stai usando. Le tre colonne si
possono ridimensionare trascinando la sottile maniglia sul loro bordo destro; un doppio clic su
una maniglia ripristina quella colonna, e le larghezze vengono ricordate.
Colonna 1: ruoli
La colonna Ruoli elenca tutti i ruoli del server, compresi i ruoli predefiniti
pg_*, ordinati per nome. I ruoli che possono accedere (utenti) hanno un’icona con una
sola persona; quelli che non possono (gruppi) un’icona con due persone; i superutenti sono
contrassegnati da (superutente) e i ruoli il cui account è scaduto da (scaduto).
La prima riga è sempre PUBLIC (icona del globo) — non un vero ruolo, ma lo pseudo-ruolo
a cui ogni ruolo appartiene implicitamente, in modo che i privilegi concessi a PUBLIC
si possano esplorare e modificare allo stesso modo.
La casella sopra l’elenco filtra i ruoli per nome, e l’elenco a discesa accanto a essa per tipo: Tutti i ruoli, Utenti (possono accedere), Gruppi (senza accesso), Superutenti o Scaduti.
Fai clic su un ruolo per metterlo a fuoco; le altre colonne mostrano allora quel ruolo. Sotto l’elenco:
- + apre la finestra Crea ruolo: Nome del ruolo, Password e le caselle degli attributi Può accedere (attiva per impostazione predefinita), Superutente, Può creare database, Può creare ruoli, Eredita i privilegi dei ruoli di cui è membro (attiva per impostazione predefinita), Può avviare la replica e Ignora la sicurezza a livello di riga, più Limite di connessioni (-1 = illimitato) e Scadenza dell’account (lascialo vuoto per nessuna scadenza).
- − elimina il ruolo selezionato (disattivato per
PUBLIC).

Il clic destro su un ruolo (non PUBLIC) offre:
- Cambia password — chiede due volte la nuova password. Prima dell’invio la password viene sottoposta a hash nel formato per cui è configurato il server stesso (SCRAM-SHA-256 o md5).
- Modifica attributi — gli stessi campi degli attributi di Crea ruolo, precompilati con i valori attuali del ruolo. Svuotando Scadenza dell’account si rimuove la scadenza.
- Rinomina ruolo —
ALTER ROLE … RENAME TO. Permessi, appartenenze e proprietà seguono il ruolo; la finestra avverte che PostgreSQL cancella una password memorizzata come md5 quando il ruolo viene rinominato. - Esporta permessi / Esporta i permessi di tutti i ruoli — uno script SQL copiabile
che ricrea i permessi:
CREATE ROLE(solo attributi), appartenenze, privilegi diretti sugli oggetti e privilegi predefiniti, con le istruzioni di ogni database sotto una propria intestazione. Ogni parte si può disattivare e lo script viene rigenerato; Salva come file… lo memorizza (una finestra di salvataggio nativa nell’app desktop, un download nel browser). Password, concessioni diPUBLIC, proprietà e impostazioni dei ruoli non vengono esportate. - Clona ruolo — crea un nuovo ruolo con gli attributi del ruolo di origine e, facoltativamente,
le sue appartenenze dirette e i suoi privilegi diretti sugli oggetti in ogni database (individuati
tramite
pg_shdepend, così i database in cui non detiene nulla non vengono mai aperti). La password non viene copiata; puoi impostarne una nella finestra. Privilegi predefiniti, oggetti posseduti e impostazioni per singolo ruolo non vengono copiati. - Elimina ruolo — se il ruolo possiede ancora oggetti o detiene privilegi, la finestra elenca,
per database, che cosa possiede e detiene e chiede quale ruolo subentra nella proprietà dei suoi
oggetti. OmniDB esegue poi
REASSIGN OWNEDeDROP OWNEDin ogni database interessato (in quest’ordine, così nulla viene eliminato) prima diDROP ROLE. Senza alcuna dipendenza chiede semplicemente conferma.

Colonna 2: appartenenze
La seconda colonna è divisa in due metà:
- … — Membri (in alto): i ruoli che sono membri del ruolo a fuoco. Con
PUBLICa fuoco elenca tutti i ruoli, poiché tutti ottengono implicitamente i privilegi diPUBLIC. - … — Membro di (in basso): ogni ruolo a cui appartiene il ruolo a fuoco,
direttamente o tramite altri ruoli, riunito in un unico elenco.
PUBLICè sempre elencato per primo.
In entrambe le metà le appartenenze dirette sono mostrate in testo normale e quelle indirette
(ereditate) in corsivo con un’icona sbiadita. Un’appartenenza diretta concessa WITH ADMIN OPTION è
contrassegnata da (admin option); da PostgreSQL 16 in poi, (senza ereditarietà) e (senza SET)
contrassegnano le appartenenze prive dell’opzione INHERIT o SET.
- Il pulsante + sotto Membro di apre Concedi appartenenza: scegli uno o più ruoli (fai clic sulle righe per attivarli/disattivarli) di cui rendere membro il ruolo a fuoco, facoltativamente Con opzione di amministrazione (admin option). Da PostgreSQL 16 in poi la finestra offre anche le scelte INHERIT e SET (Predefinito del server / Sì / No).
- Il pulsante + sotto Membri apre Aggiungi membro: la stessa finestra nel verso opposto — i ruoli scelti diventano membri del ruolo a fuoco.
- − (oppure clic destro → Rimuovi appartenenza) revoca un’appartenenza dopo aver chiesto Revocare l’appartenenza a "…"?. Si possono rimuovere solo le appartenenze dirette; una ereditata va revocata là dove è effettivamente concessa.
- Clic destro → Modifica opzioni di appartenenza modifica sul posto l’opzione admin di
un’appartenenza diretta e (da PostgreSQL 16 in poi) le opzioni
INHERIT/SET. - Un doppio clic su una riga, oppure clic destro → Imposta come ruolo attivo, mette a fuoco quel ruolo, esattamente come se avessi fatto clic su di esso nella colonna Ruoli — il modo più rapido per risalire una catena di ereditarietà.
Colonna 3: oggetti e privilegi effettivi
La terza colonna, … — Oggetti, è un albero di tutto ciò su cui il ruolo a fuoco ha un
qualsiasi privilegio — i suoi privilegi effettivi: le concessioni dirette più tutto ciò
che eredita tramite le sue appartenenze e tramite PUBLIC. Parte con due gruppi,
Database (tutti i database del server) e Tablespace; un nodo è mostrato
normalmente se il ruolo vi ha qualche privilegio, altrimenti in grigio. La casella in alto
filtra database e tablespace per nome e conserva il testo quando cambi ruolo.
L’espansione di un database ne carica gli oggetti tramite una connessione separata a quel database (il database attivo della scheda di connessione non cambia): gli Schemi e, all’interno di ciascuno schema, cartelle per Tabelle, Viste, Sequenze, Funzioni, Procedure, Viste materializzate, Tipi e Domini; i foreign data wrapper e i foreign server si trovano direttamente sotto il database. Vengono elencati solo gli oggetti su cui il ruolo ha effettivamente un privilegio (gli schemi di sistema sono esclusi); uno schema mostrato in grigio è presente solo perché lo è qualcosa al suo interno. Ogni database ha inoltre due cartelle in più: Oggetti posseduti (n), che elenca ciò che il ruolo possiede lì (fino a 1000 voci), e Privilegi predefiniti, descritta più avanti. Se non c’è proprio nulla, il database mostra Nessun privilegio su alcun oggetto di questo database.

Modificare i privilegi
Fai clic con il tasto destro su un database, un tablespace, uno schema o un oggetto e scegli Modifica privilegi. La finestra elenca come caselle di controllo tutti i privilegi validi per quel tipo di oggetto:
- database:
CREATE,CONNECT,TEMPORARY; - tablespace:
CREATE; schema:CREATE,USAGE; - tabella, vista e vista materializzata:
SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER; - sequenza:
USAGE,SELECT,UPDATE; - funzione e procedura:
EXECUTE; - tipo, dominio, foreign data wrapper e foreign server:
USAGE.
Le caselle mostrano ciò che il ruolo detiene direttamente:
- selezionata — concessa direttamente al ruolo; deselezionala per
revocarla con
REVOKE; - non selezionata — non concessa direttamente; selezionala per concederla con
GRANT. Se il ruolo ha già il privilegio tramite un altro ruolo oPUBLIC, resta non selezionata ed è etichettata Ereditato da: … — puoi comunque selezionarla per concederla direttamente, così sopravvive alla rimozione dell’appartenenza da cui proveniva. Per togliere un privilegio ereditato, revocalo alla sua origine (rendi attivo il ruolo di origine con Imposta come ruolo attivo).

Con opzione di concessione (grant option) si applica ai privilegi che concedi ex novo in quella finestra. Conferma con Salva.
Per concedere qualcosa su un oggetto che non è ancora nell’albero, usa il pulsante
+ (Aggiungi privilegio su oggetto) sotto la colonna: scegli il Tipo di oggetto, poi il
Database (per tutto tranne database e tablespace; il valore predefinito è il database
corrente della connessione), lo Schema per gli oggetti a livello di schema, l’Oggetto
stesso (le funzioni sono mostrate con la firma degli argomenti), seleziona i Privilegi e,
facoltativamente, Con opzione di concessione (grant option). Per tabelle, sequenze, funzioni
e procedure la scelta Ambito si può cambiare da Oggetto selezionato a Tutte le …
dello schema, con Concedi o Revoca: OmniDB esegue allora GRANT/REVOKE
… ON ALL … IN SCHEMA, che riguarda gli oggetti esistenti ora, non quelli creati in seguito.
Selezionando PUBLIC nella prima colonna puoi modificare ciò che è concesso a
PUBLIC stesso (GRANT … TO PUBLIC / REVOKE … FROM PUBLIC).
Privilegi predefiniti
La cartella Privilegi predefiniti di un database elenca le voci di ALTER DEFAULT PRIVILEGES
che coinvolgono il ruolo a fuoco, come beneficiario o come ruolo creatore. Sono il modo per coprire
gli oggetti creati in futuro. Fai clic con il tasto destro sulla cartella per Aggiungi privilegi
predefiniti: scegli il ruolo creatore (Per oggetti creati da), lo schema (o tutti gli
schemi), il tipo di oggetto (tabelle, sequenze, funzioni, tipi, schemi) e i privilegi. Fai clic con il
tasto destro su una voce esistente per Modifica privilegi (vengono concessi o revocati solo i
segni di spunta che cambi) o Rimuovi privilegi predefiniti.
Proprietà e chi ha accesso
- Cambia proprietario (menu contestuale di qualsiasi oggetto nella colonna Oggetti)
esegue
ALTER … OWNER TOper l’oggetto. - Chi ha accesso è la vista inversa: elenca ogni ruolo che può fare qualcosa
con l’oggetto e perché — proprietario, concessione diretta, ereditato tramite un’appartenenza o
superutente — più
PUBLIC, con i contrassegni della grant option. Le risposte provengono dalle funzionihas_*_privilegedi PostgreSQL stesso, quindi corrispondono a ciò che il server consente realmente. I ruoli che hanno solo ciò chePUBLICdà a tutti sono esclusi e i superutenti sono raggruppati in un gruppo compresso; facendo clic su un ruolo lo si rende il ruolo attivo.

Anteprima dell’SQL
Le finestre per creare, modificare, rinominare e clonare ruoli, aggiungere appartenenze, concedere o modificare privilegi, privilegi predefiniti e cambiare proprietari hanno un riquadro comprimibile Mostra SQL. Mostra le istruzioni esatte che i valori attuali del modulo eseguirebbero — costruite dallo stesso codice server della chiamata reale, nulla viene eseguito, le password sono mascherate — e le mantiene aggiornate al variare del modulo. Copia SQL le copia.
Importante: confermare una finestra esegue le istruzioni sul server immediatamente — non c’è annullamento. Controllale prima con Mostra SQL. Anche Elimina ruolo, Rimuovi appartenenza e Rimuovi privilegi predefiniti chiedono una conferma. Se il server rifiuta un’istruzione, ne viene mostrato il messaggio di errore.