如何导出 Databricks 日志

如何导出 Databricks 日志

SOC Prime Team
SOC Prime Team linkedin icon 关注

与 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 中上传、清理和审查

  1. 上传。 打开 logtotal.com 并拖放 .jsonl 文件。
  2. 清理。
  3. 审查。

当问题出现时

症状可能原因Fix
找不到 system.access.audit系统模式未启用请求账户管理员启用它
系统表上拒绝访问权限没有 SELECT 授权请求元存储管理员授权
无法写入卷缺少 WRITE VOLUME使用您可以写入的卷
下载包括 _SUCCESS 和其他文件Spark 标记文件仅组合 part-*.json 文件
巨大且慢的查询无日期过滤器按 event_date 进行过滤

FAQ

审计日志是否也传送到云存储?

工作空间也可以将审计日志传送到您自己的存储中。如果设置好,您可以直接复制这些文件。

这在没有 Unity Catalog 的工作空间中是否有效?

系统表需要 Unity Catalog。较旧的工作空间依赖于将审计日志传送到存储中,您需要写入 DBFS 路径而不是卷。

加入 SOC Prime 的 Detection as Code 平台 以提高对与您的业务最相关的威胁的可见性。为了帮助您开始并带来即时价值,现在与 SOC Prime 专家预约会议。