venerdì, settembre 19, 2008

Basi di dati: Controllo dell'accesso: GRANT

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.

Nessun commento: