Modello di Autorizzazione del System R (GRANT)
E' simile a quello implementato nella maggior parte dei BBMS
E' un sistema chiuso (di default nessun permesso concesso) e discrezionale (a discrezione dell'amministratore concedere i privilegi)
La gestione dei privilegi è delegata agli owner e a quanti essi delegano mediante GRANT. Quando un utente riceve dei privilegi WITH GRANT OPTION può anche delegarli a sua volta.
I privilegi delegabili sono SELECT, INSERT, UPDATE e DELETE
Esempi:
GRANT UPDATE ON
Tabella
TO
Utente (da diritto di UPDATE a Utente su Tabella)
GRANT UPDATE (Campo1, Campo2) ON
Tabella
TO
Utente (da diritto di UPDATE a Utente su campo1 e Campo2 di Tabella)
GRANT SELECT ON
Tabella
TO
Utente
WITH GRANT OPTION (da diritto di SELECT a Utente su Tabella. Utente può a sua volta delegare tale diritto)
GRANT ALL PRIVILEGES ON
Tabella
TO
Utente (da tutti i diritti a Utente su Tabella)
Le informazioni delle GRANT stanno nel CATALOG, precisamente nelle tabelle SYSAUTH e SYSCOLAUTH (suppongo in postgreSQL).
Esempio di SYSOUT:
La colonna UPDATE può avere valori: N, SOME, ALL. Se è SOME nella tabella SYSCOLAUTH devono essere specificati i campi per cui ha diritto di UPDATE.
Nella colonna go è specificato se l'utente ha la GRANT OPTION
Eliminare una GRANT: REVOKE
Solo chi ha concesso privilegi può rimuoverli
REVOKE
Privilege
ON
Tabella
FROM
Utente
Se un utente ha ricevuto GRANT da più utenti è necessario che tutti questi gli facciano una REVOKE affinché vengano effettivamente rimossi (BELLO SCHIFO!)
La revoca è ricorsiva (se faccio la REVOKE su un utente che a sua volta tramite GRANT OPTION ha concesso ad altri vengono revocati anche a quest'ultimi)
Aggiungo il timestamp (s) del momento in cui la GRNT viene concessa nella SYSAUTH: così posso fare la revoca ricorsiva
Posso ridurre ad un grafo:
Se un privilegio è dato in modalità non delegabile viene barrato l'arco di congiungimento
Quando revoco un privilegio che aveva GRANT OPTION per la ricorsione valuta il timestamp:
Se A da SELECT a B nell'istante 1
B da SELECT a C nell'istante 2
D da SELECT a B nell'istante 3
B da SELECT a E nell'istante 4
Se A revoca a B allora verrà revocato anche il permesso a C, ma non a E
Sistemi commerciali
Altri permessi concedibili/revocabili:
USAGE -> (per domini o insiemi di caratteri) Abilita l'uso del nuovo dominio (tipo di dati)
Anche INSERT è applicabile a singole colonne
REFERENCES -> Abilita delle colonne a essere inserite in vincoli di integrità referenziale
Gestioni degli utenti per gruppi
Comando di REVOKE aggiunge delle clausole opzionali:
- Per rimuovere solo la GRANT OPTION
- RESTRICT / CASCADE (default) -> non viene messa la revoca a cascata
Contenuti gestiti da Michele Bernardi. Non mi assumo alcuna responsabilità sulla correttezza di questi dati, usateli a vostro rischio e pericolo.