none
Accesso a una sola vista RRS feed

  • 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

    lunedì 26 ottobre 2015 15:19

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

    lunedì 26 ottobre 2015 15:48
  • 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

    lunedì 2 novembre 2015 09:54
    Moderatore

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

    lunedì 26 ottobre 2015 15:48
  • 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
    martedì 27 ottobre 2015 08:57
  • 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

    lunedì 2 novembre 2015 09:54
    Moderatore