.NET

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.

The Permissions section with three columns

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:

The Create Role dialog with the SQL preview

Il clic destro su un ruolo (non PUBLIC) offre:

The context menu of a role

Colonna 2: appartenenze

La seconda colonna è divisa in due metà:

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.

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.

The Objects column expanded down to the tables

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:

Le caselle mostrano ciò che il ruolo detiene direttamente:

The Edit Privileges dialog with the SQL preview

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

The Who Has Access dialog

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.