2010-12-09 28 views
0

Mon objectif est d'empêcher l'accès direct des utilisateurs au serveur de base de données. Une façon consiste à créer un service WCF ou un service Web au milieu entre l'application frontale et le serveur de base de données.usurpation d'identité de base de données

Tout d'abord, les utilisateurs seront authentifiés à l'application. Par la suite, l'application se connectera via le service WCF pour effectuer des opérations de logique métier. Le service WCF effectuera les opérations liées à la base de données en utilisant un compte Windows. Cela empêchera les autres utilisateurs d'accéder directement au serveur de base de données, car l'autorisation ne sera accordée qu'à un compte Windows spécifique. Voici mes questions: Même si l'accès à la base de données n'est accordé qu'à un compte Windows et que le WCF utilisera ce compte Windows pour effectuer des opérations liées à la base de données, est-il possible de marquer toutes les opérations liées à la base de données? dans l'utilisateur?

Mise à jour
Merci pour les réponses. On dirait que le scénario ci-dessus n'est pas réalisable. J'explore actuellement la fonction Rôle d'application SQL 2008. Un exemple est here. Mais après une exploration plus poussée, il semble qu'il y ait un problème avec la mise en commun des connexions.

Mise à jour
Il y a un fil de débordement de pile here concernant l'application SQL Server Rôle

+0

accordées, je ne connais personne en utilisant les rôles d'application ... – gbn

Répondre

0

Vous devez avoir tous les utilisateurs configurés dans sys.server_principals pour activer le changement de contexte comme EXECUTE AS, ce qui signifie qu'ils ont un accès direct à la base de données de toute façon.

Si vous avez activé/kerberos délégation, de même. Liens One et Two

Vous devez transmettre le nom d'utilisateur en tant que paramètre à chaque appel SQL ou utiliser CONTEXT_INFO.

Note: chaque utilisateur MS Office a MSQRY32.EXE qui agit comme un outil de requête. Si vous voulez pas d'accès direct DB, vous devez vous assurer qu'il n'y a pas définir des autorisations ou

0

Depends.

Si votre base de données et un service WCF sont sur la même boîte et vous font beaucoup de jiggery pokery à usurper l'identité d'alors il est possible. Dès que vous déplacez votre base de données à une autre boîte, il cesse de fonctionner.

C'est une limitation connue et la raison est l'usurpation d'identité va créer un jeton qui vous emmènera dans une boîte, mais ce n'est pas passable à une autre boîte. J'ai essayé de trouver le Q & A où MS gars avait répondu, mais toujours pas pu. Chaque fois que je le trouve, mettra à jour.