Sql server 如何保护SQL Server管理研究
我在客户端系统上安装了SQL Server 2008 R2 Express。我们得到的信息是,有些人只是打开ManagementStudio并更改数据 我们怎样才能阻止这种情况的发生,并记录他们正在改变什么 我们怎样才能阻止这种情况发生 更改SQL Server上的登录名。用户只能连接到他们具有凭据的数据库和服务器 如果您使用windows登录进行身份验证,那么您将需要使用自己的登录(使用或诸如此类)运行需要数据库的任何应用程序,并且只允许访问该应用程序 我们怎样才能阻止这种情况发生 更改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
如果您使用windows登录进行身份验证,您将需要使用自己的登录(使用或类似方式)运行需要数据库的任何应用程序,并且只允许访问该应用程序。我不知道如何使用
runas
.但是我用了@Martin Smith的主意
并构建下面的解决方案
它将用于禁用所有非sa用户在任何登录中执行任何活动。
我没有在active directory中测试它
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中测试它
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,但这是可由客户设置的,因此除了阻止某些人之外,不能依赖它!