Databricks

Unity Catalogとは?Databricksのデータガバナンス

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Unity Catalogは、Databricksが提供するアカウントレベルの統合データガバナンスレイヤーです。 テーブル・ビュー・関数・MLモデル・ファイル(Volumes)といったすべてのデータアセットに対し、 複数ワークスペースを横断した一元的なアクセス制御・監査ログ・データリネージを実現します。 従来のHive Metastoreではワークスペースごとに分断されていたメタデータ管理を、catalog.schema.table の3レベル名前空間で統一し、 SQL標準のGRANT/REVOKEによる権限管理を可能にしました。

この記事では、Unity Catalogの階層構造・権限モデル・External Location・Delta Sharing連携・Hive Metastoreとの違いまでを網羅的に解説します。Data Engineer Associate(DEA)試験のData Governanceドメイン(出題比率17%)を中心に、認定試験で問われるポイントもあわせて整理しています。

Unity Catalogの階層構造

Unity Catalogは、Metastoreを頂点とする4階層のオブジェクトモデルを採用しています。すべてのデータアセットはこの階層ツリーに配置され、権限は上位から下位へ継承されます。

Metastore(アカウントに1つ、リージョンごと)
 ├── Catalog: production
 │    ├── Schema: sales
 │    │    ├── Table: orders
 │    │    ├── Table: customers
 │    │    ├── View: daily_summary
 │    │    └── Function: calc_tax()
 │    ├── Schema: marketing
 │    │    ├── Table: campaigns
 │    │    └── Volume: raw_files
 │    └── Schema: information_schema(自動生成)
 ├── Catalog: development
 │    └── Schema: sandbox
 │         └── Table: test_orders
 ├── External Location: s3://data-lake/external/
 └── Storage Credential: aws_s3_role

データアセットを参照するときは、常に catalog.schema.object の3レベル名前空間を使います。これにより「どの環境の、どのドメインの、どのテーブルか」が名前だけで一意に特定できます。

-- 3レベル名前空間でのアクセス
SELECT * FROM production.sales.orders;
--            ^^^^^^^^^^  ^^^^^  ^^^^^^
--            Catalog     Schema Table

-- デフォルトのCatalog/Schemaを設定
USE CATALOG production;
USE SCHEMA sales;

-- 上記の設定後は短縮形でアクセス可能
SELECT * FROM orders;

各レベルの役割と設計パターン

レベル説明設計パターン例
MetastoreUnity Catalogの最上位コンテナ。1リージョンに1つ作成し、複数ワークスペースに紐づけるap-northeast-1(東京)用に1つ作成
Catalogデータアセットの最上位論理グループ。環境・部門・プロジェクト単位で分離production / development / staging、finance / marketing
Schemaテーブルやビューのグルーピング。ドメインやデータレイヤー単位で整理sales / hr / logs、bronze / silver / gold
Table / View / Function / Volume実際のデータアセット。Managed TableかExternal Tableのいずれかorders(Managed)、external_logs(External)、calc_tax()(UDF)

Catalog・Schemaの作成

Unity Catalogでデータアセットを格納するには、まずCatalogとSchemaを作成します。CatalogはMetastore Admin(またはCREATE CATALOG権限を持つユーザー)が、SchemaはCatalog所有者(またはCREATE SCHEMA権限を持つユーザー)が作成できます。

-- Catalogの作成
CREATE CATALOG IF NOT EXISTS production
COMMENT 'Production environment catalog';

-- Schemaの作成
CREATE SCHEMA IF NOT EXISTS production.sales
COMMENT 'Sales domain tables';

-- Managed Tableの作成(LOCATIONなし → Unity Catalog管理ストレージに格納)
CREATE TABLE production.sales.orders (
  order_id     BIGINT       GENERATED ALWAYS AS IDENTITY,
  customer_id  BIGINT       NOT NULL,
  amount       DECIMAL(12,2) NOT NULL,
  order_date   DATE         NOT NULL,
  status       STRING       DEFAULT 'pending'
)
COMMENT 'Customer order records'
TBLPROPERTIES ('quality' = 'gold');

-- External Tableの作成(LOCATIONあり → 外部ストレージのデータを参照)
CREATE TABLE production.sales.external_logs (
  log_id    BIGINT,
  message   STRING,
  timestamp TIMESTAMP
)
LOCATION 's3://data-lake/external/sales/logs/';

権限管理(GRANT / REVOKE)

