Els*_*mer 6 sql-server sql-server-2012
我的任务是评估允许第三方供应商在 SSMS 中远程调试其查询所涉及的安全风险。这意味着用户的帐户必须是 sysadmin 固定角色。虽然这意味着用户出于所有意图和目的“拥有”SQL Server 实例,但我们已将该实例设置为特定于该供应商的服务帐户。我只剩下主要评估使用 xp_cmdshell 可以造成的损害。
我知道系统管理员几乎可以撤消为监视该活动而实施的任何内容,但是如果有办法监视它(也许使用扩展事件?)和/或使用日志功能,它将为我们提供额外的安全级别。
小智 7
审计事件实际上不能通过扩展事件获得。您将需要使用 SQL Server Audit,它或多或少地在扩展事件引擎之上工作(至少从我的理解来看)。
使用步骤:
通过 SSMS 使用 UI 来创建它们是相当直接的,但就本文而言,这将是 T-SQL 来做同样的事情:
USE [master]
GO
CREATE SERVER AUDIT [cmdshell-20150603-124954]
TO FILE
( FILEPATH = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL12\MSSQL\Log\' )
WHERE object_name = 'xp_cmdshell';
GO
CREATE SERVER AUDIT SPECIFICATION [Audit-cmdshell]
FOR SERVER AUDIT [cmdshell-20150603-124954]
ADD (SCHEMA_OBJECT_ACCESS_GROUP);
GO
Run Code Online (Sandbox Code Playgroud)
然后,当您返回并查看 Audit Collection 时,您会看到类似于以下内容的内容:
此外,关于被关闭的审核,您可以创建一个单独的服务器审核,当任何 SQL Server 审核被禁用或启动时,该审核将专门记录。这最多会给你谁阻止它。