Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何保护SQL Server管理研究_Sql Server_Security_Authentication_Authorization_Sql Server 2008r2 Express - Fatal编程技术网

Sql server 如何保护SQL Server管理研究

Sql server 如何保护SQL Server管理研究,sql-server,security,authentication,authorization,sql-server-2008r2-express,Sql Server,Security,Authentication,Authorization,Sql Server 2008r2 Express,我在客户端系统上安装了SQL Server 2008 R2 Express。我们得到的信息是,有些人只是打开ManagementStudio并更改数据 我们怎样才能阻止这种情况的发生,并记录他们正在改变什么 我们怎样才能阻止这种情况发生 更改SQL Server上的登录名。用户只能连接到他们具有凭据的数据库和服务器 如果您使用windows登录进行身份验证,那么您将需要使用自己的登录(使用或诸如此类)运行需要数据库的任何应用程序,并且只允许访问该应用程序 我们怎样才能阻止这种情况发生 更改SQL

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

我们怎样才能阻止这种情况的发生,并记录他们正在改变什么

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

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

如果您使用windows登录进行身份验证,那么您将需要使用自己的登录(使用或诸如此类)运行需要数据库的任何应用程序,并且只允许访问该应用程序

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

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


如果您使用windows登录进行身份验证,您将需要使用自己的登录(使用或类似方式)运行需要数据库的任何应用程序,并且只允许访问该应用程序。

我不知道如何使用
runas
.但是我用了@Martin Smith的主意 并构建下面的解决方案

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

  • 拒写
  • 拒绝阅读
  • 拒绝任何数据库
  • 拒绝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
    

  • 我无法理解
    runas
    .但是我用了@Martin Smith的主意 并构建下面的解决方案

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

  • 拒写
  • 拒绝阅读
  • 拒绝任何数据库
  • 拒绝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
    

  • 我们是否有可能在sql server management studio中禁用Windows身份验证,并且当我们的技术人员需要登录时,他可能会启用Windows身份验证。@faheemkhan-我不知道有这种可能性。我们是否有可能在sql server management studio中禁用Windows身份验证,以及当我们的技术人员需要登录时,他是否会禁用Windows身份验证可能会启用windows身份验证。@faheemkhan-我不知道有这种可能性。您可以采取的另一种措施是a,但这是客户端可以设置的,因此除了阻止某些人之外,不能依赖它!您可以采取的另一个措施是a,但这是可由客户设置的,因此除了阻止某些人之外,不能依赖它!