Unity CatalogはSQL標準のGRANT/REVOKE構文でアクセス制御を行います。権限はSecurable Object(Catalog、Schema、Table、View、Function、Volume、External Location、Storage Credential)に対して付与し、ユーザーまたはグループ(プリンシパル)に紐づけます。

主な権限タイプ

権限適用対象効果
USAGECatalog, Schemaオブジェクト内部の一覧表示・配下へのアクセスに必須
SELECTTable, Viewデータの読み取り(SELECT文の実行)
MODIFYTableINSERT / UPDATE / DELETE / MERGE の実行
CREATE TABLESchemaSchema内に新しいテーブルを作成
CREATE SCHEMACatalogCatalog内に新しいSchemaを作成
CREATE CATALOGMetastoreMetastore内に新しいCatalogを作成
ALL PRIVILEGESすべて対象オブジェクトに対する全権限を一括付与
CREATE EXTERNAL LOCATIONStorage CredentialStorage Credentialを使ったExternal Locationの作成

権限付与のSQL例

-- ステップ1: Catalogへのアクセスを開く(廊下を通す)
GRANT USAGE ON CATALOG production TO analysts;

-- ステップ2: SchemaへのUSAGEを開く
GRANT USAGE ON SCHEMA production.sales TO analysts;

-- ステップ3: テーブルのSELECT権限を付与(部屋に入れる)
GRANT SELECT ON SCHEMA production.sales TO analysts;
-- ↑ Schema配下の全テーブルにSELECTが適用される

-- 特定のテーブルだけに限定する場合
GRANT SELECT ON TABLE production.sales.orders TO analysts;

-- データ変更権限の付与
GRANT MODIFY ON TABLE production.sales.orders TO etl_service;

-- Schema内にテーブルを作れる権限
GRANT CREATE TABLE ON SCHEMA production.sales TO data_engineers;

-- 権限の確認
SHOW GRANTS ON SCHEMA production.sales;
SHOW GRANTS TO analysts;

-- 権限の取り消し
REVOKE SELECT ON SCHEMA production.sales FROM analysts;

権限の継承モデル

Unity Catalogの権限は上位オブジェクトから下位に継承されます。 たとえば、CatalogにSELECTを付与すると、そのCatalog配下のすべてのSchemaとテーブルに SELECTが適用されます。ただし、USAGEは自動継承されません。 上位のCatalogとSchemaの両方にUSAGEを明示的に付与しない限り、 配下のテーブルにSELECT権限があってもデータにアクセスできません。

権限の継承イメージ:

GRANT SELECT ON CATALOG production TO analysts;
 → production配下の全Schema・全Tableに SELECT が継承

ただし USAGE が必要:
 Catalog: production  → USAGE が必要 ✓
   Schema: sales      → USAGE が必要 ✓
     Table: orders    → SELECT で読み取り可能 ✓

USAGE が欠けている場合:
 Catalog: production  → USAGE なし ✗
   Schema: sales      → USAGE あり
     Table: orders    → SELECT あり → でもアクセス不可 ✗

Managed Table と External Table

Unity Catalogに登録するテーブルは、データの保存場所によってManaged TableとExternal Tableに分類されます。DROP時の挙動が根本的に異なるため、設計時に正しく選択する必要があります。

比較項目Managed TableExternal Table
データの場所Unity Catalogの管理ストレージ(Metastore/Catalog/Schemaのストレージルート)ユーザーが指定した外部パス(S3, ADLS, GCS)
作成方法CREATE TABLE ...(LOCATIONなし)CREATE TABLE ... LOCATION 's3://...'
DROP時のデータメタデータとデータファイルの両方が削除されるメタデータのみ削除、データファイルは外部ストレージに残る
ライフサイクル管理Unity Catalogが完全に管理データファイルのライフサイクルはユーザーが管理
推奨ユースケースDatabricks内で完結するデータ、新規構築プロジェクト既存データレイクとの連携、他プラットフォームとのデータ共有
試験頻出: 「DROP TABLE実行後にデータファイルはどうなるか?」 → Managed Tableはデータも消える、External Tableはメタデータだけ消える。

External Location と Storage Credential

External Tableを作成するには、Unity Catalogが外部ストレージにアクセスするための認証情報を登録する必要があります。この仕組みはStorage CredentialとExternal Locationの2段階で構成されます。

