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