Sql server SQL Server数据更改和安全性
在我们的环境中,任何使用sa登录的用户都可以更改任何表数据 因此,我编写触发器来捕获更改的数据,比如谁更改了,来自哪个IP等等Sql server SQL Server数据更改和安全性,sql-server,data-security,Sql Server,Data Security,在我们的环境中,任何使用sa登录的用户都可以更改任何表数据 因此,我编写触发器来捕获更改的数据,比如谁更改了,来自哪个IP等等 CREATE TRIGGER [TRG_Users] ON [dbo].[UserRights] AFTER INSERT, UPDATE, DELETE AS DECLARE @strIP VARCHAR(MAX) SET @strIP=(SELECT dbo.GetCurrentIP()) IF EXISTS (SELECT * FROM INSERTED)
CREATE TRIGGER [TRG_Users]
ON [dbo].[UserRights] AFTER INSERT, UPDATE, DELETE
AS
DECLARE @strIP VARCHAR(MAX)
SET @strIP=(SELECT dbo.GetCurrentIP())
IF EXISTS (SELECT * FROM INSERTED) AND EXISTS (SELECT * FROM DELETED)
--PRINT 'Update happened';
INSERT INTO Logger(IPAddress,Status)
VALUES (@strIP,'UPDATE')
ELSE
IF EXISTS (SELECT * FROM INSERTED)
--PRINT 'Insert happened';
INSERT INTO Logger(IPAddress,Status)
VALUES (@strIP,'INSERT')
ELSE
--PRINT 'Delete happened';
INSERT INTO Logger(IPAddress,Status)
VALUES (@strIP,'DELETE')
CREATE FUNCTION [dbo].[GetCurrentIP] ()
RETURNS varchar(255)
AS
BEGIN
DECLARE @IP_Address varchar(255);
SELECT @IP_Address = client_net_address
FROM sys.dm_exec_connections
WHERE Session_id = @@SPID;
Return @IP_Address;
END
但问题是用户可以在禁用特定表上的触发器后更改数据。所以触发器不会触发,用户可以无缝地更改数据
因此,请指导我捕获数据更改并记录它们的最佳方法是什么。所以没有人可以绕过安全。请不要告诉我禁用sa帐户,因为我正在寻找不同的方法来捕获更改数据。sql server 2005/2008中是否存在任何安全方法?如果是,请在此处讨论。谢谢SA的问题是,跳过了此登录名(或系统管理员角色中的任何其他登录名)的所有安全检查。所以,您不能撤销SA的任何特权,而且在实例级别上也没有SA无法绕过的任何操作 就像其他人已经说过的,不要让任何人以系统管理员的身份登录,除非有真正的系统管理员工作要做。最佳实践是完全禁用SA登录
在CNStructure方面,最好的选择是创建SQL Server审核会话并将Windows安全日志用作目标。通过这种方式,您至少可以知道谁以及何时停止了审核。SA的问题是,跳过了此登录名(或系统管理员角色中的任何其他登录名)的所有安全检查。所以,您不能撤销SA的任何特权,而且在实例级别上也没有SA无法绕过的任何操作 就像其他人已经说过的,不要让任何人以系统管理员的身份登录,除非有真正的系统管理员工作要做。最佳实践是完全禁用SA登录
在CNStructure方面,最好的选择是创建SQL Server审核会话并将Windows安全日志用作目标。通过这种方式,您至少可以知道谁以及何时停止了审核。SA的问题是,跳过了此登录名(或系统管理员角色中的任何其他登录名)的所有安全检查。所以,您不能撤销SA的任何特权,而且在实例级别上也没有SA无法绕过的任何操作 就像其他人已经说过的,不要让任何人以系统管理员的身份登录,除非有真正的系统管理员工作要做。最佳实践是完全禁用SA登录
在CNStructure方面,最好的选择是创建SQL Server审核会话并将Windows安全日志用作目标。通过这种方式,您至少可以知道谁以及何时停止了审核。SA的问题是,跳过了此登录名(或系统管理员角色中的任何其他登录名)的所有安全检查。所以,您不能撤销SA的任何特权,而且在实例级别上也没有SA无法绕过的任何操作 就像其他人已经说过的,不要让任何人以系统管理员的身份登录,除非有真正的系统管理员工作要做。最佳实践是完全禁用SA登录
在CNStructure方面,最好的选择是创建SQL Server审核会话并将Windows安全日志用作目标。通过这种方式,您至少可以知道谁以及何时停止了审核。如果一些人以
SA
身份登录,您就无法控制他们的活动,或者如果他们不想被监控,甚至无法监控他们的活动,而将SA
角色授予许多用户也不是一个好主意。为您的用户/开发人员分配一个足以满足其需要的适当角色,然后创建此触发器并取消其对此触发器的禁用权限。您似乎很清楚让其他人以sa
身份连接的问题。我不知道你希望别人怎么解决你的问题。充其量,你只是在玩猫捉老鼠的游戏,总是试图领先一步。最好的解决方案是你显然不想听到的——不要让其他人以sa
身份连接(或使用任何其他具有sysadmin
权限的登录)。如果一些人以sa
身份登录,你就无法控制他们的活动,或者如果他们不想被监视,甚至无法监视他们的活动,不管怎样,给许多用户提供SA
角色从来都不是一个好主意。为您的用户/开发人员分配一个足以满足其需要的适当角色,然后创建此触发器并取消其对此触发器的禁用权限。您似乎很清楚让其他人以sa
身份连接的问题。我不知道你希望别人怎么解决你的问题。充其量,你只是在玩猫捉老鼠的游戏,总是试图领先一步。最好的解决方案是你显然不想听到的——不要让其他人以sa
身份连接(或使用任何其他具有sysadmin
权限的登录)。如果一些人以sa
身份登录,你就无法控制他们的活动,或者如果他们不想被监视,甚至无法监视他们的活动,不管怎样,给许多用户提供SA
角色从来都不是一个好主意。为您的用户/开发人员分配一个足以满足其需要的适当角色,然后创建此触发器并取消其对此触发器的禁用权限。您似乎很清楚让其他人以sa
身份连接的问题。我不知道你希望别人怎么解决你的问题。充其量,你只是在玩猫捉老鼠的游戏,总是试图领先一步。最好的解决方案是你显然不想听到的——不要让其他人以sa
身份连接(或使用任何其他具有sysadmin
权限的登录)。如果一些人以sa
身份登录,你就无法控制他们的活动,或者如果他们不想被监视,甚至无法监视他们的活动,不管怎样,给许多用户提供SA
角色从来都不是一个好主意。为您的用户/开发人员分配一个足以满足其需要的适当角色,然后创建此触发器并取消其对此触发器的禁用权限。您似乎很清楚让其他人以sa
身份连接的问题。我不知道你希望别人怎么解决你的问题。在