与 Snowflake 类似,“Databricks 日志”可以指您保存在 Delta 表中的安全数据,或 Databricks 自己在 system.access.audit 系统表中的审计日志。两者最简单的导出方式是使用笔记本单元格。使用 Spark SQL 查询,将结果以 JSON 格式写入 Unity Catalog 卷中,然后通过 Databricks CLI 下载。Spark 写入的是换行分隔的 JSON,因此文件已准备好进行上传。
Databricks 越来越多地用作安全数据湖,它的审计日志本身就很重要:谁登录了,谁创建了令牌,谁更改了权限。Prime Core 拥有超过 24,000 条独特的检测规则,映射到 676 个 MITRE ATT&CK 技术。以下是如何提取数据进行清理并免费在 LogTotal 中调查。
开始之前
访问。 读取 system.access.audit 需要为您的元存储启用系统模式,并需要账户或元存储管理员的 SELECT 授权。对于您自己的表,您需要通常的 Unity Catalog 授权。
一个写入卷。 您需要一个可以写入的 Unity Catalog 卷,例如 /Volumes/security/exports/logtotal,并在您的机器上配置 Databricks CLI。
计算。 笔记本需要集群或无服务器计算。按日期筛选,以免扫描超过您需要的部分。
从笔记本导出
(spark.sql("""
SELECT *
FROM system.access.audit
WHERE event_date = '2026-10-19'
AND action_name IN ('login', 'tokenLogin', 'generateDbToken')
""")
.write.mode("overwrite")
.json("/Volumes/security/exports/logtotal/audit_20261019"))
Spark 写入多个 part-*.json 文件和标记文件。下载并组合它们:
databricks fs cp -r dbfs:/Volumes/security/exports/logtotal/audit_20261019 ./audit_20261019
cat ./audit_20261019/part-*.json > databricks_audit_20261019.jsonl
对于您自己的安全表,更改查询:从您的表中选择并在其时间戳列上进行过滤。
没有笔记本, SQL Statement Execution API 可以在 SQL 仓库上运行相同的查询并返回 JSON。行以数组形式返回,列名在单独的清单中,因此您需要额外的步骤将它们转换为对象。对于任何大型数据,使用笔记本的方法更简单。
审计日志中要查找的内容
查看来自异常 IP 地址的登录和令牌登录、新的个人访问令牌、更改权限和组成员身份,以及正常工作时间之外更改工作空间或集群配置的情况。批量下载笔记本或结果也值得关注。
在 LogTotal 中上传、清理和审查
- 上传。 打开 logtotal.com 并拖放 .jsonl 文件。
- 清理。
- 审查。
当问题出现时
| 症状 | 可能原因 | Fix |
|---|---|---|
| 找不到 system.access.audit | 系统模式未启用 | 请求账户管理员启用它 |
| 系统表上拒绝访问权限 | 没有 SELECT 授权 | 请求元存储管理员授权 |
| 无法写入卷 | 缺少 WRITE VOLUME | 使用您可以写入的卷 |
| 下载包括 _SUCCESS 和其他文件 | Spark 标记文件 | 仅组合 part-*.json 文件 |
| 巨大且慢的查询 | 无日期过滤器 | 按 event_date 进行过滤 |
FAQ
审计日志是否也传送到云存储?
工作空间也可以将审计日志传送到您自己的存储中。如果设置好,您可以直接复制这些文件。
这在没有 Unity Catalog 的工作空间中是否有效?
系统表需要 Unity Catalog。较旧的工作空间依赖于将审计日志传送到存储中,您需要写入 DBFS 路径而不是卷。