Capitolo 18. Ruoli e privilegi del database
Il Ottobre 25, 2021 da adminI ruoli del database sono concettualmente completamente separati dagli utenti del sistema operativo. In pratica potrebbe essere conveniente mantenere una corrispondenza, ma non è necessario. I ruoli del database sono globali in un’installazione di cluster di database (e non per singolo database). Per creare un ruolo usa il comando CREATE ROLE SQL:
CREATE ROLE name;
nome segue le regole per gli identificatori SQL: o disadorno senza caratteri speciali, o tra virgolette. (In pratica, di solito si desidera aggiungere ulteriori opzioni, come LOGIN, al comando. Maggiori dettagli appaiono più avanti). Per rimuovere un ruolo esistente, usa l’analogo comando DROP ROLE:
DROP ROLE name;
Per comodità, i programmi createuser e dropuser sono forniti come involucri attorno a questi comandi SQL che possono essere chiamati dalla riga di comando della shell:
createuser namedropuser name
Per determinare l’insieme dei ruoli esistenti, esamina il catalogo di sistema pg_roles, per esempio
SELECT rolname FROM pg_roles;
Il meta-comando \du del programma psql è anche utile per elencare i ruoli esistenti.
Per avviare il sistema di database, un sistema appena inizializzato contiene sempre un ruolo predefinito. Questo ruolo è sempre un “superutente”, e per default (a meno che non venga modificato durante l’esecuzione di initdb) avrà lo stesso nome dell’utente del sistema operativo che ha inizializzato il cluster di database. Di solito, questo ruolo si chiama postgres. Per creare altri ruoli devi prima connetterti come questo ruolo iniziale.
Ogni connessione al server di database è fatta nel nome di qualche ruolo particolare, e questo ruolo determina i privilegi di accesso iniziali per i comandi emessi su quella connessione. Il nome del ruolo da usare per una particolare connessione al database è indicato dal client che sta iniziando la richiesta di connessione in modo specifico per l’applicazione. Per esempio, il programma psql usa l’opzione della linea di comando -U per indicare il ruolo con cui connettersi. Molte applicazioni assumono il nome dell’utente corrente del sistema operativo per default (inclusi createuser e psql). Perciò è spesso conveniente mantenere una corrispondenza di nome tra i ruoli e gli utenti del sistema operativo.
L’insieme dei ruoli del database con cui una data connessione client può connettersi è determinato dalla configurazione dell’autenticazione del client, come spiegato nel Capitolo 20. (Quindi, un client non è necessariamente limitato a connettersi come ruolo con lo stesso nome del suo utente del sistema operativo, proprio come il nome di login di una persona non deve necessariamente corrispondere al suo vero nome). Poiché l’identità del ruolo determina l’insieme dei privilegi disponibili per un client connesso, è importante configurarlo attentamente quando si imposta un ambiente multiutente.
Lascia un commento