限制特定工作區的目錄存取
本文介紹工作區目錄系結,並說明如何將 Unity 目錄目錄系結至 Azure Databricks 工作區,以防止 Azure Databricks 帳戶中的其他工作區存取它。
什麼是工作區目錄系結?
如果您使用工作區來隔離用戶數據存取,您可以限制帳戶中特定工作區的目錄存取權,也稱為工作區目錄系結。 預設值是與連結至目前中繼存放區的所有工作區共享目錄。
此預設值的例外是 針對所有新工作區自動建立的工作區目錄 。 除非您選擇提供其他工作區的存取權,否則此工作區目錄只會系結至您的工作區。 如需解除系結此目錄時指派許可權的重要資訊,請參閱 從工作區解除系結目錄。
您可以允許從工作區讀取和寫入目錄的存取權,也可以指定唯讀存取權。 如果您指定唯讀,則會封鎖從該工作區到該目錄的所有寫入作業。
將目錄系結至特定工作區的典型使用案例包括:
- 確保使用者只能從生產工作區環境存取生產數據。
- 確保使用者只能處理專用工作區中的敏感數據。
- 讓使用者從開發人員工作區唯讀存取生產數據,以啟用開發和測試。
注意
您也可以將外部位置和記憶體認證系結至特定工作區,將外部位置中的數據限製為這些工作區中具特殊許可權的使用者。 請參閱 (選擇性) 將外部位置指派給特定工作區 ,以及 [選擇性] 將記憶體認證指派給特定工作區。
工作區目錄系結範例
以生產與開發隔離為例。 如果您指定生產數據目錄只能從生產工作區存取,這會取代任何發給使用者的個別授與。
在此圖表中, prod_catalog
系結至兩個生產工作區。 假設使用者已獲授與對名為 prod_catalog
之數據表的my_table
存取權(使用 GRANT SELECT ON my_table TO <user>
)。 如果使用者嘗試在開發人員工作區中存取 my_table
,他們會收到錯誤訊息。 使用者只能從 Prod ETL 和 Prod Analytics 工作區存取 my_table
。
工作區目錄系結會在平臺的所有區域中受到尊重。 例如,如果您查詢信息架構,則只會在發出查詢的工作區中看到可存取的目錄。 數據譜系和搜尋 UI 同樣只會顯示指派給工作區的目錄(無論是使用系結還是預設)。
將目錄系結至一或多個工作區
若要將目錄指派給特定工作區,您可以使用目錄總管或 Databricks CLI。
所需的許可權:中繼存放區管理員、目錄擁有者或 MANAGE
和 USE CATALOG
。
注意
無論目錄是否已指派給目前工作區,中繼存放區管理員都可以使用目錄總管查看中繼存放區中的所有目錄,而且目錄擁有者可以看到他們在中繼存放區中擁有的所有目錄。 未指派給工作區的目錄會顯示為灰色,而且看不到或可查詢任何子物件。
目錄總管
登入連結至中繼存放區的工作區。
按下 [目錄]。
在 [ 目錄 ] 窗格中,按兩下左側的目錄名稱。
主要 [目錄總管] 窗格預設為 [ 目錄] 列表。 您也可以選取該處的目錄。
在 [ 工作區] 索引 標籤上,清除 [ 所有工作區都有存取權 ] 複選框。
如果您的目錄已經系結至一或多個工作區,則此複選框已清除。
按兩下 [ 指派給工作區 ],然後輸入或尋找您想要指派的工作區。
(選擇性)將工作區存取限制為唯讀。
在 [ 管理存取層級 ] 功能表上,選取 [ 將存取權變更為只讀]。
您可以隨時編輯目錄,然後選取 [變更讀取和寫入的存取權] 來反轉此選取專案。
若要撤銷存取權,請移至 [ 工作區] 索引 卷標,選取工作區,然後按兩下 [ 撤銷]。
CLI
有兩 個 Databricks CLI 命令群組,以及將目錄指派給工作區所需的兩個步驟。
在下列範例中,將 取代 <profile-name>
為您的 Azure Databricks 驗證組態配置檔名稱。 它應該包含個人存取令牌的值,以及您產生個人存取令牌之工作區的工作區實例名稱和工作區標識符。 請參閱 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 命令群組撤銷目錄存取權的指示包含在將目錄系結至一或多個工作區中。
重要
如果您的工作區已針對 Unity 目錄自動啟用,而且您有工作區目錄,工作區管理員就會擁有該目錄,而且只有工作區中該目錄的所有許可權。 如果您解除系結該目錄或系結至其他目錄,您必須以個別使用者或使用帳戶層級群組,手動將任何必要的許可權授與工作區管理員群組的成員,因為工作區管理員群組是工作區本機群組。 如需帳戶群組與工作區本地組的詳細資訊,請參閱 Azure Databricks中的群組類型