通过


Fabric 中的 SQL 数据库审计

适用于:✅Microsoft Fabric 中的 SQL 数据库

在 Fabric 中审核 SQL 数据库是一项关键的安全性和符合性功能,使组织能够跟踪和记录数据库活动。 审核支持合规性、威胁检测和取证调查,帮助回答访问哪些数据、时间和方式等问题。

什么是 SQL 审核?

SQL 审核是指捕获和存储与数据库活动相关的事件的过程。 这些事件包括数据访问、架构更改、权限修改和身份验证尝试。

在 Fabric 中,审核在数据库级别工作,并支持:

  • 合规性监视(例如:HIPAA、SOX)
  • 安全调查
  • 运营洞察

审核目标

审核日志将写入 OneLake 中的只读文件夹,可以使用 T-SQL 函数或 OneLake 资源管理器进行查询 sys.fn_get_audit_file_v2

对于 Fabric 中的 SQL 数据库,审核日志存储在 OneLake 中: https://onelake.blob.fabric.microsoft.com/{workspace_id}/{artifact_id}/Audit/sqldbauditlogs/

这些日志不可变且可供具有适当权限的用户访问。 还可以使用 OneLake 资源管理器或 Azure 存储资源管理器下载日志。

账单管理

目前,将审核日志写入 Fabric OneLake 不会产生额外的费用,并且存储包含在 OneLake 容量的存储限制中。

配置选项

默认情况下, “审核一切 ”选项将捕获所有事件,包括批处理完成和成功和失败的身份验证。

若要更具选择性,请从预配置的审核方案中进行选择,例如: 权限更改和登录尝试数据读取和写入以及/或 架构更改

每个预配置方案映射到特定的审核操作组(例如,SCHEMA_OBJECT_ACCESS_GROUP, DATABASE_PRINCIPAL_CHANGE_GROUP)。 还可以选择要在 “自定义事件”下审核的事件。 可以选择单个操作组来根据需求定制审核。 此选项非常适合采用严格的内部安全策略的组织。

若要筛选掉常见或已知的访问查询,可以在 Transact-SQL (T-SQL) 中提供谓词表达式,以便根据条件(例如,排除 SELECT 语句)筛选出审核事件: WHERE statement NOT LIKE '%select%'

Permissions

若要使用 Fabric 工作区角色(建议)管理审核,必须在 Fabric 工作区 参与者 角色或更高权限中拥有成员身份。

若要使用 SQL 权限进行审核管理,请按以下步骤操作:

  • 若要配置数据库审核,必须具有 ALTER ANY DATABASE AUDIT 权限。
  • 若要使用 T-SQL 查看审核日志,必须具有 VIEW DATABASE SECURITY AUDIT 权限。

Retention

默认情况下,除非将自定义保留期配置为在此持续时间后自动删除日志,否则审核数据将无限期保留。

Fabric 当前将审核日志存储在 OneLake 项目的文件夹中,并将其范围限定为项目生命周期。 如果删除该项,Fabric 也会删除其审核日志。 如果需要独立于项目的生命周期保留,请使用 AzCopy 或 SSDT 等工具将审核日志移动到单独的存储位置(例如,另一个 Lakehouse 或 Azure 存储帐户)。

在 Fabric 门户中配置 SQL 数据库审核

开始对 Fabric SQL 数据库进行审计:

  1. 在 Fabric 门户中导航到并打开 SQL 数据库。
  2. 在主菜单中,选择“ 安全 ”选项卡,然后选择“ 管理 SQL 审核”。 Fabric 门户中的屏幕截图,其中显示了“安全”选项卡和“管理 SQL 审核”按钮。
  3. 此时会打开 “管理 SQL 审核 ”窗格。
  4. 选择“ 将事件保存到 SQL 审核日志 ”按钮以启用审核。
  5. 配置在 “数据库事件” 部分中要记录的事件。 选择 “审核所有内容”(默认值) 以捕获所有事件。
  6. (可选)在 “保留”下配置保留策略。
  7. (可选)将 T-SQL 命令的谓词表达式配置为在 “谓词表达式” 字段中忽略。
  8. 选择“保存”

查询审核日志

可以使用 T-SQL 函数 sys.fn_get_audit_filesys.fn_get_audit_file_v2查询审核日志。

在以下脚本中,需要提供工作区 ID 和数据库 ID。 两者都可以在Fabric门户的网址中找到。 例如: https://fabric.microsoft.com/groups/<fabric workspace id>/sqldatabases/<fabric sql database id>。 URL中的第一个唯一标识符字符串是Fabric工作区ID,第二个唯一标识符字符串是SQL数据库ID。

  • <fabric_workspace_id> 替换为你的 Fabric 工作区 ID。 您可以在 URL 中找到工作区的 ID,它是浏览器窗口中/之后、两个/groups/字符之间的唯一字符串。
  • <fabric sql database id> 替换为在 Fabric 数据库 ID 中的 SQL 数据库。 可以在 URL 中找到数据库项的 ID,它是浏览器窗口中两个字符后/的唯一/sqldatabases/字符串。

例如:

SELECT * FROM sys.fn_get_audit_file_v2(
  'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
  DEFAULT, DEFAULT, DEFAULT, DEFAULT );

本示例检索两者之间 2025-11-17T08:40:40Z2025-11-17T09:10:40Z之间的审核日志。

SELECT *
FROM sys.fn_get_audit_file_v2(
    'https://onelake.blob.fabric.microsoft.com/<fabric workspace id>/<fabric sql database id>/Audit/sqldbauditlogs/',
    DEFAULT,
    DEFAULT,
    '2025-11-17T08:40:40Z',
    '2025-11-17T09:10:40Z')

有关详细信息,请参阅 sys.fn_get_audit_filesys.fn_get_audit_file_v2

使用 REST API 管理审核

还可以使用 Fabric REST API 以编程方式查看和配置 SQL 数据库审核设置。 使用 REST API,可以使用 PowerShell 脚本跨工作区中的所有数据库一致地管理审核。

有关详细信息,请参阅 使用 REST API 管理 SQL 数据库审核