Unity Catalog テーブルリソースを Databricks アプリに追加する
Unity Catalog テーブルをDatabricks Apps リソースとして追加すると、アプリはガバナンスとアクセス制御を使用して、Unity Catalog に保存されているデータをクエリおよび変更できます。Unity Catalogテーブルは、きめ細かな権限を持つ構造化データ ストレージを提供するため、アプリは資格情報をハードコーディングすることなく、安全にデータを読み書きできます。
特権要件
Unity Catalogテーブルにアクセスするには、アプリのサービスプリンシパルには、親カタログに対するUSE CATALOG権限、親スキーマに対するUSE SCHEMA権限、テーブルに対するSELECTまたはMODIFY権限が必要です。 テーブル リソースを追加すると、 Databricksこれらの権限をアプリのサービスプリンシパルに自動的に付与します。
この自動付与が成功するには、権限ごとに次のいずれかが当てはまる必要があります。
USE CATALOGの場合: すべてのアカウント ユーザーがカタログに対してUSE CATALOG権限を持っているか、カタログに対してMANAGE権限を持っています。USE SCHEMAの場合: すべてのアカウント ユーザーがスキーマに対するUSE SCHEMA権限を持っているか、またはスキーマに対するMANAGE権限を持っています。SELECTまたはMODIFYの場合: すべてのアカウント ユーザーがテーブルに対してSELECTまたはMODIFY権限を持っているか、またはテーブルに対してMANAGE権限を持っています。
Unity Catalog の特権とセキュリティ保護可能なオブジェクトを参照してください。
Unity Catalogテーブル リソースを追加する
テーブルをリソースとして追加する前に、アプリ リソースの前提条件を確認してください。
-
アプリを作成または編集するときは、 「構成」 ステップに移動します。
-
[アプリ リソース] セクションで、 [+ リソースの追加] をクリックします。
-
リソース タイプとして UC テーブル を選択します。
-
ワークスペース内の利用可能なテーブルからUnity Catalogテーブルを選択します。 テーブルはUnity Catalogにすでに存在している必要があります。
-
アプリに適切な権限レベルを選択します。
- 選択: テーブルからデータをクエリして読み取る権限をアプリに付与します。これは、データの読み取りのみが必要なアプリに適しています。
- 変更: テーブル内のデータを挿入、更新、削除する権限をアプリに付与します。この権限には暗黙的に
SELECTが含まれるため、アプリはデータを読み取ることもできます。
-
(オプション) アプリ構成でテーブルを参照する方法であるカスタム リソース キーを指定します。デフォルトのキーは
tableです。
MODIFY すべてのテーブル タイプで使用できるわけではありません。たとえば、ビューはMODIFY権限をサポートしていません。テーブルがMODIFYをサポートしていない場合は、 SELECTのみが使用可能です。
環境変数
Unity Catalog テーブル リソースを使用してアプリをデプロイすると、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 Catalogテーブル リソースを削除する
アプリからUnity Catalogテーブル リソースを削除すると、アプリのサービスプリンシパルはテーブルに対するSELECT 、 MODIFY 、およびALL PRIVILEGES許可を失います。 Databricks は、階層カタログとスキーマの権限の取り消しも試行します。テーブル自体は変更されず、適切な権限を持つ他のユーザーやアプリケーションで引き続き使用できます。
ベストプラクティス
Unity Catalogテーブル リソースを操作するときは、次の点を考慮してください。
- 最小限の権限を付与します。アプリがテーブルにデータを書き込む必要がない限り、
SELECTを使用します。 - アプリがテーブルに対してSQLクエリを実行する必要がある場合は、テーブル リソースをSQLウェアハウスリソースと組み合わせます。
- 広範なスキーマ レベルのアクセスを許可するのではなく、異なるテーブルに個別のテーブル リソースを使用して、最小権限の原則を適用できるようにします。
- 非構造化データにはUnity Catalogボリュームを使用し、構造化データにはUnity Catalogテーブルを使用することを検討してください。