免責聲明:本部落格所表達的所有觀點和意見僅屬於作者,並不一定代表作者的雇主或任何其他團體或個人。本文並不為任何雲端/數據管理平台進行宣傳。所有圖像和代碼片段均可在 Azure/Databricks 網站上公開獲得。
在本文中,我將提供自動化管理 Unity Catalog 架構層級權限的腳本。
Unity Catalog 架構層級的權限
在 Unity Catalog 中的層級權限模型使用戶能夠在層級的任何層次上應用權限,並且子對象自動繼承相同的權限。因此,如果在架構層級應用權限,則該權限將自動應用於該架構內的所有表、視圖、卷和函數。
在 Unity Catalog(Databricks)中,當您想控制對特定架構內一組表和視圖的訪問時,會在 架構層級 應用權限。架構層級的權限通常在以下情況下應用:
- 授予對對象組的訪問權限:如果您想集體管理多個表和視圖的權限,則在架構層級應用權限比對每個表或視圖單獨應用更為高效。這允許您同時控制對該架構內所有對象的訪問。
- 組織控制:當組織內不同的團隊或部門需要訪問特定的資料集時,這些資料集存儲在不同的模式下。應用模式級別的權限可以讓您對該模式中與團隊相關的所有對象授予或限制訪問權限。
- 一致的權限管理:對於經常在模式中添加新對象(表格/視圖)的環境,設置模式級別的權限可以確保新對象自動繼承權限,減少手動權限更新的需求。
- 保持數據安全:當您想要對特定的資料集類別(例如金融數據、人力資源數據)在模式下進行訪問控制時。通過在模式級別設置權限,您可以保持數據安全並簡化管理。
自動化腳本
前提條件
- Unity 目錄已經設置好。
- 主體已與 Databricks 工作區關聯。
- 運行權限腳本的用戶對模式和目錄具有適當的權限。
步驟1:創建一個筆記本並聲明變量
在 Databricks 工作區中創建一個筆記本。要在工作區中創建筆記本,請單擊側邊欄中的 “+” 新建,然後選擇 筆記本。
將下面的代碼片段複製並粘貼到筆記本單元格中,然後運行該單元格。
catalog = 'main' # Specify your catalog name
schema = 'default' # Specify your schema name
principals_arr = '' # Specify the Comma(,) seperated values for principals in the blank text section (e.g. groups, username)
principals = principals_arr.split(',')
privileges_arr = 'SELECT,APPLY TAG' # Specify the Comma(,) seperated values for priviledges in the blank text section (e.g. SELECT,APPLY TAG)
privileges = privileges_arr.split(',')
步驟2:設置目錄和模式
複製、粘貼並運行下面的代碼塊到一個新的或現有的單元中,然後運行該單元。
query = f"USE CATALOG `{catalog}`" #Sets the Catalog
spark.sql(query)
步驟3:循環遍歷主體和權限,並在目錄和模式中應用授予
複製、粘貼並運行下面的代碼塊到一個新的或現有的單元中,然後運行該單元以應用權限。
for principal in principals:
query = f"GRANT USE_CATALOG ON CATALOG `{catalog}` TO `{principal}`" # Apply use catalog permission at Catalog level
spark.sql(query)
query = f"USE SCHEMA `{schema}`" # Sets the schema
spark.sql(query)
query = f"GRANT USE_SCHEMA ON SCHEMA `{schema}` TO `{principal}`" # Apply use schema permission at Schema level
spark.sql(query)
for privilege in privileges:
query = f"GRANT `{privilege}` ON SCHEMA `{schema}` TO `{principal}`" # Use schema permission at Schema level
spark.sql(query)
驗證
您可以通過打開 Databricks UI 並導航到 目錄 在數據瀏覽器中進行權限驗證。一旦目錄出現在數據部分,點擊目錄,然後選擇應用了權限的模式並轉到 權限 選項卡。現在您可以看到應用於模式的所有權限。
您也可以在筆記本中運行下面的 SQL 腳本來顯示作為驗證的模式的所有權限。
SHOW GRANTS ON SCHEMA my_schema;
結論
在 Databricks Unity Catalog 中自動化特權管理在模式級別有助於確保對目錄中的對象組(例如表、視圖、函數和卷)的一致且有效的訪問控制。提供的代碼演示了分配模式級別權限的實用方法,使得更容易管理不同主體(例如用戶和組)之間的權限。這種方法通過將表和視圖分組到一個模式中並為整個模式應用一致的權限,減少了管理任務和手動錯誤的可能性。
Source:
https://dzone.com/articles/automate-databricks-unity-catalog-permissions-at-schema-level