Sicurezza Database
Requisiti di sicurezza 
• Integrità 
• Verificabilità 
• Riservatezza 
• Autenticazione utente 
• Disponibilità
Integrità del DB 
Include sia l’integrità fisica che logica. 
La struttura del DB deve essere 
conservata ed i dati devono essere 
protetti dal danneggiamento. 
Soluzione: 
• Backup periodici 
• Registro delle transazioni
Integrità dell’elemento 
Implica la correttezza/accuratezza dell’elemento. Sia utenti che 
programmi possono compiere errori nell’inserimento/modifica dei dati. 
Soluzione: 
• Controlli di campo (correttezza dell’elemento) 
• Controllo degli accessi 
• Registro delle modifiche
Verificabilità 
Deve essere possibile rintracciare chi o che cosa ha eseguito l’accesso 
agli elementi del DB. 
Soluzione: 
• Generare un record di verifica di tutti gli accessi
Riservatezza 
Un utente deve poter avere accesso solo ai dati autorizzati nelle 
modalità autorizzate. 
Soluzione: 
• Controllo degli accessi
Autenticazione utente 
Ogni utente deve essere identificato. 
Soluzione: 
• Autenticazione utente rigorosa 
(password, Smart card, caratteristiche biometriche)
Disponibilità 
Gli utenti devono avere accesso al DB in generale e a tutti i dati di cui 
dispongono l’autorizzazione
Autorizzazioni nel linguaggio SQL 
Mediante le istruzioni GRANT e REVOKE è possibile, concedere e revocare 
privilegi e autorità. 
Autorità 
SYSADM 
DBADM 
Privilegi 
SELECT 
UPDATE 
INSERT 
ALTER 
DELETE 
REFERENCES 
CONTROL
Sintassi Comandi 
Grant 
GRANT { ALL | < lista di privilegi > } 
ON [ TABLE ] <table name> 
TO { <lista di utenti e gruppi> | PUBLIC } 
[ WITH GRANT OPTION ] 
Revoke 
REVOKE { ALL | < lista di privilegi > } 
ON [ TABLE ] <table name> 
FROM { <lista di utenti e gruppi> | PUBLIC }
Proprietà sintassi 
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(attr) 
• ALL conferisce tutti i privilegi che chi conferisce il privilegio può 
passare ad altri, ma in ogni caso non CONTROL 
• PUBLIC concede/toglie i privilegi specificati a tutti gli utenti, inclusi 
quelli futuri 
• E’ inoltre possibile, se se ne ha il diritto, concedere il diritto di 
propagare tali privilegi, specificando la clausola WITH GRANT 
OPTION.
Esempio Grant 
Paperino autorizza Pippo e Topolino a leggere la tabella Operai 
e a modificare i valori di Salario; inoltre concede loro di passare 
questo privilegio ad altri utenti: 
Paperino> GRANT SELECT, UPDATE(Salario) 
ON TABLE Operai TO USER Pippo, USER Topolino 
WITH GRANT OPTION 
… e Pippo ne approfitta subito: 
Pippo> GRANT SELECT 
ON TABLE Operai TO USER Pluto 
Pluto può eseguire query su Operai, ma non aggiornamenti; 
inoltre non può passare lo stesso privilegio ad altri
Esempio Revoke 
Se Pippo, che non ha autorità DBADM o SYSADM, né CONTROL su Operai, 
prova ad eseguire: 
Pippo> REVOKE SELECT 
ON TABLE Operai FROM Pluto 
si verifica un errore. 
Viceversa, se Paperino ha autorità DBADM ed esegue 
Paperino> REVOKE SELECT 
ON TABLE Operai FROM Pippo, Topolino 
né Pippo né Topolino possono più eseguire query su Operai, ma continuano 
a poter aggiornare Salario. 
Notare che Pluto mantiene il privilegio SELECT su Operai
Note 
A differenza del GRANT, per eseguire REVOKE bisogna avere 
l’autorità SYSADM o DBADM, oppure il privilegio di CONTROL sulla 
Tabella. 
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)

