none
Account di accesso RRS feed

  • Domanda

  • Ho creato un account di accesso associandolo al mio database. A questo utente gli ho dato i permessi di esecuzione di alcune stored procedure.
    Sono entrato con questo account con sql server management studio da un'altra postazione  accertandomi che questo utente può solo eseguire queste stored procedure e non vedere tutto il resto del database. Però ho visto che può vedere altre informazioni del server, come alcune tabelle di sistema, l'elenco degli account di accesso ed altre cose. Questo account di accesso è associato allo schema dbo, è questo il motivo ?
    Io vorrei fare in modo che non vedesse proprio niente, si può fare ?

    Grazie delle vostre risposte

    giovedì 7 giugno 2012 13:16

Risposte

  • No, scusami. In questo modo essendo database owner può fare ogni genere di operazione sul database...

    Per limitargli i permessi alle sole SP devi lasciarlo unicamente nel ruolo public ed assegnare i permessi EXECUTE direttamente alle SP.

    Per non visualizzare nulla puoi rimuovere dal ruolo "public" il permesso VIEW ANY DATABASE, ma tieni presente che a quel punto nessun utente potrà più vedere gli oggetti per i quali non hanno i permessi!


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    lunedì 11 giugno 2012 15:17

Tutte le risposte

  • Ciao,

    quando crei un nuovo utente, questo viene associato al ruolo public, che consente la gestione dei permessi "di default" validi per tutti gli utenti. Tra i permessi associati al ruolo public ci sono, ad esempio, la visibilità di alcune tabelle del database master che contengono metadati.

    Al ruolo public viene associato anche il permesso VIEW ANY DATABASE, che consente, appunto, di elencare tutti i database presenti nel server (questo ovviamente non significa poterci accedere).

    Quindi per rispondere alla tua domanda:

    1) Rendi l'utente che hai creato proprietario del database

    ALTER AUTHORIZATION ON DATABASE::MioDatabase to MioUtente

    2) Rimuovi il permesso VIEW ANY DATABASE per l'utente

    DENY VIEW ANY DATABASE TO MioUtente

    A questo punto collegandoti da SSMS vedrai ancora i metadati dei database di sistema, ma solamente gli oggetti sui quali hai accesso.

    Il fatto che l'utente sia associato allo schema dbo non c'entra con i permessi di accesso: dbo è lo schema di default nel quale vengono creati i nuovi oggetti, a meno che chi ha progettato il db non lo abbia pensato diversamente (vedi ad esempio il db AdventureWorks, che contiene diversi schemi).

    HTH


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    lunedì 11 giugno 2012 07:40
  • Ciao Danilo, grazie della tua risposta.
    Se rendo l'utente che ho creato proprietario del database, resta limitato all'esecuzione delle stored procedure che gli ho assegnato ( perchè è quello che voglio ) ?
    oppure può anche eseguire altre operazioni ? come per esempio creazione,modifica,cancellazione di tabelle e stored procedure (quello che non voglio ) ?

    Grazie ancora

    lunedì 11 giugno 2012 14:07
  • No, scusami. In questo modo essendo database owner può fare ogni genere di operazione sul database...

    Per limitargli i permessi alle sole SP devi lasciarlo unicamente nel ruolo public ed assegnare i permessi EXECUTE direttamente alle SP.

    Per non visualizzare nulla puoi rimuovere dal ruolo "public" il permesso VIEW ANY DATABASE, ma tieni presente che a quel punto nessun utente potrà più vedere gli oggetti per i quali non hanno i permessi!


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

    lunedì 11 giugno 2012 15:17