【问题标题】:How to secure SQL Server Management Studtio如何保护 SQL Server Management Studio
【发布时间】:2012-12-24 13:07:53
【问题描述】:

我在客户端系统上安装了 SQL Server 2008 R2 Express。我们得到的信息表明,有些人只是打开了 Management Studio 并更改了数据。

我们如何才能阻止这种情况发生?我们可以记录他们正在改变什么?

【问题讨论】:

标签: sql-server security authentication authorization sql-server-2008r2-express


【解决方案1】:

我们怎样才能阻止这种情况发生

更改 SQL Server 上的登录名。用户只能连接到他们拥有凭据的数据库和服务器。

如果您使用 Windows 登录进行身份验证,您将需要使用自己的登录名(使用 runas 等)运行需要数据库的任何应用程序,同样只授予对应用程序的访问权限。

【讨论】:

  • 是否有可能我们可以在 sql server management studio 中禁用 Windows 身份验证,当我们的技术人员需要登录时,他可以启用 Windows 身份验证。
  • @faheemkhan - 我不知道这种可能性。
【解决方案2】:

我无法理解runas .但我使用了@Martin Smith 的想法 并构建下面的解决方案。

它将用于禁用所有非 sa 用户在任何登录中进行任何活动。 我没有在活动目录中测试它。

  1. 拒绝写入
  2. 拒绝阅读
  3. 拒绝任何数据库
  4. 拒绝 Sql 连接。

    Create TRIGGER DisableSMSSEntry_trigger
    ON ALL SERVER  WITH EXECUTE AS 'sa'
    FOR LOGON
    
    AS
    
        BEGIN
        DECLARE @NtUserName AS NVARCHAR(100)
    
        IF ( (SELECT DISTINCT RTRIM(LTRIM(nt_user_name)) AS LogedUser  FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa') >0 )
        BEGIN
        SET @NtUserName= (SELECT DISTINCT RTRIM(LTRIM(nt_domain+'\'+nt_user_name)) AS LogedUser  FROM sys.dm_exec_sessions WHERE is_user_process = 1 AND login_name !='sa')
    
    
    
        DECLARE @membername  AS varchar(100),@rolename AS varchar(100)
        SET @membername=@NtUserName
        set @rolename ='DB_DenyDataWriter'
        EXEC sp_addrolemember @membername,@rolename
        set @rolename = 'DB_DenyDataReader'
        EXEC sp_addrolemember @membername,@rolename
    
        exec  (' DENY VIEW ANY DATABASE TO '+ @NtUserName )
        exec  ('DENY SQL CONNECT ' + @NtUserName )
        ROLLBACK
        END
    
    END
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 2013-11-17
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多