Sicurezza database

  • 1.
  • 2.
    Requisiti di sicurezza • Integrità • Verificabilità • Riservatezza • Autenticazione utente • Disponibilità
  • 3.
    Integrità del DB Include sia l’integrità fisica che logica. La struttura del DB deve essere conservata ed i dati devono essere protetti dal danneggiamento. Soluzione: • Backup periodici • Registro delle transazioni
  • 4.
    Integrità dell’elemento Implicala correttezza/accuratezza dell’elemento. Sia utenti che programmi possono compiere errori nell’inserimento/modifica dei dati. Soluzione: • Controlli di campo (correttezza dell’elemento) • Controllo degli accessi • Registro delle modifiche
  • 5.
    Verificabilità Deve esserepossibile rintracciare chi o che cosa ha eseguito l’accesso agli elementi del DB. Soluzione: • Generare un record di verifica di tutti gli accessi
  • 6.
    Riservatezza Un utentedeve poter avere accesso solo ai dati autorizzati nelle modalità autorizzate. Soluzione: • Controllo degli accessi
  • 7.
    Autenticazione utente Ogniutente deve essere identificato. Soluzione: • Autenticazione utente rigorosa (password, Smart card, caratteristiche biometriche)
  • 8.
    Disponibilità Gli utentidevono avere accesso al DB in generale e a tutti i dati di cui dispongono l’autorizzazione
  • 9.
    Autorizzazioni nel linguaggioSQL Mediante le istruzioni GRANT e REVOKE è possibile, concedere e revocare privilegi e autorità. Autorità SYSADM DBADM Privilegi SELECT UPDATE INSERT ALTER DELETE REFERENCES CONTROL
  • 10.
    Sintassi Comandi Grant GRANT { ALL | < lista di privilegi > } ON [ TABLE ] <table name> TO { <lista di utenti e gruppi> | PUBLIC } [ WITH GRANT OPTION ] Revoke REVOKE { ALL | < lista di privilegi > } ON [ TABLE ] <table name> FROM { <lista di utenti e gruppi> | PUBLIC }
  • 11.
    Proprietà sintassi Iprivilegi 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(attr) • ALL conferisce tutti i privilegi che chi conferisce il privilegio può passare ad altri, ma in ogni caso non CONTROL • PUBLIC concede/toglie i privilegi specificati a tutti gli utenti, inclusi quelli futuri • E’ inoltre possibile, se se ne ha il diritto, concedere il diritto di propagare tali privilegi, specificando la clausola WITH GRANT OPTION.
  • 12.
    Esempio Grant Paperinoautorizza Pippo e Topolino a leggere la tabella Operai e a modificare i valori di Salario; inoltre concede loro di passare questo privilegio ad altri utenti: Paperino> GRANT SELECT, UPDATE(Salario) ON TABLE Operai TO USER Pippo, USER Topolino WITH GRANT OPTION … e Pippo ne approfitta subito: Pippo> GRANT SELECT ON TABLE Operai TO USER Pluto Pluto può eseguire query su Operai, ma non aggiornamenti; inoltre non può passare lo stesso privilegio ad altri
  • 13.
    Esempio Revoke SePippo, che non ha autorità DBADM o SYSADM, né CONTROL su Operai, prova ad eseguire: Pippo> REVOKE SELECT ON TABLE Operai FROM Pluto si verifica un errore. Viceversa, se Paperino ha autorità DBADM ed esegue Paperino> REVOKE SELECT ON TABLE Operai FROM Pippo, Topolino né Pippo né Topolino possono più eseguire query su Operai, ma continuano a poter aggiornare Salario. Notare che Pluto mantiene il privilegio SELECT su Operai
  • 14.
    Note A differenzadel GRANT, per eseguire REVOKE bisogna avere l’autorità SYSADM o DBADM, oppure il privilegio di CONTROL sulla Tabella. 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)