メインコンテンツまでスキップ

Unity Catalog の設定と管理

この記事では、Unity Catalog を構成して使用し、Databricks ワークスペース内のデータを管理する方法について説明します。 これは主に、Unity Catalog を初めて使用するワークスペース管理者を対象としています。 Databricks Terraform プロバイダーを使用して Unity Catalog を設定するには、「 Terraform を使用して Unity Catalog のセットアップを自動化する」を参照してください。

この記事の終わりまでに、以下のものを手に入れることになります。

  • Unity Catalog が有効になっているワークスペース。
  • Unity Catalogにアクセスできるコンピュート。
  • Unity Catalog のオブジェクトにアクセスして作成するアクセス許可を持つユーザー。

また、他の紹介記事も確認することをお勧めします。

注記

既存の Unity-Catalog 以外のワークスペースを Unity Catalog にアップグレードする場合は、ID、アクセス許可、テーブルを Unity Catalog にアップグレードするための一連のワークフローとユーティリティを提供する Databricks Labs プロジェクトである UCX を使用するとよいでしょう。 UCX ユーティリティを使用してワークスペースを Unity Catalog にアップグレードするを参照してください。

Unity Catalog の有効化の概要

Unity Catalog を使用するには、Databricks ワークスペースを Unity Catalog に対して有効にする必要があります。つまり、ワークスペースは Unity Catalog メタストア (Unity Catalog メタデータの最上位コンテナー) にアタッチされています。

管理者が Unity Catalog を設定する方法は、ワークスペースが Unity Catalog に対して自動的に有効になっているか、手動で有効にする必要があるかによって異なります。

Unity Catalog の自動有効化

Databricks は、2023 年 11 月 8 日に Unity Catalog の新しいワークスペースを自動的に有効にし始め、アカウント全体で徐々にロールアウトが進んでいます。 自動的に有効になったワークスペースには、次のプロパティがあります。

  • 自動的にプロビジョニングされた Unity Catalog メタストア (ワークスペース リージョンに Unity Catalog メタストアが既に存在し、メタストアで ワークスペースの自動割り当てが有効になっている場合を除く)。

  • ワークスペース管理者向けのデフォルトの権限 (カタログや外部データベース接続を作成する機能など)。

  • メタストア管理者はありません (既存の Unity Catalog メタストアが使用され、メタストア管理者が既に割り当てられている場合を除く)。

  • マネージドテーブルと管理ボリュームのメタストア レベルのストレージはありません (メタストア レベルのストレージを持つ既存の Unity Catalog メタストアが使用された場合を除く)。

  • ワークスペース カタログ (最初にプロビジョニングされたとき、ワークスペースの名前が付けられます)。

    ワークスペース内のすべてのユーザーは、このカタログの default スキーマにアセットを作成できます。 デフォルトでは、このカタログはワークスペースに バインド されているため、ワークスペースを通じてのみアクセスできます。 ワークスペース作成時のワークスペース カタログの自動プロビジョニングは、アカウント間で徐々に展開されています。

    ワークスペースがワークスペースカタログを取得するのは、ワークスペースのプロビジョニング中にワークスペース作成者が適切な IAMロールとストレージの場所を提供した場合のみです。 このようなカタログがない場合は、「 カタログの作成」の手順に従って、同様のカタログを作成できます。

これらのデフォルト構成は、ほとんどのワークスペースで適切に機能しますが、ワークスペース管理者またはアカウント管理者がすべて変更できます。 たとえば、アカウント管理者はメタストア管理者を割り当ててメタストア レベルのストレージを作成でき、ワークスペース管理者はワークスペース カタログの名前とアクセス権を変更できます。

ワークスペースで Unity Catalog が自動的に有効になっていない場合はどうなりますか?

ワークスペースで Unity Catalog が自動的に有効になっていない場合は、アカウント管理者またはメタストア管理者が、同じリージョン内の Unity Catalog メタストアにワークスペースを手動でアタッチする必要があります。 リージョンに Unity Catalog メタストアが存在しない場合は、アカウント管理者がメタストアを作成する必要があります。 手順については、「 Unity Catalog メタストアを作成する」を参照してください。

ワークスペースが Unity Catalog で有効になっているかどうかは、どうすればわかりますか?

ワークスペースで Unity Catalog が有効になっているかどうかを確認するには、Databricks ワークスペース管理者またはアカウント管理者に確認を依頼してください。 手順 1: ワークスペースが Unity Catalog に対して有効になっていることを確認するも参照してください。

ワークスペースに ワークスペースカタログ が含まれているかどうかは、どうすればわかりますか?

一部の新しいワークスペースには ワークスペース カタログ があり、最初にプロビジョニングされたときには、ワークスペースにちなんで名前が付けられます。 ワークスペースにカタログがあるかどうかを確認するには、サイドバーのカタログアイコン [ カタログ] をクリックして カタログ エクスプローラーを開き、ワークスペース名をカタログ名として使用するカタログを検索します。

注記

