Unity Catalog の設定と管理
この記事では、Azure Databricks ワークスペースのデータを管理するために Unity Catalog を構成して使用する方法について説明します。 この記事は、主に Unity Catalog を初めて使用するワークスペース管理者を対象としています。
この記事を最後まで読むと、次のことができるようになります。
- Unity Catalog に対して有効になっているワークスペース。
- Unity Catalog にアクセスできるコンピューティング。
- Unity Catalog のオブジェクトにアクセスし、作成するアクセス許可のあるユーザー。
また、次のような他の紹介記事を確認してみるのもいいでしょう。
- テーブルを作成してアクセス許可を付与する方法の簡単なチュートリアルについては、「チュートリアル: Unity Catalog 内で最初のテーブルを作成し、アクセス許可を許可する」を参照してください。
- Unity Catalog の主な概念と Unity Catalog のしくみについては、「Unity Catalog とは」を参照してください。
- Unity Catalog を使用してデータ ガバナンスのニーズを満たす最善の方法については、「Unity Catalog のベスト プラクティス」を参照してください。
Note
既存の Unity-Catalog 以外のワークスペースを Unity Catalog にアップグレードする場合は、ID、アクセス許可、およびテーブルを Unity Catalog にアップグレードするための一連のワークフローとユーティリティを提供する Databricks Labs プロジェクトである UCX を使用すると便利です。 「UCX ユーティリティを使用してワークスペースを Unity Catalog にアップグレードする」を参照してください。
Unity Catalog の有効化の概要
Unity Catalog を使用するには、Azure Databricks ワークスペースが Unity Catalog で有効になっている必要があります。これは、ワークスペースが Unity Catalog メタデータの最上位コンテナーである Unity Catalog メタストアにアタッチされていることを意味します。
管理者が Unity Catalog を設定する方法は、ワークスペースが Unity Catalog で自動的に有効になったか、手動で有効にする必要があるかによって異なります。
Unity Catalog の自動有効化
Databricks は、2023 年 11 月 9 日、アカウント全体で順次ロールアウトする Unity Catalog の新しいワークスペースの自動有効化を開始しました。 自動的に有効になったワークスペースには、次のプロパティがあります。
自動的にプロビジョニングされた Unity カタログ メタストア (ワークスペース リージョンに対して Unity カタログ メタストアが既に存在し、メタストアが自動ワークスペース割り当て 可能でない限り)。
カタログや外部データベース接続を作成する機能など、ワークスペース管理者の既定のアクセス許可。
メタストア管理者がいない (既存の Unity Catalog メタストアが使用され、メタストア管理者が既に割り当てられている場合を除く)。
マネージド テーブルとマネージド ボリュームにメタストア レベルのストレージがない (メタストア レベルのストレージを持つ既存の Unity Catalog メタストアが使用されている場合を除く)。
ワークスペース カタログは、最初にプロビジョニングされるときに、ワークスペースにちなんだ名前になります。
ワークスペースのすべてのユーザーは、このカタログ内の
default
スキーマで資産を作成できます。 既定では、このカタログはワークスペースにバインドされており、ワークスペースからのみアクセスできます。 ワークスペース作成時のワークスペース カタログの自動プロビジョニングは、アカウント全体に徐々にロールアウトされます。
これらの既定の構成はほとんどのワークスペースで機能しますが、ワークスペース管理者またはアカウント管理者が変更できます。たとえば、アカウント管理者はメタストア管理者を割り当ててメタストアレベルのストレージを作成でき、ワークスペース管理者はワークスペースのカタログ名とアクセスを変更できます。
ワークスペースが Unity Catalog で自動的に有効にならなかった場合はどうなりますか?
ワークスペースが Unity Catalog で自動的に有効にならなかった場合は、アカウント管理者またはメタストア管理者がワークスペースを同じリージョンの Unity Catalog メタストアに手動でアタッチする必要があります。 リージョンに Unity Catalog メタストアが存在しない場合は、アカウント管理者が作成する必要があります。 手順については、「Unity Catalog メタストアを作成する」を参照してください。
ワークスペースが Unity Catalog で有効になったかどうかを把握するにはどうすればよいですか?
ワークスペースで Unity Catalog が有効かどうかを確認するには、Azure Databricks ワークスペース管理者またはアカウント管理者に確認を依頼してください。 「手順 1: ワークスペースが Unity Catalog で有効になっていることを確認する」も参照してください。
ワークスペースに workspace カタログが含まれているかどうか操作方法?
一部の新しいワークスペースには、"ワークスペース カタログ" が含まれています。これには、最初にプロビジョニングされたときに、ワークスペースにちなんだ名前が付けられます。 ワークスペースに含まれているかどうかを確認するには、サイド バーの [カタログ] をクリックしてカタログ エクスプローラーを開き、ワークスペース名をカタログ名として使っているカタログを検索します。
Note
ワークスペース カタログは Unity Catalog 内の他のカタログと同様です。ワークスペース管理者は、その名前を変更する、所有権を変更する、さらには削除することができます。 ただし、ワークスペースが作成された直後に、ワークスペース名が付けられます
開始する前に
この記事で説明するタスクを開始する前に、メタストア、管理者ロール、マネージド ストレージなど、Unity Catalog の基本的な概念に慣れておく必要があります。 「Unity Catalog とは」を参照してください。
次の要件を満たしていることを確認しておくことも必要です。
Premium プランの Azure Databricks ワークスペースであること。
ワークスペースの状態によって、次のようなロールと権限があります。
ワークスペース管理者: ワークスペースの作成時に Unity Catalog で自動的に有効になった場合、必要なタスクを完了するには、ワークスペース管理者である必要があります。
アカウント管理者: ワークスペースがまだ Unity Catalog で有効になっていない場合は、アカウント管理者がワークスペースをメタストアにアタッチする必要があります。
ワークスペースと同じリージョンに Unity Catalog メタストアがない場合は、アカウント管理者が Unity Catalog メタストアも作成する必要があります。
ワークスペース リージョンにメタストアが存在するかどうかを判断する手順と、メタストアを作成する手順は、この記事に従ってください。
Unity Catalog の管理特権と Unity Catalog の自動有効化を参照してください。
手順 1: ワークスペースが Unity Catalog で有効になっていることを確認する
この手順では、Unity Catalog に対してワークスペースが既に有効かどうかを判断します。ここで言う有効とは、Unity Catalog メタストアがワークスペースにアタッチされていることと定義されます。 Unity Catalog に対してワークスペースが有効になっていない場合は、Unity Catalog に対してワークスペースを手動で有効にする必要があります。 「Unity Catalog に対してワークスペースが有効になっていない場合の次の手順」を参照してください。
確認するには、次のいずれかの操作を行います。
アカウント コンソールを使って Unity Catalog が有効であることを確認する
- Azure Databricks アカウント管理者として、アカウント コンソールにログインします。
- [ワークスペース] をクリックします。
- ワークスペースを見つけて、[メタストア] 列を確認します。 メタストア名が存在する場合、ワークスペースは Unity Catalog メタストアにアタッチされているため、Unity Catalog に対して有効になっています。
SQL クエリを実行して Unity Catalog が有効であることを確認する
SQL クエリ エディターで次の SQL クエリを実行するか、 共有 または single ユーザー アクセス モードを使用するクラスターに接続されているノートブックを実行します。 「アクセス モード」を参照してください。 管理者ロールは必要ありません。
SELECT CURRENT_METASTORE();
クエリが次のようなメタストア ID を返した場合、ワークスペースは Unity Catalog メタストアにアタッチされているため、Unity Catalog に対して有効になっています。
Unity Catalog に対してワークスペースが有効になっていない場合の次の手順
Unity Catalog に対してワークスペースが有効になっていない (メタストアにアタッチされていない) 場合、次の手順は、ワークスペース リージョンに Unity Catalog メタストアが既に定義されているかどうかによって異なります。
- アカウントにワークスペース リージョン用に定義された Unity Catalog メタストアが既にある場合は、ワークスペースを既存のメタストアにアタッチするだけで構いません。 「Unity Catalog のワークスペースを有効にする」を参照してください。
- ワークスペース リージョンに Unity Catalog メタストアが定義されていない場合は、メタストアを作成してからワークスペースをアタッチする必要があります。 「Unity Catalog メタストアを作成する」を参照してください。
Unity Catalog に対してワークスペースが有効になっている場合は、次の手順に進みます。
手順 2: ユーザーの追加とワークスペース管理ロールの割り当て
ワークスペースを作成したユーザーは、ワークスペース管理ロールを持つワークスペー ユーザーとして自動的に追加されます (つまり、admins
ワークスペース-ローカル グループのユーザー)。 ワークスペース管理者として、ワークスペースにユーザーを追加および招待したり、ワークスペース管理者のロールを他のユーザーに割り当てたり、サービス リンシパルやグループを作成したりできます。
アカウント管理者は、ユーザー、サービス プリンシパル、グループをワークスペースに追加することもできます。 また、アカウント管理者とメタストア管理者のロールを付与することができます。
詳細については、「ユーザーの管理」を参照してください。
(推奨) Microsoft Entra ID からアカウント レベルの ID を同期する
Microsoft Entra ID からプロビジョニングを設定すると、Azure Databricks へのユーザー アクセスを管理するのに役立ちます。 完全な手順については、「Microsoft Entra ID からユーザーとグループを同期する」をご覧ください。
手順 3: ユーザーがクエリの実行やオブジェクトの作成に使用できるクラスターや SQL ウェアハウスを作成する
Unity Catalog ワークロードを実行するには、コンピューティング リソースが特定のセキュリティ要件に準拠している必要があります。 準拠していないコンピューティング リソースは、Unity Catalog のデータやその他のオブジェクトにアクセスできません。 SQL ウェアハウスは常に Unity Catalog 要件に準拠していますが、一部のクラスター アクセス モードは準拠していません。 「アクセス モード」を参照してください。
ワークスペース管理者として、コンピューティング作成を管理者に限定したり、ユーザーに独自の SQL ウェアハウスやクラスターを作成させたりすることができます。 また、適用する Unity Catalog 準拠の仕様を使用して、ユーザーが独自のクラスターを作成できるようにするクラスター ポリシーを作成することもできます。 「コンピューティングのアクセス許可」と「コンピューティング ポリシーの作成と管理」を参照してください。
手順 4: ユーザーへの権限の付与
オブジェクトを作成し、Unity Catalog のカタログとスキーマにアクセスするには、ユーザーにそのためのアクセス許可が必要です。 このセクションでは、一部のワークスペースで既定で付与されるユーザーと管理者の特権について説明します。また、追加の特権を付与する方法について説明します。
既定のユーザー特権
一部のワークスペースには、起動時に既定のユーザー (非管理者) 特権が付与されます。
自動的にプロビジョニングされたワークスペース カタログを使ってワークスペースが起動された場合、すべてのワークスペース ユーザーはワークスペース カタログの
default
スキーマにオブジェクトを作成できます。ワークスペースにワークスペース カタログがあるかどうかを判断する方法については、「ワークスペースにワークスペース カタログが含まれているかどうかを操作方法知る」を参照してください。
Unity Catalog に対してワークスペースを手動で有効にした場合、
main
カタログは自動的にプロビジョニングされます。ワークスペース ユーザーには、
main
カタログのUSE CATALOG
権限があります。これは、カタログ内のオブジェクトを作成したり選択したりする機能を付与するものではありませんが、カタログ内のオブジェクトで作業するための前提条件です。 メタストアを作成したユーザーは、既定でmain
カタログを所有し、所有権の譲渡と他のユーザーへのアクセス権の付与の両方を行うことができます。メタストアの作成後にメタストア ストレージが追加された場合、
main
カタログはプロビジョニングされません。
他のワークスペースには、既定でカタログが作成されず、管理者以外のユーザー特権は既定で有効になりません。 ワークスペース管理者は最初のカタログを作成し、それとその中のオブジェクトへのアクセス権をユーザーに付与する必要があります。 このセクションの手順を完了する前に、「手順 5: 新しいカタログとスキーマを作成する」に進んでください。
既定の管理者特権
一部のワークスペースには、起動時に既定のワークスペース管理者特権が付与されます。
- ワークスペースが Unity Catalog で自動的に有効になった場合:
- ワークスペース管理者は、新しいカタログと新しいカタログ内のオブジェクトを作成し、それらにアクセス権を付与できます。
- 既定では、メタストア管理者は存在しません。
- ワークスペース管理者は、ワークスペース カタログを所有し (存在する場合)、そのカタログおよびそのカタログ内のオブジェクトへのアクセス権を付与できます。
- ワークスペースが Unity Catalog で手動で有効になった場合:
- ワークスペース管理者には、既定で特別な Unity Catalog 特権は付与されません。
- メタストア管理者は、存在する必要があり、任意の Unity Catalog オブジェクトを作成することや、任意の Unity Catalog オブジェクトの所有権を取得することができます。
自動的に有効になる Unity Catalog ワークスペースのワークスペース管理者に付与される追加のオブジェクト特権の一覧については、「ワークスペースで Unity Catalog が自動的に有効になる場合のワークスペース管理特権」を参照してください。
特権を付与する
前のセクションに記載した以外のオブジェクトにアクセスするには、特権ユーザーがそのアクセス権を付与する必要があります。
たとえば、my-catalog
に新しいスキーマを作成する機能をグループに付与するには、カタログ所有者は SQL エディターまたはノートブックで次の内容を実行できます。
GRANT CREATE SCHEMA ON my-catalog TO `data-consumers`;
ワークスペースが Unity Catalog で自動的に有効になった場合、ワークスペース管理者はワークスペース カタログを所有し、次のような新しいスキーマを作成する権限を付与できます。
GRANT CREATE SCHEMA ON <workspace-catalog> TO `data-consumers`;
また、Catalog Explorer を使用して、特権の付与と取り消しを行うこともできます。
重要
ワークスペース ローカル users
または admins
グループには特権を付与できません。 グループに特権を付与するには、アカウント レベルのグループである必要があります。
Unity Catalog での特権の管理については、「Unity Catalog の特権の管理」を参照してください。
手順 5: 新しいカタログとスキーマを作成する
Unity Catalog の使用を開始するには、少なくとも 1 つのカタログを定義する必要があります。 カタログは、Unity Catalog におけるデータの分離と編成の主要な単位です。 すべてのスキーマとテーブルは、ボリューム、ビュー、モデルと同様にカタログ内に格納されます。
一部のワークスペースには、自動的にプロビジョニングされるカタログがありません。 Unity Catalog を使うには、ワークスペース管理者がそのワークスペース用の最初のカタログを作成する必要があります。
他のワークスペースは、ユーザーがアクセスして使用できる、事前にプロビジョニングされたカタログ (Unity Catalog に対してワークスペースをどのように有効にしたかに応じて、ワークスペース カタログまたは main
カタログ) にアクセスできます。 Azure Databricks にデータや AI 資産を追加すると、データを論理的に管理しやすくするために、それらの資産をグループ化する追加のカタログを作成できます。
カタログとスキーマを使用してデータと AI 資産を整理する最適な方法に関する推奨事項については、「Unity Catalog のベスト プラクティス」を参照してください。
メタストア管理者、ワークスペース管理者 (自動有効化ワークスペースのみ)、または CREATE CATALOG
権限を持つその他のユーザーとして、メタストアに新しいカタログを作成できます。 その場合は、次のようなことをする必要があります。
新しいカタログ用にマネージド ストレージを作成します。
マネージド ストレージは、マネージド テーブルとマネージド ボリューム用の、Azure アカウント内の専用の保存場所です。 マネージド ストレージをメタストア、カタログ、スキーマに割り当てることができます。 ユーザーがテーブルを作成すると、データは階層で最も下にある保存場所に格納されます。 たとえば、メタストアとカタログに保存場所が定義されているものの、スキーマには定義されていない場合、データはカタログに定義された場所に保存されます。
Databricks では、カタログ レベルでマネージド ストレージを割り当てることを推奨しています。その理由は、カタログは通常、データ分離の論理ユニットを表すためです。 複数のカタログのデータが同じ保存場所を共有しても問題ない場合は、メタストア レベルの保存場所を既定値にすることができます。 ワークスペースが Unity Catalog で自動的に有効になった場合、既定ではメタストア レベルのストレージはありません。 アカウント管理者には、メタストア レベルのストレージを構成するオプションがあります。 「Unity Catalog でマネージド ストレージの場所を指定する」および「既存のメタストアにマネージド ストレージを追加する」を参照してください。
マネージド ストレージをカタログに割り当てるには、次の内容を作成する必要があります。
- "ストレージの資格情報"。
- そのストレージ資格情報を参照する外部の場所。
これらのオブジェクトの導入と作成手順については、「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」を参照してください。
同じメタストアを共有する他のワークスペースからのアクセスを制限する場合は、新しいカタログをワークスペースにバインドします。
「特定のワークスペースにカタログ アクセスを制限する」参照してください。
カタログに権限を付与します。
詳細な手順については、「カタログを作成する」を参照してください。
カタログ作成の例
次の例では、マネージド ストレージを持つカタログを作成し、そのカタログに SELECT
権限を付与しています。
CREATE CATALOG IF NOT EXISTS mycatalog
MANAGED LOCATION 'abfss://mycontainer@<myaccount.dfs.core.windows.net//depts/finance';
GRANT SELECT ON mycatalog TO `finance-team`;
カタログ エクスプローラーを使用したカタログの作成手順などの詳細な例については、「カタログを作成する」を参照してください。
スキーマを作成する
スキーマは、カタログよりも細かいグループ化 (部門やプロジェクトなど) を表します。 カタログ内のすべてのテーブルとその他の Unity Catalog オブジェクトは、スキーマに含まれています。 新しいカタログの所有者として、カタログ内のスキーマを作成する必要がある場合があります。 ただし、その代わりに、カタログ上で CREATE SCHEMA
権限を付与することによって、スキーマを作成する機能を他のユーザーに委任する必要がある場合もあります。
詳細な手順については、「スキーマを作成する」を参照してください。
(省略可能) メタストア管理者ロールの割り当て
ワークスペースが Unity Catalog で自動的に有効になった場合、既定ではメタストア管理者ロールは割り当てられません。 メタストア管理者には、ワークスペース管理者にはない特権があります。
次のような必要に応じて、メタストア管理者を割り当てるとよいでしょう。
誰かが会社を辞めた後、カタログの所有権を変更する。
init スクリプトと jar allowlist のアクセス許可を管理および委任する。
ワークスペース管理者以外に、カタログを作成するアクセス許可やその他の最上位のアクセス許可を委任する。
Delta 共有を通じて共有データを受け取る。
クリーン ルームを使用します。
既定のワークスペース管理者のアクセス許可を削除する。
マネージド ストレージが存在しない場合は、メタストアに追加します。 「既存のメタストアにマネージド ストレージを追加する」を参照してください。
メタストア管理者ロールに関する詳細および割り当て手順については、「メタストア管理者を割り当てる」を参照してください。
Hive メタストアのテーブルを Unity Catalog テーブルにアップグレードする
Unity Catalog が有効になる前にワークスペースがサービスに入っていた場合は、引き続き使用するデータを含む Hive メタストアが存在する可能性があります。 Databricks では、Hive メタストアによって管理されるテーブルを Unity Catalog メタストアに移行することをお勧めします。
「Hive のテーブルとビューを Unity Catalog にアップグレードする」および「UCX ユーティリティを使用してワークスペースを Unity Catalog にアップグレードする」を参照してください。
(省略可能) Hive メタストアで操作を続行する
ワークスペースに、引き続き使用するデータを含む Hive メタストアがあり、Hive メタストアで管理されているテーブルを Unity Catalog メタストアにアップグレードする推奨事項に従わない場合は、Hive メタストア内のデータと Unity Catalog メタストア内のデータを引き続き操作できます。
Hive メタストアは、Unity Catalog インターフェースでは hive_metastore
という名前のカタログとして表されます。 hive_metastore
カタログを指定するようにクエリを更新することなく Hive メタストアのデータを引き続き操作するには、ワークスペースの既定のカタログを hive_metastore
に設定できます。 「既定のカタログを管理する」を参照してください。
ワークスペースが Unity Catalog で有効になったタイミングによっては、既定のカタログが既に hive_metastore
になっている場合があります。
(省略可能) メタストアレベルのストレージを作成する
Databricks では、メタストア内のカタログごとに個別のマネージド ストレージの場所を作成することを推奨しています (スキーマに対しても同様にすることができます) が、代わりにメタストア レベルで管理対象の場所を作成し、それを複数のカタログやスキーマのストレージとして使うこともできます。
メタストアレベルのストレージが必要な場合は、メタストア管理者も割り当てる必要があります。「(省略可能) メタストア管理者ロールの割り当て」を参照してください。
メタストアレベル ストレージは、以下に該当する場合にのみ必要です。
- Databricks 間の Delta Sharing を使ってノートブックを共有しようと考えている。
- 個人のステージング場所 (非推奨) に依存する Databricks パートナー成果物統合を使っている。
マネージド ストレージの場所の階層の詳細については、「データは、ストレージ内で物理的に分離されます」を参照してください。
メタストアレベル ストレージがないメタストアに追加する方法については、「既存のメタストアにマネージド ストレージを追加する」を参照してください。
Note
2023 年 11 月 9 日より前に Unity Catalog に対して有効にされたほとんどのワークスペースには、メタストアレベルのストレージ ルートがあります。
次のステップ
- 最初のテーブルを作成するために、次の簡単なチュートリアルを実行します: チュートリアル: Unity Catalog 内で最初のテーブルを作成し、アクセス許可を許可する
- Unity Catalog の詳細について: Unity Catalog とは
- Unity Catalog を使用するためのベスト プラクティス: Unity Catalog のベスト プラクティス
- 特権の付与と取り消し方法に関する説明: Unity Catalog の特権の管理
- テーブルの作成方法を確認する
- Hive テーブルを Unity Catalog にアップグレードする方法について説明します
- Databricks CLI をインストールする:「Databricks CLI とは」