2010-08-24 3 views
2

J'essaie de configurer la sécurité de mon application pour les utilisateurs. Je ne suis pas sûr de ma logique. Est-ce que ce qui suit est possible:Gestion des utilisateurs dans MSSQL

Je souhaite créer 1 connexion pour 'tous les utilisateurs' dans Active Directory. Ensuite, je veux qu'un admin (dans le programme self) choisisse quel utilisateur est dans quel rôle de serveur (par exemple marketing, ventes, ...). Ensuite, je veux donner ces autorisations de rôles aux tables de la base de données.

Quelques questions à ce sujet:

  • cela est sans danger? L'administrateur du programme doit être propriétaire de DB?
  • Est-il possible de lister les utilisateurs par leur nom, au lieu de la connexion 'Tous les utilisateurs', l'administrateur doit être en mesure de placer un utilisateur dans un rôle après sa création dans Ad.
  • utiliser la fonction SUSER_NAME(), sera ce retour à l'utilisateur actuel ou le nom de groupe « Tous les utilisateurs »

Si cela est la bonne façon de faire de la sécurité, s'il vous plaît envoyez-moi dans la bonne direction.

Merci!

+0

Ajoutez-vous des utilisateurs au serveur SQL à partir de votre application et définissez-vous les autorisations ou stockez-vous les autorisations dans la logique de votre application? – u07ch

+0

No.Je veux 1 connexion qui permette à tous les utilisateurs d'Active Directory d'accéder automatiquement à la base de données (ce n'est pas un problème je suppose). Ensuite, j'ai des rôles sur le serveur mssql avec des noms comme: marketing, ventes. Donc maintenant, par table, j'ai défini des autorisations pour tous les rôles possibles. En fait, je ne veux pas qu'un utilisateur accède à quelque chose lors de la première connexion. Un administrateur doit mettre l'utilisateur dans un rôle spécifique (dans l'application), il doit donc voir l'utilisateur. Que l'utilisateur obtient les autorisations du rôle. – VeeWee

+0

L'utilisateur va-t-il interagir directement avec la base de données? Si ce n'est pas votre application doit être le seul point d'entrée à la base de données avec autant de comptes/rôles que vous avez besoin, géré à partir de l'application. – jfrobishow

Répondre

0

Une partie de la meilleure solution réside déjà dans votre désir d'utiliser Active Directory pour authentifier vos utilisateurs. Laissez-le autoriser vos utilisateurs aussi bien. Le marketing n'est pas simplement un rôle de base de données qui spécifie l'accès à vos tables. C'est un département de votre entreprise avec des partages de fichiers, des listes de diffusion ainsi qu'un rôle à jouer dans votre application. Obtenez votre administrateur de domaine pour créer un groupe AD appelé Marketing et laissez-les ajouter et supprimer des personnes, le cas échéant. De même pour le service des ventes et les autres services qui touchent votre base de données.

Quand cela est fait, ajoutez le MYDOMAIN \ groupe marketing en tant que connexion sur votre serveur et comme un utilisateur dans votre base de données. Il se comportera plus ou moins comme les rôles que vous avez décrits afin que vous puissiez continuer à créer les rôles, ajouter ce groupe de domaine au rôle et accorder au rôle ou octroyer directement à cet utilisateur car il identifie un groupe de personnes. Cela vous donne également la possibilité de reconsidérer vos définitions de rôle. Sont-ils vraiment au sujet des personnes de vente et des personnes de vente ou sont-ils des rôles CustomerEditor, CustomerViewer, ProfitAndLossViewer?

La gestion des utilisateurs et des groupes est une fonction standard de l'administration AD; laissez-les faire ce qu'ils font le mieux. Il n'a probablement pas besoin de figurer trop fortement dans votre solution à moins que vous n'obteniez un service très médiocre de la part des administrateurs de domaine, auquel cas, pourquoi utiliser votre AD pour gérer vos utilisateurs?

Ce très petit changement libérera probablement beaucoup de votre temps de développement et vous libèrera de réinventer une facilité de gestion d'utilisateur qui existe déjà et est facile à utiliser.

Bonne chance!

+0

Oui, merci pour la réponse! J'ai déjà essayé de l'implémenter. On dirait de faire le boulot! – VeeWee

0

Voici ce que je ferais:

créer deux rôles sur la base de données, un utilisateur, un administrateur. puis créez deux groupes de sécurité dans l'annonce, SQL.App.Admin, SQL.App.Users (remplacez l'application par le nom de votre application). J'attribuerais alors ces groupes aux rôles dans la base de données. après cela, vous pouvez déposer des utilisateurs et/ou des groupes de sécurité dans ces deux groupes.

Questions connexes