OneLake 诊断提供端到端的可见性,了解如何在 Microsoft Fabric 环境中访问和使用数据。 它使组织能够回答“谁访问了哪些内容、时间和方式”等关键问题,以支持数据管理、运营见解和合规性报告。
在工作区级别启用时,OneLake 诊断会将数据访问事件作为 JSON 日志流式传输到相同容量内您选择的 Lakehouse 中。 可以轻松地将这些日志转换为分析就绪的 Delta 表,使团队能够生成仪表板和报表,这些仪表板和报表跟踪使用情况模式、访问最多的项和随时间推移的趋势。
鉴于 Fabric 中的所有数据均在 OneLake 中得以统一,总体诊断在工作区级别上提供了一份一致且可信的数据活动记录,无论数据的使用方式或地点如何。 这包括:
- Fabric Web 体验中的用户操作
- 通过 API、管道和分析引擎进行编程访问
- 跨工作区快捷方式,其中包含从源工作区捕获的事件
这种统一的日志记录方法可确保即使通过快捷方式或跨工作区访问数据,可见性也会保留。
为 Fabric 源和非 Fabric 源捕获诊断事件。 若要通过 Fabric UI 和 Blob 存储或 Azure 数据湖存储(ADLS) API 进行访问,每个操作都会被记录。 对于 Fabric 工作负载访问,系统会记录已授予临时访问权限,因此可以在特定引擎的日志中进行进一步查看。 这可确保高效日志记录,同时保持对整个组织内数据的使用方式的可见性。
OneLake 诊断支持的示例方案
- 安全调查:跟踪哪些用户访问敏感数据集、何时和从何处访问。 帮助识别未经授权的访问尝试或异常模式。
- 性能故障排除:通过将诊断事件与用户作或系统交互相关联来诊断延迟或失败问题。
- 使用情况分析和优化:了解最常访问哪些数据集、访问者以及访问频率。 支持数据治理和资源优化。
- 集成监视:监视与 OneLake 交互的外部系统(通过 API 或连接器),确保集成在出现时按预期运行并诊断问题。
配置 OneLake 诊断
最佳做法建议
若要简化管理和改进访问控制,请考虑使用专用工作区来存储诊断事件。 如果要在同一容量的多个工作区中启用诊断,请考虑将日志集中到单个 Lakehouse 中,以便更轻松地进行分析。
先决条件
- 创建 Lakehouse 来存储 OneLake 诊断事件。
- Lakehouse 必须与您想启用诊断的工作区在相同的计算容量内。
- 如果工作区使用专用链接进行入站网络保护,则它必须与 Lakehouse 位于同一虚拟网络中。
- 你必须是启用 OneLake 诊断的工作区所在的工作区的管理员,并且是目标 Lakehouse 的贡献者。
启用 OneLake 诊断
使用以下步骤启用 OneLake 诊断:
- 打开工作区设置。
- 导航到 OneLake 设置选项卡。
- 将“将诊断事件添加到 Lakehouse”切换到 On。
- 选择要用来存储诊断事件的 Lakehouse。
注释
诊断事件可能需要 1 小时才能开始传输至 Lakehouse。
启用不可变诊断日志
OneLake 诊断事件可以不可变,这意味着在不可变保留期内,不能篡改或删除包含诊断事件的 JSON 文件。 OneLake 诊断不可变性是基于 Azure Blob 存储功能的不可变存储构建的。 有关详细信息,请阅读使用不可变存储以“写入一次、读取多次”(WORM)状态存储业务关键的 Blob 数据
在包含诊断事件的工作区上配置不可变性周期。 若要配置不可变性周期,必须先将工作区配置为在此工作区中存储诊断事件。 不可变性期限适用于此工作区中存储的所有事件。
- 输入所需的不可变性周期
- 按下“应用”
注释
应用不可变性策略后,在不可变性保留期过后,无法修改或删除文件。 在应用策略时请谨慎,因为设置后无法更改策略。
更改 OneLake 诊断 Lakehouse
- 打开工作区设置。
- 转到 OneLake 设置选项卡。
- 选择 Replace Lakehouse。
- 选择新的 Lakehouse。
注释
以前捕获的诊断事件仍然保留在原始 Lakehouse 中。 新的事件存储在新选定的 Lakehouse 中。
禁用 OneLake 诊断功能
- 打开工作区设置。
- 导航到 OneLake 设置选项卡。
- 将“将诊断事件添加到 Lakehouse”切换到“关闭”。
注释
先前选择的 Lakehouse 被保留。 如果重新启用诊断,它将使用与以前相同的 Lakehouse。
OneLake 诊断事件
OneLake 诊断事件存储在 Lakehouse 的 Files 部分中的 DiagnosticLogs 文件夹中。 JSON 文件将写入具有以下路径的文件夹: Files/DiagnosticLogs/OneLake/Workspaces/WorkspaceId/y=YYYY/m=MM/d=DD/h=HH/m=00/PT1H.json
JSON 事件包含以下属性:
| 资产 | Description |
|---|---|
| workspaceId | 启用了诊断的工作区的 GUID。 |
| 项目编号 | 结构项的 GUID,例如正在执行 OneLake 操作的 Lakehouse |
| 项目类型 | 执行 OneLake 操作的项目类型 |
| tenantId | 执行 OneLake 操作的租户标识符 |
| 执行主体ID | 执行 OneLake 操作的 Microsoft Entra 实体的 GUID |
| correlationId | OneLake 操作的 GUID 关联标识符 |
| 操作名称 | 正在执行的 OneLake 操作(未用于内部 Fabric 操作)。 有关操作的详细信息,请参阅下面的内容。 |
| 操作类别 | 与OneLake相关的操作大类(例如,读取操作) |
| 执行UPN | 执行操作的 Microsoft Entra 唯一主体名称(未为 Fabric 内部操作提供) |
| 执行主体类型 | 正在使用的主体类型,例如用户或服务主体 |
| 访问开始时间 (accessStartTime) | 执行操作的时间。 提供临时访问时,临时访问开始的时间 |
| 访问结束时间 | 操作完成的时间。 提供临时访问时,临时访问完成时间 |
| 发起应用 | 执行操作的工作负荷。 对于外部访问,originatingApp 是用户代理字符串。 |
| serviceEndpoint | 正在使用的 OneLake 服务终结点(DFS、Blob 或其他) |
| Resource | 要访问的资源(相对于工作区) |
| capacityId | OneLake操作的容量的标识符 |
| httpStatusCode | 返回给用户的状态代码 |
| isShortcut | 指示是否通过快捷方式执行了访问 |
| 访问ViaResource | 数据是通过该资源访问的。 使用快捷方式时,这是快捷方式的位置 |
| 调用者IP地址 | 调用方 IP 地址 |
个人数据
OneLake 诊断事件包括 executingUPN 和 callerIpAddress。 若要修改此数据,租户管理员可以在 Fabric 管理门户中禁用“在 OneLake 诊断日志中包含最终用户标识符”设置。 禁用后,这些字段将从新的诊断事件中排除。
常见问题解答(FAQ)
如果删除目标 Lakehouse,会发生什么情况?
如果用于诊断的 Lakehouse 被删除了:
- 对于指向该功能的所有工作区,诊断将被自动禁用。
- 以前捕获的诊断数据不会被删除-它保留在已删除的 Lakehouse 的存储中,直到工作区本身被删除。 若要 恢复诊断,请在同一工作区中选择一个新的 Lakehouse。 OneLake 将启用诊断,并且以前捕获的所有日志仍可访问。
如果删除工作区,会发生什么情况?
- 如果删除某个工作区,该工作区的 OneLake 诊断信息也会被删除。
- 如果 还原工作区,则会还原诊断数据。
- 永久删除工作区后,也会永久删除关联的诊断事件。
更改容量时会发生什么情况?
- 将工作区移动到其他容量时, 将禁用诊断日志记录。
- 必须在 新容量中选择新的 Lakehouse 才能重新启用诊断。
为工作区启用 BCDR 时会发生什么情况?
- 启用 业务连续性和灾难恢复(BCDR) 后, OneLake 诊断数据将复制到次要区域,并在发生故障转移时可通过 OneLake API 进行访问。
是否可以审核 OneLake 诊断?
- 是的。 当启用、禁用或更新 Lakehouse 时,会在 Microsoft 365 安全日志中捕获 ModifyOneLakeDiagnosticSettings 事件,从而允许您审核诊断设置的更改。
OneLake 诊断生成的消耗量是多少?
- 在向存储帐户发出时,OneLake 诊断的成本与 Azure 存储诊断相当。 有关最新详细信息,请参阅官方定价页: OneLake 消耗 - Microsoft Fabric |Microsoft Learn。
局限性
OneLake 诊断目前与跨工作区的出站访问保护(OAP)不兼容。 如果需要 OneLake 诊断和 OAP 协同工作,则必须在同一工作区中选择 Lakehouse。
配置 OneLake 诊断后,选择工作区时,将遵循工作区专用链接的配置, 限制为只能选择同一专用网络内的工作区。 但是,OneLake 诊断不会自动响应网络更改。
Operations
全球运营
| 操作 | 类别 |
|---|---|
| ReadFileOrGetBlob | 读取 |
| GetFileOrBlobProperties | 读取 |
| GetActionFileOrBlobProperties | 读取 |
| CheckAccessFileOrBlob | 读取 |
| DeleteFileOrBlob | 删除 |
Blob 操作
| 操作 | 类别 |
|---|---|
| 获取区块列表 | 读取 |
| ListBlob | 读取 |
| GetBlob | 读取 |
| 删除Blob | 删除 |
| UndeleteBlob | 写入 |
| 获取Blob元数据 | 读取 |
| SetBlobExpiry | 写入 |
| SetBlobMetadata | 写入 |
| SetBlobProperties | 写入 |
| SetBlobTier | 写入 |
| LeaseBlob | 写入 |
| AbortCopyBlob | 写入 |
| PutBlockFromURL | 写入 |
| PutBlock | 写入 |
| PutBlockList | 写入 |
| AppendBlockFromURL | 写入 |
| AppendBlock | 写入 |
| AppendBlobSeal | 写入 |
| PutBlobFromURL | 写入 |
| CopyBlob | 写入 |
| PutBlob | 写入 |
| QueryBlobContents | 读取 |
| GetBlobProperties | 读取 |
| 创建容器 | 写入 |
| 删除容器 | 删除 |
| GetContainerMetadata | 读取 |
| 获取容器属性 (GetContainerProperties) | 读取 |
| 设置容器元数据 (SetContainerMetadata) | 写入 |
| SetContainerAcl | 写入 |
| LeaseContainer | 写入 |
| RestoreContainer | 写入 |
| SnapshotBlob | 写入 |
| 快速路径读取会话创建 | 读取 |
| CreateFastPathWriteSession | 写入 |
DFS操作
| 操作 | 类别 |
|---|---|
| CreateFileSystem | 写入 |
| PatchFileSystem | 写入 |
| DeleteFileSystem | 删除 |
| (获取文件系统属性) GetFileSystemProperties | 读取 |
| CreateDirectory | 写入 |
| CreateFile | 写入 |
| 删除目录 | 删除 |
| DeleteFile | 删除 |
| 改名文件或目录 | 写入 |
| 列出文件路径 | 读取 |
| 将数据附加到文件 | 写入 |
| FlushDataToFile | 写入 |
| SetFileProperties | 写入 |
| 设置文件访问控制 | 写入 |
| 设置目录访问控制 | 写入 |
| LeasePath | 写入 |
| GetPathStatus | 读取 |
| 获取文件访问控制列表 | 读取 |
构造作
| 操作 | 类别 |
|---|---|
| FabricWorkloadAccess | 读取 |