この手順でできること
- カタログ・スキーマ・テーブルの3階層と、権限の関係が分かる
- テーブルを読ませるのに必要な権限の組み合わせを確かめる
用意するもの
- Unity Catalog が使える Databricks のワークスペース
- カタログを作る権限(メタストアの CREATE CATALOG)
- 権限を付ける相手のグループ(例: analysts)
手順
一、カタログとスキーマを作る
案件や環境ごとにカタログを分けると、権限の管理がしやすくなります。
CREATE CATALOG IF NOT EXISTS sales_dev; CREATE SCHEMA IF NOT EXISTS sales_dev.reports; CREATE TABLE sales_dev.reports.monthly AS SELECT * FROM VALUES ('2026-09', 1200), ('2026-10', 1350) AS t(month, amount);二、グループに読み取りの権限を付ける
テーブルを読むには、テーブルの SELECT だけでなく、親のカタログの USE CATALOG と、スキーマの USE SCHEMA も必要です。権限は個人ではなくグループに付けると、人の入れ替わりに強くなります。
GRANT USE CATALOG ON CATALOG sales_dev TO `analysts`; GRANT USE SCHEMA ON SCHEMA sales_dev.reports TO `analysts`; GRANT SELECT ON TABLE sales_dev.reports.monthly TO `analysts`;三、付けた権限を確かめる
SHOW GRANTS で、だれにどの権限が付いているかを確かめます。
SHOW GRANTS ON TABLE sales_dev.reports.monthly;
うまくいったかの確かめ方
- analysts のグループに SELECT が付いていると表示される
- analysts のメンバーが、テーブルを読めて、書き込めない
つまずきどころ
- SELECT だけを付けても、USE CATALOG と USE SCHEMA がないと読めません。いちばん多いつまずきです。
- スキーマやカタログに SELECT を付けると、その中のすべてのテーブル(後から作るものも含む)に効きます。範囲を意識して付けます。
後片付け
- DROP CATALOG sales_dev CASCADE; で、練習用のカタログを中身ごと削除します。
公式の情報
- 公式ドキュメントUnity Catalog とは(新しいタブで開きます)