top of page

Autorità e Privilegi

 

Nei DBMS ogni operazione deve essere autorizzata, ovvero l’utente che esegue l’operazione deve avere i privilegi necessari. „

I privilegi vengono concessi e revocati per mezzo delle istruzioni GRANT e REVOKE. „

Un principio fondamentale è che un utente che ha ricevuto un certo privilegio può a sua volta accordarlo ad altri utenti solo se è stato esplicitamente autorizzato a farlo. „

Mediante GRANT e REVOKE si controllano anche le autorità, ovvero il diritto ad eseguire azioni amministrative di un certo tipo.

 

GRANT

 

GRANT { ALL | < lista di privilegi > }

ON [ TABLE ]

TO { | PUBLIC } [ WITH GRANT OPTION ] „

 

I privilegi possibili includono quello “master” di CONTROL (posseduto automaticamente da chi ha creato l’oggetto) e quelli di ALTER, DELETE, INSERT, SELECT, INDEX, REFERENCES e UPDATE. „

Per REFERENCES e UPDATE si può anche specificare una lista di attributi „ ALL conferisce tutti i privilegi che chi conferisce il privilegio può passare ad altri, ma in ogni caso non CONTROL. „

PUBLIC concede i privilegi specificati a tutti gli utenti, inclusi quelli futuri.

 

Dettagli sui privilegi

 

„CONTROL: comprende tutti i privilegi (su una view sono solo SELECT, INSERT, DELETE e UPDATE). Inoltre permette di conferire tali privilegi ad altri utenti; può essere conferito solo da qualcuno che ha autorità SYSADM o DBADM „

ALTER: attribuisce il diritto di modificare la definizione di una tabella „

DELETE: attribuisce il diritto di cancellare righe di una tabella „

INDEX: attribuisce il diritto di creare un indice sulla tabella „

INSERT: attribuisce il diritto di inserire righe nella tabella „

REFERENCES: attribuisce il diritto di definire foreign keys in altre tabelle che referenziano la tabella „

SELECT: attribuisce il diritto di eseguire query sulla tabella/vista e di definire VIEW „

UPDATE: attribuisce il diritto di modificare righe della tabella/vista „ Per eseguire una query, è necessario avere il privilegio di SELECT o di CONTROL su tutte le table e le view referenziate dalla query

 

REVOKE

Il formato dell’istruzione REVOKE per revocare privilegi su tables e views è:

REVOKE { ALL | < lista di privilegi > }

ON [ TABLE ]

FROM { | PUBLIC } „

 

A differenza del GRANT, per eseguire REVOKE bisogna avere l’autorità SYSADM o DBADM, oppure il privilegio di CONTROL sulla relazione. „

Il REVOKE non agisce a livello di singoli attributi; pertanto non si possono revocare privilegi di UPDATE solo su un attributo e non su altri (per far ciò è quindi necessario revocarli tutti e poi riassegnare solo quelli che si vogliono mantenere)

 

esempio

„Se Pippo, che non ha autorità DBADM o SYSADM, né CONTROL su Employee, prova ad eseguire:

Pippo> REVOKE SELECT ON TABLE Employee FROM Pluto

si verifica un errore „

Viceversa, se Paperino ha autorità DBADM ed esegue

Paperino> REVOKE SELECT ON TABLE Employee FROM Pippo, Topolino

né Pippo né Topolino possono più eseguire query su Employee, ma continuano a poter aggiornare Salary

 

 

 

bottom of page