Si vous voulez un contrôle finement précis sur qui peut faire quoi, je ne pense pas que vous puissiez faire beaucoup - vous le faites très bien.
approche de GBN est tout à fait astucieux - une autre approche pour les configurations « simples » (lorsque vous n'avez pas besoin de beaucoup de différentes autorisations) est à:
accorder à chaque utilisateur (ou un rôle) le base de données rôle db_datareader
- ce qui permet un accès en lecture (SELECT) sur toutes les tables et vues
accorder à chaque utilisateur (ou un rôle) le rôle de base de données db_datawriter
- ce qui permet l'accès d'écriture (INSERT, UPDATE, DELETE) sur toutes les tables et vues
Si vous devez également accorder des droits d'exécution sur des procédures stockées, il n'y a malheureusement pas de rôle prédéfini à utiliser. Vous pouvez cependant créer votre propre rôle de base de données, puis accorder des autorisations d'exécution à ce rôle. La grande chose est: cette autorisation d'exécuter des procédures stockées s'applique également à toutes les procédures stockées futures que vous pourriez créer dans votre base de données!
Pour définir votre nouveau rôle, utilisez ceci:
CREATE ROLE db_executor
GRANT EXECUTE TO [db_executor]
et vous pouvez simplement attribuer db_executor
aux utilisateurs qui ont besoin d'être en mesure d'exécuter procs et de fonctions stockées dans votre base de données.
J'aime cette question: nous n'avons pas souvent de questions sur la sécurité DB. Est-ce que la plupart des gens utilisent dbo ou sa, je me demande ...? – gbn
@gbn: Je crains que vous pourriez être ici - la plupart du temps en utilisant "sa" même dans le système de production - "ça marche juste" ..... –