我们正在寻找具有可用过滤功能的最佳 sql 登录审计解决方案。
到目前为止,我们已经研究了服务器审计和分析器,但得出的结论是扩展事件看起来最有希望,除非有人可以向我们展示其他方式。
问题是,有什么好的方法可以过滤不必要的登录事件吗?例如,当我使用 SSMS 连接时,会立即添加大约 10 个登录事件,如果我将 SSMS 连接到实例,则会继续堆积。这是为什么?
这是我们当前的实现:
USE master;
GO
-- Create the Event Session
IF EXISTS
(
SELECT
*
FROM sys.server_event_sessions
WHERE name = 'ServerLoginAudit'
)
DROP EVENT SESSION ServerLoginAudit ON SERVER;
GO
EXECUTE xp_create_subdir 'D:\audits\Sessions';
GO
CREATE EVENT SESSION ServerLoginAudit
ON SERVER
ADD EVENT sqlserver.login
(SET
collect_database_name = (1)
, collect_options_text = (1)
ACTION
(
sqlserver.sql_text
, sqlserver.nt_username
, sqlserver.server_principal_name
, sqlserver.client_hostname
, package0.collect_system_time
, package0.event_sequence
, sqlserver.database_id
, sqlserver.database_name
, sqlserver.username
, sqlserver.session_nt_username
, sqlserver.client_app_name
, sqlserver.session_id
, sqlserver.context_info
, sqlserver.client_connection_id
)
)
ADD TARGET package0.event_file
(SET filename = N'D:\audits\Sessions\ServerLoginAudit.xel', max_file_size = (20), max_rollover_files = (2))
WITH
(
STARTUP_STATE = OFF
, TRACK_CAUSALITY = ON
);
/* start the session */
ALTER EVENT SESSION ServerLoginAudit ON SERVER STATE = START;
GO