我们需要构建一个在访问我们的多租户 SQL 数据库的客户服务器上运行的 EXE 应用程序。
对于我们在 Web 应用程序中使用的每个表,我们都有一个列 SubscriberId,以将用户限制为仅属于他们的 SubscriberId 的记录——这非常好(在我们的服务器上)。
我们有一个 Exchange 到 SQL 服务,该服务在我们的服务器上运行,它将 Exchange 联系人和约会同步到我们的 SQL 表。一个问题是我们需要客户授予我们 Exchange 'ApplicationImpersonation' 角色,以便我们访问他们服务器上的数据 - 这意味着我们可以访问他们的整个 Exchange 数据库存储。
大多数客户都愿意为我们提供该访问级别,但少数客户不希望我们拥有该级别的访问权限——这是可以理解的。
我们的同步应用程序是一个 C# .NET 控制台应用程序,我们希望对其进行调整,以便最终用户在他们的服务器上安装该应用程序并使其与我们的服务器远程同步。
问题:是否可以在 SQL Server 2008R2 上创建一个用户,该用户只能访问该用户过滤的 WHERE SubscriberId = 201 的行(例如)。
我们将允许端口 1433 访问他们的服务器,并且用户/密码将用于 App.config 中的连接字符串。
如果是这样,我们可以在 Windows exe 应用程序中创建一个管理面板,在其中设置 SQL 用户/密码及其 Exchange 超级用户。然后他们可以远程同步 - 但只能在我们的 SQL 数据库中看到他们自己的记录。
否则,我们似乎需要重新设计应用程序以使用 API 和备用安全方案。那显然需要做更多的工作:-(
谢谢,查尔斯