2010-08-10 6 views
1

De nombreuses applications de bureau utilisent des tables SQL pour gérer les autorisations et les rôles de leurs utilisateurs. En fait, ils restreignent l'accès à certaines parties de l'application dans leur code d'application. Cela signifie qu'ils ont besoin d'une chaîne de connexion constante au serveur SQL avec des autorisations maximales.Quelle est la meilleure façon de gérer les autorisations d'application de bureau de base de données?

Mon objectif est C# 2010, SQL Server 2005 ou 2008.

si avec quelque raison que quelqu'un trouve cette chaîne de connexion? (Traçage réseau, logiciel de piratage, Fired employé ou ...), il peut tout changer avec seulement Managemenst Studio et vous ne pouvez pas comprendre quel client l'a fait. Si vous voulez changer de chaîne de connexion. Vous devez le faire dans de nombreux clients et dans un mauvais design, vous devez recompiler l'application.

Donc, je veux savoir est-il une bonne idée d'utiliser le vrai login SQL au lieu du nom d'utilisateur et mot de passe dans les tables? faire une chaîne de connexion pour chaque utilisateur par SQL Logins?

De cette façon, il n'y a pas peur de perdre la chaîne de connexion. Aussi dans les codes SQL, vous pouvez utiliser la fonction GetUser() pour indiquer quel utilisateur a réellement exécuté la requête?

Mais peut-être que l'autorisation de gestion est difficile de cette façon car il n'y a pas de table simple pour gérer les permissions et les utilisateurs.

Dans une longue phrase. Je veux savoir Quelle est la meilleure façon d'authentifier les utilisateurs d'applications de bureau de telle sorte que la gestion des autorisations puisse être faite et que le serveur sql peut également enregistrer l'activité des utilisateurs?

Répondre

1

Dans la mesure du possible, utilisez l'authentification Windows.

Définir les rôles. Ajouter des groupes aux rôles Ajouter des utilisateurs à des groupes (selon la manière habituelle de Windows de gérer les autorisations du système de fichiers).

Choosing an Authentication Mode

Voir: Application Roles

+0

L'authentification Windows signifierait que tous les utilisateurs possibles doivent être ajoutés à la base de données. Il ne s'agit pas d'une solution très maniable dans ce scénario ... – jeroenh

+2

@jeroenh: l'authentification Windows sur SQL peut utiliser des groupes de sécurité. Vous n'avez pas besoin d'ajouter chaque utilisateur individuellement (et de nombreuses organisations auront déjà défini des groupes appropriés). –

0

Vous pouvez crypter des sections sensibles de votre fichier app.config. La dernière fois que j'ai vérifié, il faut passer par des cerceaux, mais ce n'est pas si difficile à mettre en place.

Voir par exemple this question

+0

Dès que vous perdez le contrôle de l'environnement d'exécution de votre logiciel, vous ne pouvez plus garder le secret, car tout ce que votre application sait peut également être consulté par un attaquant. Par exemple, en utilisant un débogueur ou en effectuant le vidage du noyau du processus. Vous pouvez seulement rendre plus difficile à retirer. – MauganRa

0

Pour une meilleure sécurité, vous avez besoin d'un compte de base de données dédiée par l'utilisateur; chaque compte ne devrait avoir que les privilèges nécessaires pour les tâches que l'utilisateur correspondant peut effectuer. Normalement, vous accordez des privilèges aux rôles (par exemple "clerk", "manager", "supervor") et accordez ces rôles aux utilisateurs. Évidemment, cela demande du travail pour identifier les privilèges dont chaque rôle a besoin. Dans de nombreux cas, il peut être nécessaire de ne pas autoriser l'accès direct à certaines tables, mais uniquement aux vues de base de données qui masquent certaines parties qui ne doivent pas être visibles ou aux procédures stockées qui effectuent des vérifications supplémentaires et vérifient que chaque transaction est traité dans son ensemble.

Questions connexes