[Storage Credential]          クラウドの認証情報を登録
        │                     (IAMロール / Service Principal / Service Account)
        ▼
[External Location]           認証情報と許可パスを紐づけ
  url: s3://bucket/path/      「この認証情報で、このパス範囲にアクセスOK」
        │
        ▼
[External Table]              LOCATION句で外部パスを指定してテーブル作成
  production.sales.ext_logs
  LOCATION 's3://bucket/path/logs/'

設定の流れ(SQL)

-- 1. Storage Credentialの作成(Metastore Admin権限が必要)
CREATE STORAGE CREDENTIAL aws_s3_credential
WITH (
  AWS_IAM_ROLE = 'arn:aws:iam::123456789012:role/unity-catalog-role'
);

-- 2. External Locationの作成
CREATE EXTERNAL LOCATION s3_data_lake
URL 's3://my-data-lake/production/'
WITH (STORAGE CREDENTIAL aws_s3_credential)
COMMENT 'Production data lake on S3';

-- 3. External Locationの権限を付与
GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION s3_data_lake
TO data_engineers;

-- 4. External Tableの作成
CREATE TABLE production.sales.external_events (
  event_id   BIGINT,
  event_type STRING,
  payload    STRING,
  created_at TIMESTAMP
)
LOCATION 's3://my-data-lake/production/events/';

Storage Credentialは複数のExternal Locationで再利用できます。 たとえば1つのIAMロールで s3://bucket/sales/s3://bucket/marketing/の2つのExternal Locationを作成し、チームごとにアクセス範囲を分離するといった設計が可能です。

Hive Metastoreとの比較

Unity Catalogは、従来のHive Metastoreが抱えていたガバナンスの課題を解決するために設計されました。移行を検討する際は以下の違いを理解しておく必要があります。

比較項目Hive MetastoreUnity Catalog
管理スコープワークスペース単位(各ワークスペースに独立したメタストア)アカウント単位(複数ワークスペースで共有)
名前空間2レベル(schema.table / database.table)3レベル(catalog.schema.table)
権限モデルTable ACL(テーブル/ビュー単位のアクセス制御リスト)SQL標準GRANT/REVOKE(階層的な権限継承)
監査ログクラスタログに依存(統一的な監査が困難)System Tablesによる統一監査ログ
データリネージ手動管理(標準機能なし)テーブル・カラムレベルの自動リネージ
テーブル形式Delta / Parquet / CSV / JSON / ORC / AvroManaged TableはDelta形式のみ、External Tableは複数形式対応
ファイル管理DBFS(ガバナンスなし)Volumes(権限管理・監査付き)
クロスワークスペース共有不可(ワークスペース間でメタデータが分断)同一Metastore配下のワークスペースで自動共有

Unity CatalogとDelta Sharing

Delta Sharingは、組織の境界を超えてデータを安全に共有するためのオープンプロトコルです。 Unity CatalogはDelta Sharingのプロバイダーとして機能し、外部組織のDatabricks環境や 非Databricks環境(Spark、Pandas、Power BI、Tableauなど)に対してデータを共有できます。

-- 共有(Share)の作成
CREATE SHARE customer_analytics;

-- Shareにテーブルを追加
ALTER SHARE customer_analytics
ADD TABLE production.sales.orders;

-- 受信者(Recipient)の作成
CREATE RECIPIENT partner_company
USING ID 'partner-sharing-identifier';

-- 受信者にShareへのアクセスを付与
GRANT SELECT ON SHARE customer_analytics TO RECIPIENT partner_company;
  • データのコピーは発生しない(プロバイダーのストレージから直接読み取り)
  • テーブル単位・パーティション単位で共有範囲を制御可能
  • 受信者はDatabricksユーザーでなくてもよい(オープンプロトコル)
  • 共有したデータへのアクセスログはプロバイダー側の監査ログに記録される

Volumes(ファイルガバナンス)

Volumesは、テーブル以外のファイル(CSV、JSON、画像、モデルアーティファクト、設定ファイルなど)をUnity Catalogの権限モデルで管理するための機能です。従来のDBFS(Databricks File System)にはガバナンス機能がなく、「誰がどのファイルにアクセスしたか」を追跡できませんでした。VolumeはCatalog/Schema配下に作成されるため、GRANT/REVOKEで権限制御ができ、監査ログにも記録されます。

-- Managed Volumeの作成(Unity Catalog管理ストレージに保存)
CREATE VOLUME production.raw.landing_files;

