Unity Catalog によるガバナンス:3レベル名前空間、アクセス制御、リネージ

この記事について

Unity Catalog は Databricks のデータガバナンスソリューションである。カタログ、アクセス制御、リネージ、監査を統合的に提供する。AWS Lake Formation + Glue Data Catalog に相当する機能を1つのサービスで実現する。

1. 3レベル名前空間

Unity Catalog は3レベルの名前空間でデータを整理する。

<catalog>.<schema>.<table>

例: prod_catalog.sales.fact_orders
    dev_catalog.sales.fact_orders
Metastore(最上位、ワークスペースに紐づく)
  └── Catalog(環境やドメインで分離)
       ├── prod_catalog
       │    └── Schema(論理的なグループ)
       │         ├── sales
       │         │    ├── fact_orders     (Table)
       │         │    └── dim_product     (Table)
       │         └── marketing
       │              └── campaigns       (Table)
       └── dev_catalog
            └── sales
                 └── fact_orders          (Table)

AWS / Oracle との比較

レベル Unity Catalog AWS Oracle
最上位 Metastore
第1レベル Catalog
第2レベル Schema Glue Database Schema
第3レベル Table Glue Table Table

Unity Catalog の3レベル構造により、環境分離(dev/prod)やドメイン分離(sales/marketing)が名前空間で自然に表現できる。

2. アクセス制御

2-1. SQL ベースの権限管理

-- Schema への権限
GRANT USE SCHEMA ON prod_catalog.sales TO analyst_group;

-- テーブルへの読み取り権限
GRANT SELECT ON prod_catalog.sales.fact_orders TO analyst_group;

-- カラムマスキング
CREATE FUNCTION mask_email(email STRING)
  RETURNS STRING
  RETURN CONCAT(LEFT(email, 2), '***@***.com');

ALTER TABLE customers
  ALTER COLUMN email SET MASK mask_email;

2-2. 権限の粒度

粒度 説明
Catalog カタログ全体
Schema スキーマ内の全テーブル
Table 特定テーブル
Column カラムマスキング
Row 行フィルタ

2-3. AWS / Oracle との比較

機能 Unity Catalog Lake Formation Oracle Data Safe
テーブル権限 ✅ SQL GRANT
カラム権限 ✅ マスキング関数 ✅ カラム除外 ✅ Data Masking
行フィルタ ✅ Row Filter ✅ Data Filter ✅ VPD
タグベース ❌(将来対応予定) ✅ LF-Tags
SQL 構文 ✅ 標準 SQL ❌ API/コンソール

Unity Catalog は SQL の GRANT/REVOKE で権限管理できる点が DBA にとって直感的。

3. データリネージ

Unity Catalog はクエリ実行時にリネージを自動取得する。

[raw.orders] ──→ [Spark Job] ──→ [curated.orders] ──→ [SQL] ──→ [gold.fact_sales]
     │                                                              │
     └── column: order_id ──────────────────────────→ column: order_id
     └── column: price × qty ───────────────────────→ column: amount

リネージの粒度: – テーブルレベル:テーブル間の依存関係 – カラムレベル:カラム間の変換関係

AWS では同等の機能を得るために DataZone やサードパーティツールが必要。

4. 監査ログ

Unity Catalog は全アクセスを監査ログに記録する。

記録される情報
誰が [email protected]
いつ 2024-04-01 10:30:00 UTC
何を SELECT on prod_catalog.sales.fact_orders
どこから SQL Warehouse / Notebook
結果 成功 / 権限エラー

5. マルチクラウド対応

Unity Catalog の最大の差別化ポイント。

Unity Catalog Metastore
  ├── AWS ワークスペース
  │    └── s3://datalake-aws/
  ├── Azure ワークスペース
  │    └── abfss://datalake-azure/
  └── GCP ワークスペース
       └── gs://datalake-gcp/

→ 全ワークスペースから同一のカタログ・権限・リネージを共有

AWS Lake Formation は AWS 内のみ、Oracle Data Catalog は OCI 内のみ。Unity Catalog はクラウドをまたいだ統合ガバナンスを提供する。

6. Securables(管理対象)

Unity Catalog はテーブル以外のアセットも統合管理する。

Securable 説明
Table Delta Lake テーブル
View ビュー
Volume 非テーブルファイル(画像、PDF 等)
Function UDF
Model ML モデル(MLflow 統合)
Connection 外部データソースへの接続

ML モデルまでカタログで管理できる点は、SageMaker + Glue では実現しにくい。

7. まとめ

機能 Unity Catalog AWS 相当
カタログ 3レベル名前空間 Glue Data Catalog
アクセス制御 SQL GRANT + マスキング + 行フィルタ Lake Formation
リネージ 自動取得(テーブル + カラム) DataZone / サードパーティ
監査 全アクセスログ CloudTrail + Lake Formation
マルチクラウド
ML モデル管理 SageMaker Model Registry(別サービス)

Unity Catalog は「1つのサービスで全ガバナンス」を実現する。AWS は複数サービスの組み合わせで同等の機能を構築する。

参考文献

  • Databricks. “Unity Catalog Documentation.” https://docs.databricks.com/en/data-governance/unity-catalog/
  • Databricks. “Unity Catalog Best Practices.” https://docs.databricks.com/en/data-governance/unity-catalog/best-practices.html

コメントする