Unity Catalog への外部データ アクセスを有効にする
DatabricksUnity Catalogでは、UnityRESTAPI と カタログを使用してApacheIcebergREST テーブルにアクセスできます。
メタストア管理者は、外部からアクセスする必要があるメタストアごとに外部データ アクセスを有効にする必要があります。接続を構成するユーザーまたはサービスプリンシパルは、サポートされている操作 (マネージドテーブルからの読み取り、または外部テーブルの作成、読み取り、および書き込み) を実行する必要がある各スキーマの EXTERNAL USE SCHEMA
権限を持っている必要があります。
Unity REST API は、Delta テーブルの直接読み取りをサポートしています。Iceberg REST カタログは、Delta テーブルの読み取りと Iceberg テーブルの読み取りと書き込みをサポートしています。「外部システムを使用した Databricks データへのアクセス」を参照してください。
メタストアでの外部データ アクセスを有効にする
外部エンジンがメタストア内のデータにアクセスできるようにするには、メタストア管理者がメタストアの外部データ アクセスを有効にする必要があります。 このオプションは、不正な外部アクセスを防ぐために、デフォルトでは無効になっています。
外部データアクセスを有効にするには、次の操作を行います。
- メタストアに接続されている Databricks ワークスペースで、
カタログ をクリックします。
- カタログ ペインの上部にある歯車アイコン
をクリックし、 メタストア を選択します。
- 詳細 タブで、 外部データ アクセス を有効にします。
これらのオプションは、十分な権限を持つユーザーに対してのみ表示されます。 これらのオプションが表示されない場合は、メタストアの外部データ アクセスを有効にする権限がありません。
プリンシパルに Unity Catalog 特権を付与する
Databricks に接続する外部クライアントは、十分な特権を持つプリンシパルからの承認が必要です。
Databricks では、認証に OAuth と個人用アクセス トークン (PAT) がサポートされています。 Databricks リソースへのアクセスの承認を参照してください。
一時的な資格情報を要求するプリンシパルは、次のものを持っている必要があります。
-
含まれているスキーマまたはその親カタログに対する
EXTERNAL USE SCHEMA
権限。この特権は、常に明示的に付与する必要があります。 親カタログの所有者のみがそれを付与できます。 偶発的な流出を避けるため、
ALL PRIVILEGES
にはEXTERNAL USE SCHEMA
権限は含まれておらず、スキーマの所有者にはデフォルトでこの権限がありません。 -
SELECT
テーブルのアクセス許可、親カタログのUSE CATALOG
、および親スキーマのアクセス許可USE SCHEMA
。 -
外部テーブルを作成する場合、プリンシパルはスキーマに対する
CREATE TABLE
権限と、ターゲットの外部ロケーションに対するCREATE EXTERNAL TABLE
権限とEXTERNAL USE LOCATION
権限の両方も持っている必要があります。EXTERNAL USE LOCATION
常に明示的に付与する必要があります。外部ロケーションに対するMANAGE
権限を持つユーザーのみが、外部ロケーションを付与できます。偶発的な流出を回避するために、ALL PRIVILEGES
にはEXTERNAL USE LOCATION
権限が含まれておらず、ロケーション所有者にはデフォルトでこの権限がありません。
次の構文例は、ユーザーに EXTERNAL USE SCHEMA
を付与する方法を示しています。
GRANT EXTERNAL USE SCHEMA ON SCHEMA catalog_name.schema_name TO `user@company.com`
次の構文例は、ユーザーに EXTERNAL USE LOCATION
を付与する方法を示しています。
GRANT EXTERNAL USE LOCATION ON EXTERNAL LOCATION external_location_name TO `user@company.com`
ユーザーがスキーマ内のすべての必要なテーブルを読み取る権限を持っていると仮定すると、追加の権限は必要ありません。 テーブルを読み取るための追加のアクセス許可を付与する必要がある場合は、「 Unity Catalog の特権とセキュリティ保護可能なオブジェクト」を参照してください。