將 Unity 目錄資料表 加入為 Databricks Apps 資源,讓你的應用程式能查詢和修改儲存在 Unity 目錄中的資料,並具備治理與存取控制。 Unity 目錄資料表提供結構化的資料儲存與細緻權限,讓您的應用程式能安全地讀寫資料,無需硬編碼憑證。
權限要求
要存取 Unity 目錄資料表,應用程式的服務主體必須擁有 USE CATALOG 父目錄的權限、 USE SCHEMA 父架構的權限,以及 SELECT 資料表上的 OR MODIFY 權限。 當你新增資料表資源時,Azure Databricks 會自動將這些權限授予應用程式的服務主體。
若要讓此自動授與成功,每個權限必須符合下列其中一項:
-
對於
USE CATALOG: 所有帳戶使用者都擁有USE CATALOG目錄的權限,或者您擁有MANAGE目錄的權限。 - 對於
USE SCHEMA:所有帳戶使用者都必須擁有在結構描述上的權限,或者您必須擁有USE SCHEMA在結構描述上的權限。 -
For
SELECT或MODIFY:要麼所有帳號使用者在表上都有SELECT或MODIFY權限,要麼你在表上擁有MANAGE權限。
新增 Unity 目錄資料表資源
在你將資料表加入資源之前,先先檢視 應用程式資源的前置條件。
- 當你建立或編輯應用程式時,請切換到 「配置 」步驟。
- 在 應用程式資源 區塊,點擊 + 新增資源。
- 選擇 UC 表格 作為資源類型。
- 從工作區可用的資料表中選擇一個 Unity 目錄資料表。 該表格必須已存在於 Unity 目錄中。
- 為您的應用程式選取適當的權限層級:
- 選擇: 授權應用程式查詢並讀取資料表資料。 這對於只需要讀取資料的應用程式來說很適合。
-
修改: 授權應用程式插入、更新及刪除資料表中的資料。 此權限隱含包含
SELECT,因此應用程式也能讀取資料。
- (可選)指定一個自訂的資源金鑰,這就是你在應用程式設定中參考資料表的方式。 預設索引鍵是
table。
備註
MODIFY 並非所有表格類型皆可用。 例如,視圖不支持 MODIFY 特權。 如果表格不支援 MODIFY,則僅 SELECT 可用。
環境變數
當你部署帶有 Unity Catalog 資料表資源的應用程式時,Azure Databricks 會透過環境變數公開該資料表的完整三層名稱,你可以透過該 valueFrom 欄位來參考。
設定範例:
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 目錄資料表資源時,應用程式的服務主體會失去在資料表上的 SELECT、MODIFY 和 ALL PRIVILEGES 授權。 Azure Databricks 也嘗試撤銷階層式目錄與結構權限。 該表格本身保持不變,並持續對擁有適當權限的其他使用者及應用程式開放。
最佳實務
在使用 Unity 目錄資料表資源時,請考慮以下幾點: