Je souhaite configurer un utilisateur "en lecture" sur mon instance SQL Server 2012. Je voudrais lui accorder le droit d'exécuter toute procédure stockée, ou fonction, ou instruction SQL directe, qui récupère les données de toutes les tables et vues, mais pas de mettre à jour ou d'insérer (c'est-à-dire de lire quoi que ce soit et d'écrire rien).
Puis-je configurer cela sans donner spécifiquement des droits à chaque fonction ou procédure stockée par nom, mais plutôt lui accorder le droit d'exécution sur n'importe quelle fonction ou procédure stockée, en lui retirant simplement le droit de modifier les tables?
Est-ce que quelque chose changera si j'exécute SQL Server 2008 à la place?
Clarifications et ajouts:
- Si une procédure stockée modifie des données, l'utilisateur doit recevoir un message d'erreur (refusant la modification ou refusant complètement l'accès à la procédure stockée).
- Si une solution potentielle implique le refus d'autorisations, puis-je simplement ne pas accorder certaines autorisations au lieu de les refuser?
- Un refus peut-il être appliqué à toutes les tables, vues, etc. (existantes maintenant et à l'avenir) dans la base de données en une seule instruction?
GRANT
pour accorder des autorisations, DENY
refuser des autorisations et REVOKE
supprimer un GRANT
ou DENY
. Sans GRANT
ou, DENY
l'utilisateur peut hériter des autorisations, par exemple en obtenant l'accès à une procédure stockée.
DENY DELETE, INSERT, UPDATE
une base de données ou un schéma, je pense que cela n'affectera que les tables et les vues.