ワークスペース カタログは、Unity Catalog の他のカタログと同様に、ワークスペース管理者は名前を変更したり、所有権を変更したり、削除したりすることもできます。 ただし、ワークスペースが作成された直後は、ワークスペース名が付けられます

始める前に

この記事で説明するタスクを開始する前に、メタストア、管理者ロール、管理ストレージなど、Unity Catalog の基本的な概念について理解しておく必要があります。 「Unity Catalog とは」を参照してください。

また、次の要件を満たしていることを確認する必要があります。

  • Premium プラン以上の 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 の有効化を確認します

  1. Databricks アカウント管理者として、アカウント コンソールにログインします。
  2. ワークスペースアイコン ワークスペース をクリックします。
  3. ワークスペースを見つけて、 メタストア 列を確認します。 メタストア名が存在する場合、ワークスペースは Unity Catalog メタストアにアタッチされているため、Unity Catalog に対して有効になります。

SQL クエリを実行して Unity Catalog の有効化を確認する

次の SQL クエリを SQL クエリ エディターまたは Unity Catalog 対応のコンピュート リソースにアタッチされているノートブックで実行します。 管理者ロールは必要ありません。

SQL
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 ワークスペースローカル グループのユーザー) として自動的に追加されます。 ワークスペース管理者は、ユーザーをワークスペースに追加して招待したり、ワークスペース管理者ロールを他のユーザーに割り当てたり、サービスプリンシパルとグループを作成したりできます。

アカウント 管理者は、ユーザー、サービスプリンシパル、グループ をワークスペースに追加することもできます。 アカウント管理者とメタストア管理者の役割を付与できます。

詳細については、「 ユーザーの管理」を参照してください。

(推奨)IdP からのアカウント レベルの ID の同期

Databricks へのユーザー アクセスを管理するには、Okta などのサードパーティの ID プロバイダー (IdP) からプロビジョニングを設定すると便利です。 詳細な手順については、「 SCIM を使用して 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 を手動で有効にした場合:

    • ワークスペース admins には、デフォルトによる特別な Unity Catalog 権限はありません。
    • メタストア管理者は存在し、任意の Unity Catalog オブジェクトを作成でき、任意の Unity Catalog オブジェクトの所有権を取得できる必要があります。

自動的に有効な Unity Catalog ワークスペースでワークスペース管理者に付与される追加のオブジェクト権限の一覧については、「 ワークスペースが自動的に Unity Catalog が有効になっている場合のワークスペース管理者権限」を参照してください。

特権の付与

前のセクションでリストされたオブジェクト以外のオブジェクトにアクセスするには、特権ユーザーがそのアクセス権を付与する必要があります。

たとえば、 my-catalogで新しいスキーマを作成する権限をグループに付与するには、カタログ所有者は SQL エディタまたはノートブックで次の操作を実行できます。

SQL
GRANT CREATE SCHEMA ON my-catalog TO `data-consumers`;

ワークスペースで Unity Catalog が自動的に有効になっている場合、ワークスペース管理者はワークスペース カタログを所有し、新しいスキーマを作成する権限を付与できます。

SQL
GRANT CREATE SCHEMA ON <workspace-catalog> TO `data-consumers`;

カタログエクスプローラーを使用して権限を付与および取り消すこともできます。

important

ワークスペースローカルの users または admins グループに権限を付与することはできません。 グループに対する権限を付与するには、アカウントがグループである必要があります。

Unity Catalog での特権の管理の詳細については、「 Unity Catalog での特権の管理」を参照してください。

ステップ5: 新しいカタログとスキーマを作成する

Unity Catalog の使用を開始するには、少なくとも 1 つのカタログが定義されている必要があります。 カタログは、Unity Catalog でのデータの分離と整理の主要な単位です。 すべてのスキーマとテーブルは、ボリューム、ビュー、モデルと同様にカタログに存在します。

一部のワークスペースには、自動的にプロビジョニングされたカタログがありません。 Unity Catalogを使用するには、ワークスペース管理者がそのようなワークスペースの最初のカタログを作成する必要があります。

