You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Extended Events会话中跟踪GRANT、REVOKE语句需选择哪些事件?

Extended Events跟踪GRANT、REVOKE语句的事件配置方案

你之前配置object_created、object_altered、object_deleted事件无法捕获GRANT、REVOKE操作,是因为这三类事件仅在表、视图、存储过程等数据库对象本身的结构发生创建、变更、删除时触发,而GRANT/REVOKE属于权限元数据修改操作,不会变更对象自身结构,因此不在这三类事件的捕获范围内。

优先选用的精准匹配事件

直接选择安全分类下的三个专用权限事件即可,不需要做文本匹配,捕获结果无冗余:

  • sqlserver.permission_grant:专门捕获所有GRANT权限操作
  • sqlserver.permission_revoke:专门捕获所有REVOKE权限操作
  • sqlserver.permission_deny:专门捕获所有DENY权限操作(如果需要同时跟踪拒绝权限的操作可以一并添加)

可以给上述事件配置需要捕获的关联字段,比如客户端主机名、登录名、执行的SQL文本、数据库名等,方便后续溯源。参考会话创建代码如下:

-- 创建权限跟踪扩展事件会话
CREATE EVENT SESSION [Track_Permission_Operations] ON SERVER 
ADD EVENT sqlserver.permission_grant(
    ACTION(
        sqlserver.client_app_name,
        sqlserver.client_hostname,
        sqlserver.database_name,
        sqlserver.server_principal_name,
        sqlserver.sql_text
    )
),
ADD EVENT sqlserver.permission_revoke(
    ACTION(
        sqlserver.client_app_name,
        sqlserver.client_hostname,
        sqlserver.database_name,
        sqlserver.server_principal_name,
        sqlserver.sql_text
    )
)
ADD TARGET package0.event_file(SET filename=N'Track_Permission_Operations.xel',max_file_size=10)
WITH (STARTUP_STATE=OFF);
GO

-- 启动会话
ALTER EVENT SESSION [Track_Permission_Operations] ON SERVER STATE = START;
GO

低版本兼容方案

如果你使用的是SQL Server 2008R2及更早版本,没有上述专用permission_*事件,可以选择sqlserver.statement_completed事件,添加语句文本过滤条件实现捕获:

CREATE EVENT SESSION [Track_Permission_Operations_Legacy] ON SERVER 
ADD EVENT sqlserver.statement_completed(
    ACTION(
        sqlserver.client_app_name,
        sqlserver.client_hostname,
        sqlserver.database_name,
        sqlserver.server_principal_name,
        sqlserver.sql_text
    )
    WHERE (
        sqlserver.sql_text LIKE N'%GRANT%' 
        OR sqlserver.sql_text LIKE N'%REVOKE%'
        OR sqlserver.sql_text LIKE N'%DENY%'
    )
)
ADD TARGET package0.event_file(SET filename=N'Track_Permission_Operations_Legacy.xel',max_file_size=10)
WITH (STARTUP_STATE=OFF);
GO

注意使用statement_completed加文本匹配的方式时,要注意排除SQL语句注释中包含GRANT/REVOKE关键词导致的误捕获,可以根据实际业务场景调整过滤规则的精度。

内容的提问来源于stack exchange,提问作者Дмитрий

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:18:20