Technology Experience (Reborn 3)

Contenuti gestiti da Igor Damiani
posts - 895, comments - 1334, trackbacks - 81

My Links

News














  • Questo blog nasce dalle ceneri del mio blog tecnico su UGIdotNET. In questo blog voglio raccontare la mia vita, ovvero quello che non mi sento più di raccontare da nessun'altra parte. Non sono solo un programmatore, dannazione: sono una persona che ha una terribile passione per il proprio lavoro. Ma anche passione per la vita, per le donne, per la birra, per la mia Fiat 500, per il sole ed il mare, per la scrittura, per qualche risata con gli amici, per i sentimenti. Qua troverete tutto questo: buona lettura!.

    23/04/2007,
    Sant'Angelo Lodigiano

Tag Cloud

Archives

Post Categories

Amici

Sql Server 2008 e la sicurezza a livello di riga

Riprendo il tema sollevato dal collega di mio fratello, Michele, in un suo recente post. Michele scrive una semplice riga in uno pseudo-SQL che recita così:

GRANT SELECT ON tblCustomer TO user WHEN tblCustomer.City = “Milan”

Cioè, dare ad un utente il permesso di fare una SELECT su una tabella solo quando il valore di una colonna di quella tabella assume un determinato valore. Nell'esempio qui sopra, l'utente "user" può fare una SELECT sulla tabella "tblCustomer" solo quando ricerca all'interno della città "Milan".

Non so, qualcosa non mi torna. Non discuto sulla capacità di SQL Server 2008 di poter applicare questo tipo di sicurezza - non lo so e per adesso non lo voglio sapere. Quello che metto in discussione è che mi sembra di inserire nel database una logica applicativa che lì non dovrebbe stare.

Prendo la voce di Michele e la amplifico sul mio blog. Voi cosa ne dite?

Technorati Tags:  

Print | posted on giovedì 20 marzo 2008 21.47 | Filed Under [ .NET World ]

Feedback

Gravatar

# re: Sql Server 2008 e la sicurezza a livello di riga

Ciao Igor

se pensi che il database sia acceduto ora e PER SEMPRE solamente dalla tua applicazione allora potresti anche aver ragione....ma

1) un database è un'asset aziendale dove "n" applicazioni ed "m" utenti ci accederanno, e la sicurezza (percheè di questo stiamo parlando) non deve poter essere aggirata semplicemente non usando la tua applicazione ma un'altra

2) Non stiamo parlando di logica applicativa ma di logica di accesso ai dati e questo è il compito unico del database...altrimenti stai re-implementando (male) nella tua applicazione quello che invece fa già il db (un pò come l'integrità referenziale...)

Ciao!

PS
Quello che chiedi di fare lo si può ottenre (pur non potendo parlare di row-level security in senso stretto) con l'utilizzo delle viste.
21/03/2008 8.46 | Davide Mauri
Gravatar

# re: Sql Server 2008 e la sicurezza a livello di riga

Ciao Igor/Davide,
sinceramente concordo con Igor. Trovo la questa feature di SQL2008 sicuramente interessante ma veramente poco pratica e corretta da un punto di vista logico.
Davide, anche se è vero che un database tratta di logica di accesso ai dati e che l' accesso o meno ai dati filtrandone il contenuto tramite il comando "GRANT SELECT" è parte integrante della stessa logica è anche vero che il permettere o meno ad un utente di fare o meno certe cose è compito dell' applicativo e non del DB.

Proprio prendendo il tuo esempio, se vi fosse un' altro applicativo che utilizza lo stesso DB e magari servisse (per via di trigger attivati sulla tabella che fungano da logging delle operazioni o per altri mille esempi) usare lo stesso medesimo user (in modo da sapere chi ha eseguito una determinata operazione) come farebbe lo sviluppatore a sapere o meno quali sono i diritti che questo user ha? Ipotizziamo anche che mamma Microsoft ha tirato fuori qualche sp che mi informi circa i diritti dell' utente, se per il nuovo programma (quindi unicamente logica applicativa) quei diritti mi cozzano (perché magari devo poter vedere o nascondere quei determinati record in quanto la mia logica applicativa è ovviamente diversa da quella precedente e a priori non si può sapere) con che "diritto" vado a modificare quei diritti che di per sé fanno parte della logica dell' altro programma?

Ripeto mi sembra una feature interessante ma poco corretta...



Gianluca
21/03/2008 13.36 | Gianluca
Gravatar

# Re: Sql Server 2008 e la sicurezza a livello di riga

secondo me, il succo del discorso è che Michele propone un utilizzo della GRANT per soddisfare un requisito che non è propriamente di sicurezza. O perlomeno non ne abbiamo la certezza. Che un utente voglia in quel momento vedere i dati di "Milano" non mi sembra un criterio di sicurezza, sinceramente.
Dovrei creare tanti utenti quante sono le province italiane? E dovrei dare a ciascuno di essi i permessi per accedere ai dati di ogni provincia? E se un giorno venisse creata la provincia di "Miradolo Terme" dovrei chiamare il db administrator per gestire i nuovi permessi?
Secondo me, Davide, le tue conclusioni sono più che giuste, ma non si applicano nello specifico all'esigenza di Michele: la logica che lui chiede mi sembra più un criterio di ricerca come un altro, e non di *sicurezza* in senso stretto.
ciao!
21/03/2008 14.20 | Igor Damiani

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 7 and 8 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET