适用于:SQL 分析终结点和 Microsoft Fabric 中的数据仓库✅
Fabric 数据仓库中的审核功能通过跟踪和记录数据库事件来增强安全性和合规性功能。
通过使用 SQL 审计日志,您可以监控数据库活动,检测潜在安全威胁,并通过维护关键操作的审计轨迹满足合规要求,例如:
- 身份验证尝试和访问控制更改
- 数据访问和修改操作
- 架构更改和管理活动
- 权限更改和安全配置
重要
默认情况下,SQL 审核日志已“关闭”。 具有审核查询权限的用户必须启用它才能捕获日志。
若要开始,请查看 如何在 Fabric 数据仓库中配置 SQL 审核日志的步骤。
存储
SQL 审核日志在静态加密并存储在 OneLake 中。
对于 Fabric 数据仓库,审核日志将写入 OneLake .XEL 中仓库 审核文件夹中 存储的文件。
具有以下 角色 的用户可以访问审核文件夹:
- 工作区 管理员
- 工作区 成员
- 工作区 参与者
- 具有“读取所有”权限的工作区查看器
这些用户可以:
- 浏览审核文件夹
- 查看由 SQL 审核生成的审计文件
.XEL - 复制文件以供脱机分析
- 使用 SQL Server Management Studio(SSMS)等工具打开文件
还可以通过 sys.fn_get_audit_file_v2通过 T-SQL 查询审核日志。
有关说明,请参阅如何在 Fabric 数据仓库中配置 SQL 审核日志。
小提示
在 Microsoft Fabric 数据仓库中配置审核日志可能会增加存储成本,具体取决于记录的操作组和事件。 仅启用所需的事件以避免不必要的存储成本。
Performance
SQL审计日志功能针对被审计数据库的可用性和性能进行了优化。 在活动非常频繁或网络负载非常高的时期,审计功能可能允许事务继续进行,而不记录所有标记为审核的事件。
权限
用户必须具有 “审核”查询(审核) 权限才能配置和查询审核日志。
- 默认情况下,工作区管理员具有对工作区中所有项的审核查询权限。
- 管理员可以通过分享对话框将 审计查询 权限授予其他用户。
工作区管理员可以通过 Fabric 门户中的共享菜单选项,授予审计查询对项目的权限。 若要验证用户是否具有审核查询权限,请检查管理权限设置。
在仓库项目中,选择“ 共享 ”按钮。
或者,在 Fabric 门户中的工作区中。 选择仓库项的
...上下文菜单,然后选择“ 管理权限”。在 “授予人们访问 ”面板中,授予用户权限。
通过使用 T-SQL 权限查询审计日志
授予用户权限 VIEW DATABASE SECURITY AUDIT ,即使他们没有工作空间管理员角色,也能通过 T-SQL 权限查询审计日志。
当你授予以下权限后,用户可以通过以下 sys.fn_get_audit_file_v2 函数查询审计日志:
GRANT VIEW DATABASE SECURITY AUDIT TO [user];
小提示
权限 VIEW DATABASE SECURITY AUDIT 仅允许查询审计日志。 它 不会授予访问文件或修改审计配置的权限。
数据库级别审核操作组和操作
为了使审核日志配置更易于访问,Fabric 门户使用友好名称来帮助非 SQL 管理员和其他用户轻松了解捕获的 Fabric 数据仓库事件。
Fabric 将这些友好名称映射到基础 SQL 审核操作组。 使用下表作为参考。
| 友好名称 | 操作组名称 | 说明 |
|---|---|---|
| 对象已被访问 | DATABASE_OBJECT_ACCESS_GROUP |
记录对数据库对象(如消息类型、程序集或协定)的访问。 |
| 对象已更改 | DATABASE_OBJECT_CHANGE_GROUP |
记录对数据库对象的 CREATE、ALTER 或 DROP 操作。 |
| 对象所有者已更改 | DATABASE_OBJECT_OWNERSHIP_CHANGE_GROUP |
记录数据库对象的所有权更改。 |
| 对象权限已更改 | DATABASE_OBJECT_PERMISSION_CHANGE_GROUP |
记录对数据库对象的 GRANT、REVOKE 或 DENY 操作。 |
| 用户已更改 | DATABASE_PRINCIPAL_CHANGE_GROUP |
记录数据库主体(用户、角色)的创建、更改或删除。 |
| 用户被冒充 | DATABASE_PRINCIPAL_IMPERSONATION_GROUP |
记录模拟操作(如 EXECUTE AS)。 |
| 角色成员已更改 | DATABASE_ROLE_MEMBER_CHANGE_GROUP |
记录添加到或从数据库角色中删除的登录名。 |
| 用户未能登录 | FAILED_DATABASE_AUTHENTICATION_GROUP |
记录数据库中的失败身份验证尝试。 |
| 架构权限已被使用 | SCHEMA_OBJECT_ACCESS_GROUP |
记录对架构对象的访问。 |
| 架构已更改 | SCHEMA_OBJECT_CHANGE_GROUP |
记录对架构的 CREATE、ALTER 或 DROP 操作。 |
| 已检查架构对象权限 | SCHEMA_OBJECT_OWNERSHIP_CHANGE_GROUP |
记录架构对象所有权的更改。 |
| 架构对象权限已更改 | SCHEMA_OBJECT_PERMISSION_CHANGE_GROUP |
记录对架构对象的 GRANT、REVOKE 或 DENY 操作。 |
| 批处理已完成 | BATCH_COMPLETED_GROUP |
每当任何批处理文本、存储过程或事务管理操作执行完成时,都会引发此事件。 |
| 批次已启动 | BATCH_STARTED_GROUP |
每当任何批处理文本、存储过程或事务管理操作开始执行时,都会引发此事件。 |
| 审核已更改 | AUDIT_CHANGE_GROUP |
每当创建、修改或删除任何审核时,都会引发此事件。 |
| 用户已登出 | DATABASE_LOGOUT_GROUP |
当数据库用户注销数据库时,将引发此事件。 |
| 用户登录 | SUCCESSFUL_DATABASE_AUTHENTICATION_GROUP |
指示主体已成功登录到数据库。 |
数据库级别审核操作
除了操作组,还可以配置单个审核操作来记录特定的数据库事件:
| 审核操作 | 说明 |
|---|---|
SELECT |
记录指定对象的 SELECT 语句。 |
INSERT |
记录指定对象的 INSERT 操作。 |
UPDATE |
记录指定对象的 UPDATE 操作。 |
DELETE |
记录指定对象的 DELETE 操作。 |
EXECUTE |
记录存储过程或函数的执行。 |
RECEIVE |
记录对 Service Broker 队列的 RECEIVE 操作。 |
REFERENCES |
记录涉及外键约束的权限检查情况。 |
通过谓词过滤减少审计噪声
要过滤捕获的事件,可以使用可选的 谓词表达 式过滤器。
使用谓词筛选来减少由预期的重复性活动(如自动化标识、服务主体或计划作业)产生的噪声,而不必禁用组织出于合规或调查目的所需的动作组。
- 只有当事件与配置的谓词匹配时,才会生成该动作的SQL审计日志事件。
- 过滤是在事件写入之前进行的,因此排除的事件不会在事后进行调查时提供。 将谓词排除视为有意识的审计政策决策,并随着所有权、权限和风险特征的变化定期审查配置的谓词。
- 谓词筛选仅评估那些已配置为由已启用的审计操作组或操作捕获的事件。
- 如果底层动作组未启用,就不会生成供谓词求值的事件,过滤器也不会起作用。 例如,要使用针对
statement字段的谓词筛选SELECT语句,必须先启用 批处理已完成(BATCH_COMPLETED_GROUP)操作组。
- 如果底层动作组未启用,就不会生成供谓词求值的事件,过滤器也不会起作用。 例如,要使用针对
你可以通过使用 Fabric 门户或 REST API 配置谓词表达式。 有关步骤,请参见 配置谓词表达式。
谓词表达式语法
谓词表达式使用与<predicate_expression>CREATE SERVER AUDIT (Transact-SQL)中的子句相同的语法,但没有关键字WHERE:
<predicate_expression> ::=
{ [ NOT ] <predicate_factor>
[ { AND | OR } [ NOT ] { <predicate_factor> } ] [ ,... n ] }
<predicate_factor> ::=
event_field_name { = | <> | != | > | >= | < | <= | LIKE }
{ number | 'string' }
-
event_field_name对应于 sys.fn_get_audit_file (Transact-SQL) 返回的一列。 你可以使用所有已记录的列,除了file_name、audit_file_offset和event_time。 -
action_id和class_type是字符串,但你只能将它们与谓词中的数值进行比较。 - 字符串比较不执行隐式类型转换。
- 表达式的最大长度为3000字符。
- 字符串为空表示未应用谓词。
例如,为了排除已知服务主体或自动化身份产生的活动,可以对 进行 server_principal_name过滤。 要排除重复的 SELECT 语句,请按 statement 字段进行筛选:NOT statement LIKE 'SELECT %'。
局限性
- 默认工作区不支持 SQL 审核日志。
- 仓库快照不支持 SQL 审核日志。
重要
审核日志存储在 OneLake 的仓库项目中。 如果删除仓库,则还会删除关联的审核日志文件,并且无法再访问它们。
若要保留审核日志以实现合规性或调查目的,请将 .XEL 文件复制到其他存储位置,然后再删除仓库。
SQL 分析端点限制
审核 SQL 分析终结点时,以下限制适用:
- 未捕获 DML 操作。 审核不会记录
INSERT、UPDATE、DELETE和MERGE等操作,因为 Lakehouse 表的数据操作是通过 Lakehouse 运行环境进行的,而不是通过 SQL 分析接口。 - 目前不支持直接访问审核文件夹。 用户无法从 Lakehouse 审核文件夹浏览或下载基础
.XEL审核文件。
你仍然可以通过 T-SQL 函数 sys.fn_get_audit_file_v2查询 SQL 分析端点的审计事件。