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

Sql server SQL Server仅限制对本地服务器的访问,sql-server,security,Sql Server,Security,有没有办法限制从SQLServerManagementStudio到SQLServer再到数据库服务器的访问?或者到给定的IP地址 这种情况下,允许一组用户(在Windows组中)通过应用程序访问数据库,但应使用SQL Server Management Studio拒绝访问 我读了几篇关于应用程序角色等的文章,但我需要使用经过身份验证的用户进入数据库。management studio也只是一个客户端,因此您无法在那里禁用它们 您可以做的是拒绝他们的win帐户访问,这样他们就无法通过SSM进行

有没有办法限制从SQLServerManagementStudio到SQLServer再到数据库服务器的访问?或者到给定的IP地址

这种情况下,允许一组用户(在Windows组中)通过应用程序访问数据库,但应使用SQL Server Management Studio拒绝访问


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

management studio也只是一个客户端,因此您无法在那里禁用它们

您可以做的是拒绝他们的win帐户访问,这样他们就无法通过SSM进行连接

然后,在您的应用程序中,每个用户都有自己的sql登录名,但密码必须对他们隐藏。

在MS sql 2008(不确定是否为2005年)中,您可以在登录事件时编写DLL触发器

CREATE TRIGGER trigger_name 
     ON ALL SERVER 
    [ WITH <logon_trigger_option> [ ,...n ] ]
    { FOR | AFTER } LOGON
在本例中,此查询返回“Microsoft SQL Server Management Studio” 因此,您可以检查程序名称并引发错误。 我不知道如果您在登录触发器中引发错误会发生什么,但您可以尝试一下

如果这不符合您的预期,即用户不会被拒绝访问数据库,至少您可以在日志表中写入一条记录,说明用户正试图使用MS SQL MS访问数据库,以便您可以采取一些管理措施

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

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

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