Unity Catalogのデータへの外部アクセスを制御する

プレビュー

この機能はパブリックプレビュー段階です。

この記事では、外部処理エンジンが開いているDatabricks Unity CatalogAPIsまたはIcebergAPIs を使用してそのデータにアクセスする場合 (特に 、エンジンがUnity Catalog 資格情報の販売機能を使用してアクセスを取得する場合) 内のデータへのアクセスを制御する方法について説明します。

この記事で説明するアクセス制御は、次のような外部エンジンとインターフェイスを使用して Unity Catalog カタログからデータを読み取るために一時的な資格情報が使用されるシナリオを対象としています。

  • Iceberg REST API

  • Microsoft Fabric

  • duckDB

  • Apache Spark や Trino

注:

Unity CatalogIcebergRESTAPIsDelta LakeUniFormは、 のIceberg テーブルへの読み取り専用アクセスを クライアントに提供できる別の方法である 、Delta を介してUnity Catalog を実装します。UniFormを使用して、Delta クライアントでテーブル を読み取るIceberg を参照してください。

資格情報のベンディングと外部エンジン アクセスの許可の概要

外部エンジンを使用して Unity Catalog メタストアに登録されているデータにアクセスする場合は、Unity Catalog REST API を使用して有効期間の短い資格情報を要求する必要があります。 Unity Catalog がその資格情報を付与するプロセスは、 資格情報のベンディングと呼ばれます。

一時的な認証情報を付与するには、リクエストを行う Databricks プリンシパル (ユーザー、グループ、またはサービスプリンシパル) が、外部エンジンからアクセスするテーブルを含むスキーマに対する EXTERNAL USE SCHEMA 権限を持っている必要があります。 スキーマを含む Unity Catalog メタストアも、外部アクセスに対して明示的に有効にする必要があります。

特権プリンシパルに一時的な資格情報が付与されると、外部エンジンのユーザーがクラウド ストレージの場所からデータ オブジェクト (テーブル) にアクセスするために使用できる、有効期間の短いアクセストークン 文字列とクラウド ストレージの場所の URL を受け取ります。 外部エンジンが資格情報とトークンをどのように使用するかは、外部エンジンに固有であるため、ここでは説明しません。

外部エンジンと Databricks Unity Catalog の構成は、次のセクションで列挙されている特定のネットワーク要件も満たす必要があります。

要件

このセクションでは、Unity CatalogのオープンAPI または Iceberg REST APIを使用して外部エンジンから データ オブジェクトに安全にアクセスするために必要なネットワーク構成、Unity Catalog メタストア オプション、テーブルの種類、およびアクセス許可の一覧を示します。

ネットワーク要件

  • DatabricksのUnity Catalog Open API またはIceberg REST API を使用して ワークスペースにアクセスするには、リクエストを実行するエンジンからワークスペースの URL にアクセスできる必要があります。これには、IP アクセスリストGoogle Private サービス Connect を使用するワークスペースが含まれます。

  • Unity Catalog に登録されたデータ オブジェクトの基になるクラウド ストレージの場所にアクセスするには、Unity Catalog の一時的な資格情報 API によって生成されたストレージ URL に、要求を実行するエンジンからアクセスできる必要があります。 つまり、エンジンは、基になるクラウド ストレージ アカウントのファイアウォールとネットワーク アクセス制御リストで許可されている必要があります。

Unity Catalog メタストアとデータ オブジェクトの要件

  • メタストアでは、 外部データ アクセスが有効になっている必要があります。

  • パブリック プレビュー期間中は、テーブルのみがサポートされます。

    • 外部テーブルは読み取りと書き込みをサポートします。

    • マネージドテーブルは読み込みのみ可能です。

  • 次のテーブルタイプはサポートされていません。

    • 行フィルターまたは列マスクを持つテーブル。

    • Delta Sharing を使用して共有されるテーブル。

    • レイクハウスフェデレーションで接続されたテーブル (フォーリンテーブル)。

    • ビュー

    • マテリアライズドビュー

    • Delta Live Tables ストリーミング テーブル

    • オンラインテーブル

    • ベクトル検索インデックス

権限の要件

一時的な資格情報を要求するプリンシパルは、次のものを持っている必要があります。

  • 含まれているスキーマまたはその親カタログに対する EXTERNAL USE SCHEMA 権限。

    この特権は、常に明示的に付与する必要があります。 親カタログの所有者のみがそれを付与できます。 偶発的な流出を避けるため、 ALL PRIVILEGES には EXTERNAL USE SCHEMA 権限は含まれておらず、スキーマの所有者にはデフォルトでこの権限がありません。

  • SELECT テーブルのアクセス許可、親カタログの USE CATALOG 、および親スキーマのアクセス許可 USE SCHEMA

メタストアでの外部データ アクセスを有効にする

外部エンジンがメタストア内のデータにアクセスできるようにするには、メタストア管理者がメタストアの外部データ アクセスを有効にする必要があります。 このオプションは、不正な外部アクセスを防ぐために、デフォルトでは無効になっています。

  1. メタストアに接続されている Databricks ワークスペースで、[ カタログ ]カタログアイコン をクリックします。

  2. [カタログ ]歯車アイコン ウィンドウの上部にある 歯車アイコンをクリックし、[ メタストア ] を選択します。

  3. [詳細] タブで、[外部データ アクセス] を有効にします。

外部データ アクセス用の一時的な資格情報を要求する

外部データ アクセスの一時的な資格情報を要求するには、上記の要件を満たすワークスペース ユーザーが /api/2.1/unity-catalog/temporary-table-credentials API を使用する必要があります。

注:

資格情報のベンディングをサポートするテーブルのリストを取得するには、 include_manifest_capabilities オプションを有効にして ListTables API を呼び出します。 HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT または HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT とマークされたテーブルのみが、temporary-table-credentials API で参照できます。「GET /api/2.1/unity-catalog/tables」を参照してください。

例:

curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'

詳細については、Databricks REST API リファレンスの 「POST /api/2.1/unity-catalog/temporary-table-credentials 」を参照してください。