その他のワークスペースは、ユーザーがアクセスして開始できる事前プロビジョニングカタログにアクセスできます (ワークスペースカタログまたはmainカタログ (ワークスペースが Unity Catalogに対してどのように有効になっているかによって異なります)。 Databricks にデータと AI 資産を追加すると、追加のカタログを作成して、データを論理的に管理しやすくする方法でそれらの資産をグループ化できます。

カタログとスキーマを使用してデータと AI アセットを整理する最適な方法に関する推奨事項については、「 Unity Catalog のベスト プラクティス」を参照してください。

メタストア管理者、ワークスペース管理者 (自動有効化ワークスペースのみ)、または CREATE CATALOG 権限を持つ他のユーザーは、メタストアに新しいカタログを作成できます。 その場合は、次のことを行う必要があります。

  1. 新しいカタログの 管理ストレージ を作成します。

    マネージドストレージは、AWS アカウント内のマネージドテーブルとマネージドボリューム専用のストレージ場所です。 管理ストレージは、メタストア、カタログ、およびスキーマに割り当てることができます。 ユーザーがテーブルを作成すると、データは階層の最下位のストレージの場所に格納されます。 たとえば、メタストアとカタログには格納場所が定義されているが、スキーマには定義されていない場合、データはカタログに定義された場所に格納されます。

    Databricks では、カタログは通常、データ分離の論理単位を表すため、カタログ レベルでマネージド ストレージを割り当てることをお勧めします。 同じ格納場所を共有する複数のカタログ内のデータに問題がない場合は、メタストア レベルの格納場所にデフォルトできます。 ワークスペースが自動的に Unity Catalog 有効になっている場合、デフォルトによるメタストア レベルのストレージはありません。 アカウント管理者は、メタストア レベルのストレージを構成するオプションがあります。 Unity Catalog で管理ストレージの場所を指定する既存のメタストアに管理ストレージを追加するを参照してください。

    マネージドストレージをカタログに割り当てるには、以下を作成する必要があります。

    • ストレージの認証情報
    • そのストレージ認証情報を参照する 外部ロケーション

    これらのオブジェクトの概要と作成手順については、Unity Catalog を使用してクラウド オブジェクト ストレージとサービスに接続するを参照してください。

  2. 同じメタストアを共有する他のワークスペースからのアクセスを制限する場合は、新しいカタログをワークスペースにバインドします。

    カタログへのアクセスを特定のワークスペースに制限する」を参照してください。

  3. カタログに特典を付与してください。

詳細な手順については、「カタログの作成」を参照してください。

カタログ作成例

以下の例は、マネージドストレージを使用してカタログを作成し、そのカタログに対する SELECT 特権を付与する方法を示しています。

SQL
CREATE CATALOG IF NOT EXISTS mycatalog
MANAGED LOCATION 's3://depts/finance';

GRANT SELECT ON mycatalog TO `finance-team`;

カタログ エクスプローラーを使用してカタログを作成する手順など、その他の例については、「 カタログの作成」を参照してください。

スキーマを作成する

スキーマは、カタログよりも詳細なグループ (部門やプロジェクトなど) を表します。 カタログ内のすべてのテーブルとその他の Unity Catalog オブジェクトは、スキーマに含まれています。 新しいカタログの所有者は、カタログにスキーマを作成できます。 ただし、スキーマを作成する機能を他のユーザーに委任して、カタログに対する CREATE SCHEMA 権限を付与することもできます。

詳細な手順については、「 スキーマの作成」を参照してください。

(オプション)メタストア管理者の役割を割り当てます

ワークスペースで Unity Catalog が自動的に有効になった場合、メタストア管理者ロールはデフォルトで割り当てられません。 メタストア管理者には、ワークスペース管理者にはない権限があります。

必要な場合は、メタストアの管理者を割り当てるといいかもしれません。

メタストア管理者ロールの詳細情報と、それを割り当てる手順については、「 メタストア管理者を割り当てる」を参照してください。

Hive metastore内のテーブルをUnity Catalogテーブルにアップグレード

ワークスペースが Unity Catalogで有効になる前にサービスに含まれていた場合は、引き続き使用するデータを含む Hive metastore が含まれている可能性があります。 Databricks では、 Hive metastore によって管理されているテーブルを Unity Catalog メタストアに移行することをお勧めします。

Hive テーブルとビューを Unity Catalog にアップグレードするUCX ユーティリティを使用してワークスペースを Unity Catalog にアップグレードするを参照してください。

(オプション) Hive metastore をフェデレーションして、作業を継続します

ワークスペースに、引き続き使用するデータを含むHive metastore があり、によって管理されるすべてのテーブルをHive metastore Unity Catalogメタストアにアップグレードする という推奨事項に従わない場合は、Hive metastore でフォーリンカタログとしてフェデレーションすることで、Unity Catalog 内のデータを引き続き操作できます。Hive metastoreフェデレーション:Unity Catalog に登録されたテーブルを管理するための の有効化 を参照してください。Hive metastore

(オプション)メタストア レベルのストレージを作成する

Databricks では、メタストア内のカタログごとに個別のマネージドストレージの場所を作成することをお勧めしますが (スキーマについても同じことができます)、代わりにメタストア レベルでマネージドロケーションを作成し、それを複数のカタログとスキーマのストレージとして使用することもできます。

メタストア レベルのストレージが必要な場合は、メタストア管理者も割り当てる必要があります。 (オプション) メタストア管理者ロールを割り当てるを参照してください。

メタストア レベルのストレージは、個人のステージング場所 (非推奨) に依存する Databricks パートナー製品統合を使用する場合にのみ 必要です

管理されたストレージの場所の階層の詳細については、「 データがストレージ内で物理的に分離されている」を参照してください。

メタストア レベルのストレージをメタストアのないメタストアに追加する方法については、「 既存のメタストアに管理ストレージを追加する」を参照してください。

注記

2023 年 11 月 8 日より前に Unity Catalog に対して有効になっていたほとんどのワークスペースには、メタストア レベルのストレージ ルートがあります。

次のステップ