允许用户使用ado.net Windows身份验证访问SQL,但使用SSMS限制它们

时间:2016-02-25 03:18:12

标签: windows authentication ado.net ssms

我们有一个Windows应用程序,允许用户使用Windows身份验证连接到SQL。

问题是该应用程序的用户还在其桌面上安装了SSMS,因此他们也可以使用Windows身份验证连接到prod db。

有没有办法可以限制用户在SSMS上使用Windows身份验证访问prod db,但他们应该能够使用Windows身份验证从本地系统访问Windows应用程序?

2 个答案:

答案 0 :(得分:0)

如果我理解你的情景:

  • 您在服务器' A'
  • 上有一个内部本地数据库
  • 您还在服务器' A'
  • 上有一个生产数据库
  • 使用自定义Windows应用程序,用户只能看到本地非生产数据库
  • 但是,使用SSMS用户可以在Server' A'上看到生产和本地数据库,并且您希望只有授权用户才能看到生产数据库。

如果是这种情况,您要在SSMS中执行的操作是撤消对所有生产数据库的数据库视图权限,除非该用户是数据库的sysadmin或所有者。在您的服务器上运行以下命令:

USE MASTER
GO
DENY VIEW ANY DATABASE TO PUBLIC
GO

运行上述语句后,除非您是系统管理员或您的登录名是数据库的所有者,否则您将无法在SSMS中看到任何数据库。

来源:https://www.mssqltips.com/sqlservertip/2995/how-to-hide-sql-server-user-databases-in-sql-server-management-studio/

答案 1 :(得分:0)

也许您可以通过使用应用程序角色限制对数据库对象的访问... Msdn:"您可以使用应用程序角色来仅对通过特定应用程序连接的用户访问特定数据"