-- External Volumeの作成(外部パスを参照)
CREATE EXTERNAL VOLUME production.raw.s3_landing
LOCATION 's3://my-bucket/landing/';

-- ファイルの一覧表示
LIST '/Volumes/production/raw/landing_files/';

-- SQLからファイルを読み取り
SELECT * FROM csv.`/Volumes/production/raw/landing_files/2026-03/data.csv`;

-- PythonからVolume内のファイルを読み取り
-- df = spark.read.csv("/Volumes/production/raw/landing_files/2026-03/data.csv")

データリネージと監査

Unity Catalogは、ノートブックやジョブで実行されたSparkクエリを自動的に解析し、テーブル間・カラム間のデータフロー(リネージ)を記録します。手動での設定や有効化は不要で、Unity Catalogが有効な環境では自動的に動作します。

  • テーブルレベルリネージ: テーブルAのデータがテーブルBに流れたことを追跡
  • カラムレベルリネージ: 特定カラムがどのソースカラムから派生したかを追跡
  • 影響分析: 「このテーブルのスキーマを変更したら、どの下流テーブルが影響を受けるか」を事前確認
  • コンプライアンス: PIIデータがどのテーブルに伝播したかを追跡し、GDPR等の規制対応に活用

監査ログは system.access.audit テーブル(System Tables)に記録されます。誰がいつどのオブジェクトに対してどの操作を行ったかを、SQLで直接クエリして分析できます。

-- 直近24時間の監査イベントを確認
SELECT
  event_time,
  user_identity.email AS user_email,
  action_name,
  request_params.full_name_arg AS object_name
FROM system.access.audit
WHERE event_time > current_timestamp() - INTERVAL 24 HOURS
  AND action_name IN ('getTable', 'createTable', 'grantPermission')
ORDER BY event_time DESC;

試験で問われるポイント(DEA 17%)

Data Engineer Associate(DEA)試験では、Data Governanceドメインが約17%の出題比率を占めます。Unity Catalogはこのドメインの中核トピックです。以下の項目は確実に押さえてください。

出題テーマ押さえるべきポイント
3レベル名前空間catalog.schema.table の構造。Metastoreは名前空間には含まれない
USAGE権限Catalog・Schemaの両方にUSAGEがないとSELECTが効かない。上位が「廊下」、下位が「部屋」
Managed vs ExternalDROP時の挙動: Managed→データ削除、External→メタデータのみ削除。LOCATION句の有無で区別
Storage Credential → External Location2段階の認証構造。Credential=クラウド認証情報、Location=許可パス範囲
VolumesDBFSの後継。ファイルにもGRANT/REVOKE・監査ログが適用される
データリネージ有効化不要(自動記録)。テーブルレベルとカラムレベルの2種類
Delta Sharingオープンプロトコル。データコピー不要。受信者はDatabricksユーザーでなくてもよい
権限の継承Catalogに付与した権限は配下の全Schema・全Tableに継承される(USAGEを除く)

サンプル問題

Data Governance / Unity Catalog

問題 1

アナリストチーム(グループ名: analysts)が production.sales.orders テーブルを SELECT しようとしたが、'PERMISSION DENIED' エラーが発生した。管理者は GRANT SELECT ON SCHEMA production.sales TO analysts を実行済みである。この問題を解決するために追加で必要なSQL文はどれか。

  1. GRANT USAGE ON CATALOG production TO analysts
  2. GRANT ALL PRIVILEGES ON TABLE production.sales.orders TO analysts
  3. GRANT READ ON SCHEMA production.sales TO analysts
  4. GRANT BROWSE ON CATALOG production TO analysts

正解: A

Unity Catalogの権限モデルでは、配下オブジェクトにアクセスするためにCatalog・Schemaの両方にUSAGE権限が必要です。SchemaにSELECTを付与しても、上位のCatalogにUSAGEがなければ「廊下を通れない」ためアクセスできません。GRANT USAGE ON CATALOG production TO analysts を追加し、さらに production.sales スキーマへのUSAGEも必要です(問題文では SELECT ON SCHEMA が付与済みのため、スキーマレベルのアクセスは暗黙的にカバーされているケースもありますが、CatalogへのUSAGEは別途必要です)。選択肢BのALL PRIVILEGESは過剰な権限付与で最小権限の原則に反します。選択肢CのREADやDのBROWSEはUnity Catalogの標準権限名ではありません。

