SQL Server仅限制对本地服务器的访问

时间:2009-07-02 09:51:09

标签: sql-server security

有没有办法限制从SQL Server Management Studio到SQL Server到数据库服务器的访问?或者到给定的IP地址?

案例是允许一组用户(在Windows组中)通过应用程序访问数据库,但应使用SQL Server Management Studio拒绝访问。

我阅读了几篇关于应用程序角色的文章,但我需要使用经过身份验证的用户进入数据库。

2 个答案:

答案 0 :(得分:2)

在MS SQL 2008中(不确定2005年),您可以在登录事件

上编写DLL触发器
CREATE TRIGGER trigger_name 
     ON ALL SERVER 
    [ WITH <logon_trigger_option> [ ,...n ] ]
    { FOR | AFTER } LOGON

定义应用程序名称,您可以使用这样的语句

select program_name from master.dbo.sysprocesses with (nolock)
where spid = @@spid

在我的情况下,此查询返回'Microsoft SQL Server Management Studio' 因此,您可以检查program_name并引发错误。 我不知道如果你在LOGON触发器内引发错误会发生什么,但你可以尝试一下。

如果这不能按照预期的方式工作,即不会拒绝用户访问数据库,至少可以将记录写入日志表,说明用户尝试使用MS SQL MS访问数据库所以你可以采取一些行政措施。

但是,此方法应被视为仅作为临时解决方案。您应该使用用户,角色和架构来保护数据库敏感数据。某些数据(密码,信用卡号)应存储在加密列中。

考虑到您的用户可以从任何支持ODBC或本机.NET客户端的应用程序从Access和Excel连接到数据库......他们甚至可以编写一个小的VBScript通过ADO连接到那里。因此,有许多不同的工具和应用程序可以向用户显示表中的数据。并且它不是通过应用程序名称限制访问的好方法 - 它应该使用标准安全选项进行限制。

答案 1 :(得分:0)

管理工作室也只是一个客户,因此你无法在那里禁用它们。

您可以做的是拒绝他们的赢取帐户访问权限,以便他们无法通过ssms进行连接。

然后在你的应用程序中,每个用户都拥有自己连接的sql登录名,但密码必须隐藏起来。