Unity カタログ テーブルを Databricks Apps リソースとして追加して、アプリがガバナンスとアクセス制御を使用して Unity カタログに格納されているデータのクエリと変更を行えるようにします。 Unity カタログ テーブルは、きめ細かいアクセス許可を持つ構造化データ ストレージを提供するため、アプリは資格情報をハードコーディングすることなく安全にデータの読み取りと書き込みを行うことができます。
特権の要件
Unity カタログ テーブルにアクセスするには、アプリのサービス プリンシパルに、親カタログに対する USE CATALOG 権限、親スキーマに対する USE SCHEMA 権限、およびテーブルに対する SELECT または MODIFY 権限が必要です。 テーブル リソースを追加すると、Azure Databricks によってこれらの特権がアプリのサービス プリンシパルに自動的に付与されます。
この自動付与を成功させるには、各特権に対して次のいずれかが当てはまる必要があります。
-
USE CATALOGの場合: すべてのアカウントユーザーがカタログに対するUSE CATALOG権限を持っているか、またはあなたがカタログに対するMANAGE権限を持っている。 -
USE SCHEMAの場合: すべてのアカウントユーザーがスキーマに対するUSE SCHEMA特権を持っているか、あるいはあなたがスキーマに対するMANAGE特権を持っているかのいずれかです。 -
SELECTまたはMODIFYの場合: すべてのアカウントユーザーがテーブル上でSELECTまたはMODIFY権限を持っているか、もしくは自分がテーブル上でMANAGE権限を持っている場合。
「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。
Unity カタログ テーブル リソースを追加する
リソースとしてテーブルを追加する前に、 アプリ リソースの前提条件を確認します。
- アプリを作成または編集するときに、[ 構成 ] ステップに移動します。
- [ アプリ リソース ] セクションで、[ + リソースの追加] をクリックします。
- リソースの種類として UC テーブル を選択します。
- ワークスペースで使用可能なテーブルから Unity カタログ テーブルを選択します。 テーブルは Unity カタログに既に存在している必要があります。
- アプリに適したアクセス許可レベルを選択します。
- 選択: テーブルからデータのクエリと読み取りを行うアクセス許可をアプリに付与します。 これは、データの読み取りのみが必要なアプリに適しています。
-
変更: テーブル内のデータを挿入、更新、削除するためのアクセス許可をアプリに付与します。 このアクセス許可には暗黙的に
SELECTが含まれているため、アプリはデータを読み取ることもできます。
- (省略可能)カスタム リソース キーを指定します。これは、アプリ構成でテーブルを参照する方法です。 既定のキーは
tableです。
注
MODIFY は、すべてのテーブル型で使用できるわけではありません。 たとえば、ビューは MODIFY 特権をサポートしていません。 テーブルが MODIFYをサポートしていない場合は、 SELECT のみが使用できます。
環境変数
Unity カタログ テーブル リソースを使用してアプリをデプロイすると、Azure Databricks は、 valueFrom フィールドを使用して参照できる環境変数を使用して、テーブルの完全な 3 レベルの名前を公開します。
構成例:
env:
- name: UC_TABLE_NAME
valueFrom: table # Use your custom resource key if different
アプリケーションでのテーブルの使用:
import os
from databricks.sdk import WorkspaceClient
# Access the table name
table_name = os.getenv("UC_TABLE_NAME")
# Initialize workspace client
w = WorkspaceClient()
# Query the table using a SQL warehouse resource
result = w.statement_execution.execute_statement(
warehouse_id=os.getenv("DATABRICKS_WAREHOUSE_ID"), # Requires a SQL warehouse resource
statement=f"SELECT * FROM {table_name} LIMIT 10"
)
詳細については、「 環境変数を使用してリソースにアクセスする」を参照してください。
Unity カタログ テーブル リソースを削除する
Unity カタログ テーブル リソースをアプリから削除すると、アプリのサービス プリンシパルはテーブルに対する SELECT、 MODIFY、および ALL PRIVILEGES 許可を失います。 Azure Databricks では、階層カタログとスキーマのアクセス許可の取り消しも試みます。 テーブル自体は変更されず、適切なアクセス許可を持つ他のユーザーやアプリケーションでも引き続き使用できます。
ベスト プラクティス
Unity カタログ テーブル リソースを使用する場合は、次の点を考慮してください。
- 最小限のアクセス許可を付与します。 アプリがテーブルにデータを書き込む必要がない限り、
SELECTを使用します。 - アプリでテーブルに対して SQL クエリを実行する必要がある場合は、テーブル リソースを SQL ウェアハウス リソース と結合します。
- 最小限の特権の原則を適用できるように、広範なスキーマ レベルのアクセス権を付与するのではなく、異なるテーブルに個別のテーブル リソースを使用します。
- 非構造化データ には Unity カタログ ボリュームを 使用し、構造化データには Unity Catalog テーブルを使用することを検討してください。