Sql server 数据库访问模拟

Sql server 数据库访问模拟,sql-server,wcf-security,windows-authentication,Sql Server,Wcf Security,Windows Authentication,我的目标是防止用户直接访问数据库服务器。一种方法是在前端应用程序和数据库服务器之间创建WCF服务或Web服务。p> 首先,用户将通过应用程序的身份验证。随后,应用程序将通过WCF服务进行连接,以执行业务逻辑操作。WCF服务将使用一个windows帐户执行与数据库相关的操作。这将阻止其他用户直接访问数据库服务器,因为权限将仅授予特定的一个windows帐户 以下是我的问题:即使数据库访问权限仅授予一个windows帐户,并且WCF将使用此windows帐户执行与数据库相关的操作,是否可以使用登录用

我的目标是防止用户直接访问数据库服务器。一种方法是在前端应用程序和数据库服务器之间创建WCF服务或Web服务。p> 首先,用户将通过应用程序的身份验证。随后,应用程序将通过WCF服务进行连接,以执行业务逻辑操作。WCF服务将使用一个windows帐户执行与数据库相关的操作。这将阻止其他用户直接访问数据库服务器,因为权限将仅授予特定的一个windows帐户

以下是我的问题:即使数据库访问权限仅授予一个windows帐户,并且WCF将使用此windows帐户执行与数据库相关的操作,是否可以使用登录用户的凭据标记所有与数据库相关的操作

更新
谢谢你的回复。似乎上述情景是不可能实现的。我目前正在探索SQL 2008应用程序角色功能。其中一个例子是。但在进一步探索之后,显然存在连接池的问题

更新
SQL Server应用程序角色存在堆栈溢出线程

如果您的数据库和WCF服务位于同一个框中,并且您进行了大量的冒充,那么这是可能的。一旦你把数据库移到另一个盒子里,它就会停止工作


这是一个已知的限制,原因是模拟将创建一个令牌,该令牌将使您到达一个盒子,但这无法通过另一个盒子。我试图找到盖伊女士回答过的问题,但还是没能找到。无论何时我找到它,它都会更新。

您必须让每个用户在sys.server\u主体中设置,以启用上下文切换,如EXECUTE AS,这意味着他们无论如何都可以直接访问数据库

如果启用了kerberos/委派,则同样适用。链接和

您必须在每次SQL调用时将用户名作为参数传递,或者使用上下文信息


注意:每个MS Office用户都有MSQRY32.EXE,它充当查询工具。如果不希望直接访问数据库,则需要确保未设置或授予任何权限

我不知道有人使用应用程序角色。。。