2010-08-11 1 views
2

Je viens de terminer la création d'un nouvel utilisateur pour ma base de données dans SQL Server. J'avais 4 tables que je voulais accorder des permissions d'insertion, de mise à jour, de sélection et de suppression. Je l'ai fait manuellement dans la zone Securables du nouvel utilisateur.Configuration d'un utilisateur dans ma base de données dans mon SQL Server

Existe-t-il une meilleure façon de faire cela que d'avoir à toucher chaque objet? si c'est le cas, comment?

Merci,

tige.

+0

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

+0

@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" ..... –

Répondre

2

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.

+0

Nous utilisons également des schémas pour les droits d'accès aussi ... – gbn

+0

Je vois comment donner db_datareader et écrivain à un utilisateur mais je ne sais pas comment le donner à un rôle? – Rod

4

Une façon est des schémas d'utilisation tels que

  • tables appartiennent à un schéma (nous allons l'appeler des données, CREATE SCHEMA)
  • utilisateurs appartiennent à un rôle (CREATE ROLE, sp_addrolemember)
  • autorisations sont attribuées à le rôle sur le schéma (GRANT INSERT ON schema::data to myRole)

Maintenant, vous pouvez ajouter de nouvelles tables ou changer d'utilisateur sans chanter/créer des permissions

+1

+1: joli résumé succinct – RedFilter

+0

Merci pour l'aide aussi, tige . – Rod

Questions connexes