Principale utente con più risposte
Accesso a una sola vista

Domanda
-
Salve
vi ringrazio anticipatamente per l'attenzione. Devo permettere a un utente di sql di accedere a una sola vista del database. Solo a quella vista e a niente altro. Ho definito l'utente con
server roles: Public
User Mapping: niente
Securables Sql; Connect
Ho lanciato il comando
GRANT SELECT on nomevista to utente
ma se non mappo l'utente al database non mi permette di associare il permesso.
Sono andato sui permessi dell'utente e in User Mapping ho associato il database, che contiene la mia vista, lasciando come role Membership Public.
In questo modo accedo in sola lettura alla mia vista ma anche a tutte le tabelle, meno che non vada, tabella per tabella a negarne l'accesso.
Esiste un modo per definire il solo accesso a una sola tabella?
Grazie ancora
Risposte
-
Ciao mstdan,
Lo user mapping è necessario se vuoi fare in modo che il login acceda al database che contiene la tua vista.
Se tu crei un login senza aggiungere permessi particolari, esso verrà automaticamente associato al server role "public"; dopodiché potrai mappare il login ad uno user sul database di tuo interesse, che, di default, avrà il database role "public".A questo punto, il tuo utente non potrà accedere a nessun oggetto del database, a meno che non siano stati dati permessi eccessivi a "public", quindi mi sembra strano che l'utente possa accedere a tutte le tabelle.
Con
GRANT SELECT ON <vista> TO <utente>
permetti l'accesso in lettura alla vista, senza che l'utente abbia per forza permessi di SELECT anche sulle tabelle che compongono la vista, ed è corretto.
In sintesi, secondo me il tuo procedimento è giusto; verificherei che tipo di permessi sono stati assegnati a "public" sul database.
HTH,
Alberto Dallagiacoma
My Italian Blog: http://blogs.ugidotnet.org/alby
Twitter: http://twitter.com/albertodall
DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org- Proposto come risposta Emiliano Musso martedì 27 ottobre 2015 11:06
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator giovedì 26 novembre 2015 15:51
-
vediamo se i suggerimenti indicati qui ti aiutano
http://dba.stackexchange.com/questions/17177/how-to-add-a-user-with-access-to-a-single-view
Edoardo Benussi
Microsoft MVP - Directory Services
edo[at]mvps[dot]org- Contrassegnato come risposta Edoardo BenussiMVP, Moderator giovedì 26 novembre 2015 15:51
Tutte le risposte
-
Ciao mstdan,
Lo user mapping è necessario se vuoi fare in modo che il login acceda al database che contiene la tua vista.
Se tu crei un login senza aggiungere permessi particolari, esso verrà automaticamente associato al server role "public"; dopodiché potrai mappare il login ad uno user sul database di tuo interesse, che, di default, avrà il database role "public".A questo punto, il tuo utente non potrà accedere a nessun oggetto del database, a meno che non siano stati dati permessi eccessivi a "public", quindi mi sembra strano che l'utente possa accedere a tutte le tabelle.
Con
GRANT SELECT ON <vista> TO <utente>
permetti l'accesso in lettura alla vista, senza che l'utente abbia per forza permessi di SELECT anche sulle tabelle che compongono la vista, ed è corretto.
In sintesi, secondo me il tuo procedimento è giusto; verificherei che tipo di permessi sono stati assegnati a "public" sul database.
HTH,
Alberto Dallagiacoma
My Italian Blog: http://blogs.ugidotnet.org/alby
Twitter: http://twitter.com/albertodall
DotDotNet - User Group .NET Emilia Romagna: http://www.dotdotnet.org- Proposto come risposta Emiliano Musso martedì 27 ottobre 2015 11:06
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator giovedì 26 novembre 2015 15:51
-
salve
Grazie della risposta
sulla definizione dell'utente, alla voce Securables, nelle definizioni explicite è definito solo Connect SQL (Grant), ma se vado nelle definizioni effettive, mi trovo anche "View anydatabase". Se vado a negare la proprietà "view any database" (Deny") non vedo più il database sul quale è contenuta la vista. Se a "view any database" metto "with Grant" vedo tutte le tabelle.
Il problema pero persiste
Grazie
- Modificato mstdan martedì 27 ottobre 2015 11:08
-
vediamo se i suggerimenti indicati qui ti aiutano
http://dba.stackexchange.com/questions/17177/how-to-add-a-user-with-access-to-a-single-view
Edoardo Benussi
Microsoft MVP - Directory Services
edo[at]mvps[dot]org- Contrassegnato come risposta Edoardo BenussiMVP, Moderator giovedì 26 novembre 2015 15:51