Vorrei impostare un utente di "lettura" sulla mia istanza di SQL Server 2012. Vorrei concedergli il diritto di eseguire qualsiasi stored procedure, funzione o istruzione SQL diretta, che recupera i dati da tutte le tabelle e viste, ma non per aggiornare o inserire (ovvero leggere qualsiasi cosa e non scrivere nulla).
Posso configurarlo senza dare specificatamente i diritti a ciascuna funzione o procedura memorizzata per nome, ma piuttosto concedergli l'esecuzione su qualsiasi funzione o procedura memorizzata, togliendomi il diritto di modificare le tabelle?
Cambierà qualcosa se eseguo invece SQL Server 2008?
Chiarimenti e aggiunte:
- Se una procedura memorizzata modifica i dati, l'utente dovrebbe ricevere un messaggio di errore (negando la modifica o rifiutando completamente l'accesso alla procedura memorizzata).
- Se una potenziale soluzione prevede il rifiuto delle autorizzazioni, non posso semplicemente concedere determinate autorizzazioni invece di negare?
- È possibile applicare un rifiuto su tutte le tabelle, viste, ecc. (Esistenti ora e in futuro) nel database in un'unica istruzione?
GRANT
concedere autorizzazioni, DENY
negare autorizzazioni e REVOKE
rimuovere un GRANT
o DENY
. Senza un GRANT
o DENY
l'utente può ereditare le autorizzazioni, ad esempio ottenere l'accesso a una procedura memorizzata.
DENY DELETE, INSERT, UPDATE
su un database o uno schema, credo che influenzerà solo le tabelle e le viste.