用途
本技能面向 Databricks Unity Catalog 的治理工作,主要覆盖访问控制、权限模型、外部位置、可保护对象 DDL、细粒度访问,以及系统表和卷文件操作。适用于需要管理数据权限、审计访问行为、分析用量与成本、追踪血缘或操作卷文件的场景。
主要能力
治理与访问控制:
- 授予或撤销访问权限:GRANT/REVOKE、UC 权限模型、所有权(ALTER … OWNER TO)、SHOW GRANTS,以及回答“谁可以读写这张表?”
- 行级与列级安全:行过滤器、列掩码、使用 current_user() / is_account_group_member() 的动态视图
- 外部位置与存储凭据:CREATE STORAGE CREDENTIAL、CREATE EXTERNAL LOCATION,以及支撑外部表/卷
- 可保护对象 DDL 与元数据:创建/修改 catalog、schema、托管表与外部表、视图;注释、标签、表属性、所有权
可观测性与文件:
- 卷操作(上传、下载、列出 /Volumes/ 中的文件)
- 查询血缘(表依赖、列级血缘)
- 分析审计日志(谁访问了什么、权限变更)
- 监控计费与用量(DBU 消耗、成本分析)
- 追踪计算资源(集群使用、仓库指标)
- 审查作业执行(运行历史、成功率、失败)
- 分析查询性能(慢查询、仓库利用率)
- 数据质量剖析(数据剖析、漂移检测、指标表)
使用方式
运行 databricks CLI 命令前,需确认 CLI 及子命令存在。运行 databricks --version,本技能假定使用统一 CLI(≥ v1.0.0)。部分子命令(experimental aitools、system-schemas、external-lineage、grants)因版本或工作区可用性而异;若缺失或拒绝某个标志,应回退到 SQL 形式或 Python SDK,而非猜测。
创建 Unity Catalog 对象(CLI):创建命令使用 --json。位置参数顺序因命令而异且跨 CLI 版本有变化,因此 --json 是顺序无关、版本稳定的形式。示例:
databricks catalogs create --json '{"name": "my_catalog"}' databricks schemas create --json '{"name": "my_schema", "catalog_name": "my_catalog"}' databricks volumes create --json '{"catalog_name": "my_catalog", "schema_name": "my_schema", "name": "my_volume", "volume_type": "MANAGED"}'
读取命令使用简单位置参数:
databricks catalogs list databricks schemas list my_catalog databricks volumes list my_catalog.my_schema
位置参数创建顺序(因命令而异):catalogs create 为 NAME;schemas create 为 NAME CATALOG_NAME;volumes create 为 CATALOG_NAME SCHEMA_NAME NAME VOLUME_TYPE。
卷文件操作(CLI):databricks fs 即使对 UC 卷路径也要求 dbfs: 方案前缀,否则 CLI 会将路径视为本地文件系统并报错。示例:
databricks fs ls dbfs:/Volumes/catalog/schema/volume/path/ databricks fs cp -r --overwrite /tmp/data dbfs:/Volumes/catalog/schema/volume/dest databricks fs cp dbfs:/Volumes/catalog/schema/volume/file.csv /tmp/file.csv databricks fs mkdirs dbfs:/Volumes/catalog/schema/volume/new_folder
授权与撤销:GRANT/REVOKE 是核心治理操作。示例:
GRANT USE CATALOG ON CATALOG analytics TO data_readers;
GRANT USE SCHEMA ON SCHEMA analytics.gold TO data_readers;
GRANT SELECT ON SCHEMA analytics.gold TO data_readers;
SHOW GRANTS ON TABLE analytics.gold.customers;
REVOKE SELECT ON SCHEMA analytics.gold FROM data_readers;
启用系统表访问:
GRANT USE CATALOG ON CATALOG system TO data_engineers;
GRANT USE SCHEMA ON SCHEMA system.access TO data_engineers;
GRANT SELECT ON SCHEMA system.access TO data_engineers;
常用查询示例:
表血缘: SELECT source_table_full_name, source_column_name FROM system.access.table_lineage WHERE target_table_full_name = 'catalog.schema.table' AND event_date >= current_date() - 7;
审计最近权限变更: SELECT event_time, user_identity.email, action_name, request_params FROM system.access.audit WHERE action_name LIKE '%GRANT%' OR action_name LIKE '%REVOKE%' ORDER BY event_time DESC LIMIT 100;
按工作区统计 DBU 用量: SELECT workspace_id, sku_name, SUM(usage_quantity) AS total_dbus FROM system.billing.usage WHERE usage_date >= current_date() - 30 GROUP BY workspace_id, sku_name;
从 CLI 运行 SQL:databricks experimental aitools tools query 是实验性命令,experimental 命名空间不保证跨 CLI 版本稳定,可能不存在。建议从 SQL 仓库(SQL 编辑器、计划查询)、Python SDK(w.statement_execution.execute_statement)或 notebook 运行系统表 SQL,仅在快速临时检查时使用实验性 CLI。
获取示例所用 ID:WAREHOUSE_ID 可通过 databricks warehouses list 获取,或从 UI 中 SQL 仓库的 Connection details 复制。METASTORE_ID 可通过 SDK 的 w.metastores.current().metastore_id 获取,或从 Catalog UI 的 metastore 详情获取。
实验性 CLI 形式(仅便利): databricks experimental aitools tools query --warehouse WAREHOUSE_ID "SELECT source_table_full_name, target_table_full_name FROM system.access.table_lineage WHERE event_date >= current_date() - 7"
稳定 SDK 回退(适用于任何 CLI 版本): from databricks.sdk import WorkspaceClient w = WorkspaceClient() resp = w.statement_execution.execute_statement(warehouse_id="WAREHOUSE_ID", statement="""SELECT source_table_full_name, target_table_full_name FROM system.access.table_lineage WHERE event_date >= current_date() - 7 LIMIT 100""") for row in resp.result.data_array or []: print(row)
适用场景
- 需要为团队或组配置 Unity Catalog 数据访问权限时
- 需要实现行级或列级安全控制时
- 需要管理外部位置与存储凭据时
- 需要创建或修改 catalog、schema、表、视图及其元数据时
- 需要查询血缘、审计日志、计费用量、计算资源、作业执行或查询性能时
- 需要对卷中的文件进行上传、下载、列出或创建目录时
- 需要进行数据剖析与漂移检测时
限制
- 运行 CLI 命令前需确认 CLI 及子命令存在,部分子命令因版本或工作区可用性而异
- databricks experimental aitools tools query 为实验性命令,不保证跨版本稳定,可能不存在
- databricks fs 对 UC 卷路径也要求 dbfs: 方案前缀
- 系统表可能很大,应始终使用日期过滤
- 应检查工作区的保留设置
- 以下治理领域在 v0.3.0 中不在范围内,计划后续版本支持:Delta Sharing / Marketplace / Clean Rooms;Lakehouse Federation(连接与外部 catalog);ABAC / 受治理标签作为策略
- 相关但相邻的关注点由其他技能负责:databricks-core(认证、配置文件选择、通用 CLI、catalog/表探索)、databricks-metric-views、databricks-iceberg、databricks-ml-training、databricks-vector-search、databricks-pipelines、databricks-jobs、databricks-lakeflow-connect、databricks-lakebase、databricks-ai-functions、databricks-aibi-dashboards、databricks-synthetic-data-gen