在 Unity Catalog 中,所有目錄預設都能從任何連接至同一中繼資料庫的工作區中存取。 工作區-目錄綁定功能允許你取代此預設,以限制目錄只能對應一個或多個特定的工作區。 即使對目錄享有明確授權的使用者,來自未綁定工作區的存取請求仍然會被拒絕。
為什麼要使用工作區-目錄綁定
組織與合規要求通常規定某些資料必須僅在指定環境中存取。 你可能還需要:
- 將生產資料從開發或測試環境中分離。
- 防止某些資料網域被合併在一起。
- 確保敏感資料只能在特定工作區中處理。
在 Azure Databricks 中,工作區是主要的資料處理環境,目錄則是主要資料領域。 工作區-目錄綁定連結了這兩個概念,讓目錄擁有者與擁有 MANAGE 權限的使用者決定哪些工作區可以存取哪些目錄。
工作區目錄綁定的運作方式
當你將目錄綁定到特定工作區時,只有你指派的那些工作區能存取該目錄。 任何不在指定名單中的工作空間,當使用者嘗試存取目錄時將收到錯誤,此錯誤會取代該使用者持有的任何個別授予的權限。
在此圖表中, prod_catalog 系結至兩個生產工作區。 即使使用者在 prod_catalog 中的SELECT資料表上持有prod_catalog權限,他們也無法從開發工作區存取該資料表。
唯讀存取
當你將目錄綁定到工作區時,可以選擇性地限制該工作區為唯讀存取。 該工作區到目錄的所有寫入操作都會被封鎖。
預設工作區目錄行為
預設開啟行為的例外是所有新工作區自動建立的 預設工作區目錄 。 此工作區目錄預設僅與其工作區綁定。 如果你解除綁定這個目錄或擴展存取到其他工作區,必須手動授予任何必要的權限,因為工作區管理員群組是工作區本地的,無法跨工作區使用。
平台範圍的執法
工作區與目錄綁定在平台上一致執行:
- 資訊結構查詢僅回傳目前工作區中可存取的目錄。
- 數據沿革和目錄瀏覽器只會顯示分配到目前工作區的目錄。
什麼可以綁定到工作區
工作區綁定的應用範圍不僅限於目錄。 你也可以綁定:
- 外部地點:限制哪些工作區可以存取特定的雲端儲存路徑。 請參閱 (選擇性) 將外部位置指派給特定工作區。
- 儲存憑證:限制哪些工作區可以使用特定的雲端憑證。 請參閱 (選擇性) 將記憶體認證指派給特定工作區。
- 服務憑證:限制哪些工作空間可以使用特定的雲端服務憑證。 參見 (可選)為特定工作空間指派服務憑證。
將目錄系結至一或多個工作區
若要將目錄指派給特定工作區,您可以使用目錄總管或 Databricks CLI。
必要權限:Metastore 管理員、目錄擁有者,或有 MANAGE 和 USE CATALOG 的目錄。
Note
無論目錄是否被指派到目前的工作區,Metastore 管理員都能看到 metastore 中的所有目錄,目錄擁有者也能看到他們在 metastore 中擁有的所有目錄。 未指派到工作區的目錄會顯示為灰色,且其子項目皆不可見,也無法查詢。
目錄檢視器
請登入與中繼存放區連結的工作區。
按兩下
目錄。
在 [ 目錄 ] 窗格中,按兩下左側的目錄名稱。
主要「目錄總管」窗格預設為「目錄」列表。 您也可以選取該處的目錄。
在 [ 工作區] 索引 標籤上,清除 [ 所有工作區都有存取權 ] 複選框。
如果您的目錄已經系結至一或多個工作區,則此複選框已清除。
按兩下 [指派給工作區 ],然後輸入或尋找您想要指派的工作區。
(選擇性)將工作區存取限制為唯讀。
在 [ 管理存取層級 ] 功能表上,選取 [將存取權變更為只讀]。
您可以隨時編輯目錄,然後選取 變更為讀寫存取權 來取消這個選擇。
若要撤銷存取權,請移至 [工作區] 標籤,選取工作區,然後按一下 [撤銷]。
CLI
有兩個 Databricks CLI 命令群組,以及將目錄指派給工作區所需的兩個步驟。
在以下範例中,將 <profile-name> 替換為你的 Azure Databricks 認證設定檔名稱。 它應該包含個人存取令牌的值,以及用來產生個人存取令牌的工作區之工作區實例名稱和工作區標識符。 參見個人存取權杖認證(舊有系統)。
catalogs使用命令群組的update指令,將目錄的isolation mode設定為ISOLATED:databricks catalogs update <my-catalog> \ --isolation-mode ISOLATED \ --profile <profile-name>中繼存放區所附加的所有工作區的預設值是
isolation-mode為OPEN。workspace-bindings使用命令群組的update-bindings命令,將工作區指派給目錄:databricks workspace-bindings update-bindings catalog <my-catalog> \ --json '{ "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...], "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...] }' --profile <profile-name>使用
"add"和"remove"屬性來新增或移除工作區系結。<binding-type>可以是"BINDING_TYPE_READ_WRITE"(預設值) 或"BINDING_TYPE_READ_ONLY"。
若要列出目錄的所有工作區指派,請使用 workspace-bindings 命令群組的 get-bindings 命令:
databricks workspace-bindings get-bindings catalog <my-catalog> \
--profile <profile-name>
從工作區解除系結目錄
使用目錄總管或 workspace-bindings CLI 命令群組撤銷目錄存取權的指示包含在將 目錄系結至一或多個工作區中。
Important
如果你的工作區自動啟用了 Unity Catalog,且你擁有預設的工作區目錄,則工作區管理員擁有該目錄的所有權限,該權限僅限於工作區中。 如果您解除系綁該目錄或將其綁定到其他目錄,必須手動授予任何必要的權限給工作區管理員群組成員,這可以是以個別使用者的身份或使用帳戶層級的群組授權,因為工作區管理員群組是屬於工作區當地群組的成員。 如需帳戶群組與工作區本地組的詳細資訊,請參閱 群組來源。