Data Governance / External Location

問題 2

データエンジニアがS3上の既存データを参照するExternal Tableを作成したい。Unity Catalogで必要な手順として正しい順序はどれか。

  1. External Table作成 → External Location作成 → Storage Credential作成
  2. Storage Credential作成 → External Table作成 → External Location作成
  3. Storage Credential作成 → External Location作成 → External Table作成
  4. External Location作成 → Storage Credential作成 → External Table作成

正解: C

External Tableの作成には、事前にStorage CredentialとExternal Locationが必要です。正しい順序は (1) Storage Credential(クラウド認証情報の登録)→ (2) External Location(そのCredentialを使ってアクセス可能なパス範囲を定義)→ (3) External Table(LOCATION句でパスを指定して作成)です。External LocationはStorage Credentialへの参照を含むため、Credentialが先に存在する必要があります。External TableはExternal LocationのURL範囲内にLOCATIONを指定するため、Locationが先に存在する必要があります。

Data Governance / Table Types

問題 3

Unity CatalogのManaged Tableに対して DROP TABLE production.sales.orders を実行した場合、データファイルはどうなるか。

  1. メタデータとデータファイルの両方が削除される
  2. メタデータのみ削除され、データファイルは30日間保持された後に自動削除される
  3. メタデータのみ削除され、データファイルは外部ストレージに残る
  4. メタデータとデータファイルは削除されるが、UNDROP TABLEで復元できる

正解: A

Managed TableはUnity Catalogがデータのライフサイクルを完全に管理するため、DROP TABLE実行時にメタデータとデータファイルの両方が削除されます。これに対し、External Tableの場合はメタデータのみが削除され、データファイルは外部ストレージに残ります。選択肢Bの「30日間保持」は存在しない仕組みです。選択肢CはExternal Tableの挙動です。選択肢DのUNDROP TABLEはUnity Catalogの機能として存在しますが、データファイル自体が「残る」のではなく、Unity Catalogの内部メカニズムで一定期間復元可能なだけです。試験ではManaged/Externalの違いを「データファイルの削除有無」で即答できるようにしましょう。

Unity Catalogの問題をもっと解いてみよう

Data Governanceドメインの問題を含む16,000問以上で実力チェック

無料で問題を解く

よくある質問(FAQ)

Unity CatalogとHive Metastoreの違いは何ですか?

Hive Metastoreはワークスペース単位でメタデータを管理し、ワークスペースをまたいだ権限管理や監査ができません。Unity Catalogはアカウントレベルで動作し、複数ワークスペースに対して統一的なアクセス制御・監査ログ・データリネージを提供します。権限の仕組みも異なり、Hive Metastoreはテーブル/ビュー単位のACLのみですが、Unity CatalogはGRANT/REVOKEによるSQL標準の権限管理を採用し、Catalog・Schema・Table/View/Function/Volumeの階層全体で一貫した制御が可能です。

Unity Catalogは無料で使えますか?

Unity Catalogの基本機能(3レベル名前空間・GRANT/REVOKE権限管理・Managed/External Table・Volumes)はDatabricksの全エディション(Standard含む)で利用可能です。ただし、Attribute-Based Access Control(ABAC)、自動リネージのカラムレベル追跡、Lakehouse Monitoringとの連携など一部の高度な機能はPremium以上が必要です。最新のエディション別機能はDatabricks公式ドキュメントで確認してください。

Unity Catalogの権限でUSAGEとSELECTの違いは何ですか?

USAGEは「そのオブジェクトの内部を参照する権利」で、CatalogやSchemaに対して付与します。SELECTは「テーブルやビューのデータを読み取る権利」です。例えば、production.sales.ordersテーブルをSELECTするには、テーブルへのSELECT権限に加えて、productionカタログへのUSAGE権限とsalesスキーマへのUSAGE権限が必要です。USAGEは「廊下を通る鍵」、SELECTは「部屋に入る鍵」と考えるとわかりやすいです。片方だけではアクセスできません。

Unity Catalog 関連記事

Data Engineer Associate 完全解説

Unity CatalogはGovernanceドメイン(17%)で出題

Delta Lake完全ガイド

Unity CatalogのManaged TableはDelta形式

Delta Sharing解説

Unity Catalogからの安全なデータ共有

Databricks SQL完全ガイド

GRANT/REVOKE構文とクエリ実行環境

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.