Controllo dell’ accesso al Database -Ad11

La protezione del database e l’ accesso

L’accesso al database è l’attuazione della sicurezza informatica nel campo delle basi di dati. Il termine “sicurezza” viene spesso sostituito dal termine autorizzazione; si parla quindi di modelli di autorizzazione, gestione delle autorizzazioni, regole di autorizzazione. Si trattano solo misure di sicurezza logica per i dati, ossia le procedure che assicurano che l’accesso di dati avvenga solo da parte di soggetti autorizzati secondo le modalità (lettura, scrittura, ecc) autorizzate.

Controllo dell’accesso

Vediamo alcune informazioni su come i meccanismi di privilegi del database si basino sulle istruzioni GRANT e REVOKE. Tuttavia, a volte è possibile utilizzare le funzioni del sistema operativo come ulteriore metodo di controllo dell’accesso a un database.

  • Privatezza: protezione selettiva della base di dati in modo da garantire l’accesso solo agli utenti autorizzati
  • Meccanismi per identificare l’utente (tramite parola chiave o password):

– Quando si collega al sistema informatico
– Quando accede al DBMS

• Utenti individuali e gruppi di utenti

Autorizzazioni

Ogni componente dello schema può essere protetto (tabelle, attributi, viste, domini, etc.). Il proprietario di una risorsa (il creatore) assegna privilegi (autorizzazioni) agli altri utenti. Un utente predefinito _system rappresenta l’amministratore di sistema e ha pieno accesso a tutte le risorse
• Un privilegio è caratterizzato da:

– la risorsa
– l’utente che concede il privilegio
– l’utente che riceve il privilegio
– l’azione che viene consentita sulla risorsa
– la possibilità di passare il privilegio ad altri utenti.

Tipi di privilegi

SQL offre 6 tipi di privilegi

insert: per inserire un nuovo oggetto nella risorsa
update: per modificare il contenuto della risorsa
delete: per rimuovere un oggetto dalla risorsa
select: per accedere al contenuto della risorsa in una query
references: per costruire un vincolo di integrità referenziale che coinvolge la risorsa (può limitare la modificabilità della risorsa)
usage: per usare la risorsa in una definizione di schema (es., un dominio)
all privileges li riassume tutti

GRANT e REVOKE

Comandi che rientrano nell’Amministrazione gerarchica: esistono gerarchie di amministratori, ciascuno responsabile di una porzione della base di dati, collegati fra loro da privilegi GRANT/REVOKE di amministrazione.

• Per concedere un privilegio a un utente:

grant < Privilegi | all privileges > on Risorsa
to Utenti [ with grant option ]

– grant option specifica se deve essere garantita la possibilità di propagare il privilegio ad altri utenti
• Per revocare un privilegio:

revoke Privilegi on Risorsa from Utenti
[ restrict | cascade ]

Esempi

grant all privileges on Ordine to User1
grant update(Importo) on Ordine to User2
grant select on Ordine to User2, User3

revoke update on Ordine from User1
revoke select on Ordine from User3

Esempio di uso, grant option

1 Database administrator

grant all privileges on Ordine to
User1
with grant option

2 User1

grant select on Ordine to User2
with grant option

3 User2

grant select on Ordine to User3

Revoca di un privilegio con cascata

1 Database administrator

grant select on Ordine to User1
with grant option

2 User1

grant select on Ordine to User2

3 Database administrator

revoke select on Ordine from User1
cascade

Revoca di un privilegio con cascata

revoca privilegio accesso

Viste e autorizzazioni di accesso

Viste = unità di autorizzazione
• Consentono la gestione ottimale della privatezza

Esempio: gestione dei conti correnti

esempio accesso

Banca

ContoCorrente(NumConto, Filiale,
Cliente, CodFisc, DataApertura, Saldo)

Transazione(NumConto, Data, Progr,
Causale, Ammontare)

Requisiti di accesso

requisiti d' accesso

Viste relative alla prima filiale

create view Conto1 as
( select *

from ContoCorrente
where Filiale = 1)

create view Transazione1 as
( select *

from Transazione
where NumConto in

( select NumConto
from Conto1 ) )

 

Autorizzazioni relative ai dati della prima filiale

grant all privileges on Conto1
to Funzionari1
grant update(Saldo) on Conto1
to Cassieri1
grant select on Conto1
to Cassieri1, Cassieri2, Cassieri3
grant select on Transazione1
to Funzionari1
grant all privileges on Transazione1
to Cassieri1
grant select on Transazione1
to Cassieri2, Cassieri3