Sicurezza dei database (terza parte)
I ruoli.
Un ruolo permette di raggruppare una serie di privilegi.
Viene concesso ad un utente, che quindi acquisisce tutti i privilegi presenti in esso, con l'istruzione GRANT:
GRANT nome_ruolo TO user [WITH ADMIN OPTION];
L'opzione consente all'utente, come per i privilegi, di concedere il ruolo ad altri.
La revoca avviene tramite la REVOKE:
REVOKE nome_ruolo FROM user;
In Oracle esistono tre ruoli predefiniti:
- Connect: consente l'accesso al database.
- Resource: racchiude i privilegi del precedente piu' la possibilita' di creare procedure, trigger ed indici.
- Dba: racchiude tutti i privilegi.
I ruoli vengono creati tramite l'istruzione
CREATE ROLE:
CREATE ROLE nomeruolo;
Quindi, ad esempio, per creare il ruolo magazzino dovremo digitare:
CREATE ROLE magazzino;
Questo nuovo ruolo non contiene privilegi, quindi e' ancora inutile. Dobbiamo concedere dei privilegi al ruolo, esattamente come si fa per gli utenti.
Ad esempio per concedere la select sulla tabella articoli al ruolo magazzino:
GRANT select ON articoli TO magazzino;
Una volta che tutti i privilegi sono stati concessi al ruolo, e' possibile concedere il ruolo a tutti gli utenti che hanno necessita' di possedere tali privilegi, nel nostro caso a tutti gli utenti magazzinieri.
Anche in questo caso si utilizza la GRANT:
GRANT impiegato TO jack;
Il grosso vantaggio dell'utilizzo dei ruoli e' dato dal fatto che per concedere o revocare un nuovo privilegio a tutti i magazzinieri basta concederlo o revocarlo al ruolo. Inoltre per aggiungere un nuovo utente magazziniere basta creare un utente e concedergli il ruolo magazzino.
La REVOKE permette anche di rimuovere un privilegio da un ruolo:
REVOKE select ON articoli FROM magazzino;
L'eliminazione di un ruolo avviene utilizzando la
DROP:
DROP ROLE magazzino;
Un corretto utilizzo dei ruoli facilita quindi notevolmente la gestione degli utenti di un database.