如何配置SQL Server用户以过滤多租户应用程序的表

时间:2014-03-17 00:13:57

标签: sql-server-2008 security multi-tenant row-level-security

我们需要构建一个EXE应用程序,该应用程序在访问我们的多租户SQL数据库的客户服务器上运行。

我们在Web应用程序中使用的每个表都有一个Column SubscriberId,用户可以将用户限制为只属于其SubscriberId的记录 - 这些记录完全正常(在我们的服务器上)。

我们有一个Exchange to SQL服务,它在我们的服务器上运行,可以将Exchange联系人和约会同步到我们的SQL表。问题是我们需要客户向我们授予Exchange' ApplicationImpersonation'我们在其服务器上访问数据的角色 - 这意味着我们可以访问整个Exchange数据库存储。

大多数客户都愿意允许我们访问级别,但有些客户不希望我们拥有该级别的访问权限 - 这是可以理解的。

我们的同步应用程序是一个C#.NET控制台应用程序,我们希望对其进行调整,以便我们可以让最终用户在其服务器上安装该应用程序,并使其与我们的服务器远程同步。

问题:是否可以在SQL Server 2008R2上创建一个只能访问该用户的行的用户,该用户已过滤WHERE SubscriberId = 201(例如)。

我们允许端口1433访问其服务器,用户/密码将用于App.config中的连接字符串。

如果是这样,我们可以在Windows exe应用程序中创建一个管理面板,在那里他们设置SQL用户/密码和他们的Exchange超级用户。然后他们可以远程同步 - 但只能在我们的SQL数据库中看到他们自己的记录。

否则,似乎我们需要重新使用应用程序以使用API​​和备用安全方案。那显然会有更多的工作: - (

谢谢,查尔斯

1 个答案:

答案 0 :(得分:0)

恕我直言,我可以建议以下解决方案。 1.您创建一个唯一的令牌,您可以使用该令牌通过某个配置或在控制台应用启动期间识别租户。 2.每个租户将通过使用令牌进行身份验证来呼叫您的服务。 3.只允许有效租户呼叫服务。可以通知休息这样的尝试。 4.您甚至可以设置服务和Web服务以使用刷新令牌以防止更安全。