管理服務主體
本文介紹如何建立和管理 Azure Databricks 帳戶和工作區的服務主體。
如需 Azure Databricks 身分識別模型的概觀,請參閱 Azure Databricks 身分識別。
若要管理服務主體的存取權,請參閱驗證和存取控制。
何謂服務主體?
服務主體是您在 Azure Databricks 中建立的身分識別,可與自動化工具、作業和應用程式搭配使用。 服務主體可讓自動化工具和指令碼提供僅限 Azure Databricks 資源的 API 存取權限而言,提供比使用使用者或群組更高的安全性。
您可以使用與 Azure Databricks 使用者相同的方式,授與和限制服務主體對資源的存取權。 例如,您可以執行下列動作:
- 提供服務主體帳戶管理員和工作區管理員角色。
- 在帳戶層級使用 Unity Catalog 或在工作區層級,為服務主體提供資料存取權。
- 將服務主體新增至帳戶和工作區層級的群組,包括工作區
admins
群組。
也可以為 Azure Databricks 使用者、服務主體和群組授與權限,以使用服務主體。 這可讓使用者以服務主體的身分執行工作,而不是以其身分執行。 如果使用者離開您的組織或群組遭到修改,這可防止工作失敗。
不同於 Azure Databricks 使用者,服務主體是僅限 API 的身分識別;它無法用來存取 Azure Databricks UI。
Databricks 建議您啟用識別身分同盟的工作區。 識別身分同盟可讓您在帳戶主控台中設定服務主體,然後向它們指派特定工作區的存取權。 這可簡化 Azure Databricks 管理和資料控管。
重要
Databricks 於 2023 年 11 月 9 日自動為識別身分同盟和 Unity Catalog 啟用了新工作區,並逐步跨帳戶推出。 如果您的工作區預設為識別身分同盟啟用,則無法停用。 如需了解更多資訊,請參閱自動啟用 Unity 目錄。
Databricks 和 Microsoft Entra ID 服務主體
服務主體可以是 Azure Databricks 受控服務主體或 Microsoft Entra ID 受控服務主體。
Azure Databricks 受控服務主體可以使用 Databricks OAuth 驗證和個人存取權杖向 Azure Databricks 進行驗證。 Microsoft Entra ID 受控服務主體可以使用 Databricks OAuth 驗證和 Microsoft Entra ID 權杖向 Azure Databricks 進行驗證。 如需服務主體驗證的詳細資訊,請參閱管理服務主體的權杖。
會直接在 Azure Databricks 中管理 Azure Databricks 受控服務主體。 在 Microsoft Entra ID 中管理 Microsoft Entra ID 受控服務主體,這需要額外的權限。 Databricks 建議您使用 Azure Databricks 受控服務主體進行 Azure Databricks 自動化,並在必須同時向 Azure Databricks 和其他 Azure 資源進行驗證時,使用 Microsoft Entra ID 受控服務主體。
若要建立 Azure Databricks 受控服務主體,請略過本節,並繼續閱讀誰可以管理和使用服務主體?。
若要在 Azure Databricks 中使用 Microsoft Entra ID 受控服務主體,管理員使用者必須在 Azure 中建立 Microsoft Entra ID 應用程式。 若要建立Microsoft Entra ID 受控服務主體,請參閱 MS Entra 服務主體驗證。
誰可建立及使用服務主體?
若要在 Azure Databricks 中管理服務主體,您必須擁有下列其中一項:帳戶管理員角色、工作區管理員角色,或服務主體上的管理員或使用者角色。
- 帳戶管理員可以將服務主體新增至帳戶,並指派系統管理員角色。 只要這些工作區使用識別身分同盟,他們也可以將服務主體指派給工作區。
- 工作區管理員可以將服務主體新增至 Azure Databricks 工作區、指派工作區管理員角色,以及管理工作區中物件和功能的存取權,例如建立叢集或存取指定角色型環境的能力。
- 服務主體管理員可以在服務主體上管理角色。 服務主體的建立者會成為服務主體管理員。 帳戶管理員是帳戶中所有服務主體的服務主體管理員。
注意
如果在 2023 年 6 月 13 日之前建立服務主體,則服務主體的建立者預設沒有服務主體管理員角色。 要求帳戶管理員授與您服務主體管理員角色。
具有 服務主體管理員 角色的使用者不會繼承 服務主體使用者 角色。 如果您想要使用服務主體來執行作業,即使建立服務主體之後,您也必須明確指派服務主體使用者角色。
- 服務主體使用者能夠以服務主體身分執行工作。 工作會使用服務主體的身分識別來執行,而不是工作擁有者的身分識別。 如需詳細資訊,請參閱管理 Databricks 作業的身分識別和權限 (英文)。
如需有關如何授與服務主體管理員和使用者角色的資訊,請參閱管理服務主體的角色。
管理帳戶中的服務主體
帳戶管理員可以使用帳戶主控台,將服務主體新增至您的 Azure Databricks 帳戶。
使用帳戶主控台將服務主體新增至您的帳戶
服務主體可以在 Azure Databricks 中建立,或從現有的Microsoft Entra ID 服務主體中連結。 請參閱 Databricks 和 Microsoft Entra ID 服務主體。
- 身為帳戶管理員,登入帳戶主機。
- 在側邊欄中,按一下 [使用者管理]。
- 在 [服務主體] 索引標籤中,按一下 [新增服務主體]。
- 在 [管理] 下,選擇 [由 Databricks 管理] 或 [由 Microsoft Entra ID 管理]。
- 如果已選擇 [由 Microsoft Entra ID 管理],請在 [Microsoft Entra 應用程式 ID] 下,貼上服務主體的應用程式 (用戶端) ID。
- 輸入服務主體的名稱。
- 按一下新增。
將帳戶管理員角色指派給服務主體
- 身為帳戶管理員,登入帳戶主機。
- 在側邊欄中,按一下 [使用者管理]。
- 在 [服務主體] 索引標籤中,尋找並按一下使用者名稱。
- 在 [角色] 索引標籤中,開啟 [帳戶管理] 或 [市集管理]。
使用帳戶主控台將服務主體指派給工作區
若要使用帳戶主控台將使用者新增至工作區,必須啟用識別身分同盟的工作區。 工作區管理員也可以使用工作區管理員設定頁面,將服務主體指派給工作區。 如需詳細資訊,請參閱使用工作區管理員設定將服務主體新增至工作區。
- 身為帳戶管理員,登入帳戶主機。
- 在側邊欄中,按一下 [工作區]。
- 按一下工作區的名稱。
- 在 [權限] 索引標籤中,按一下 [新增權限]。
- 搜尋並選取服務主體,指派權限等級 (工作區使用者或管理員),然後按一下 [儲存]。
使用帳戶主控台將服務主體從工作區中移除
若要使用帳戶主控台將服務主體從工作區中移除,必須為識別身分同盟啟用工作區。 從工作區移除服務主體時,服務主體就無法再存取工作區,不過會維護服務主體的權限。 如果服務主體稍後新增回工作區,則會重新取得其先前的權限。
- 以帳戶管理員身分登入帳戶主控台
- 在側邊欄中,按一下 [工作區]。
- 按一下工作區的名稱。
- 在 [權限] 索引標籤中,尋找服務主體。
- 按一下服務主體資料列最右邊的 Kebab 功能表,然後選取 [移除]。
- 在確認對話方塊中按一下 [移除]。
停用 Azure Databricks 帳戶中的服務主體
帳戶管理員可以停用跨 Azure Databricks 帳戶的服務主體。 停用的服務主體無法對 Azure Databricks 帳戶或工作區進行驗證。 不過,所有服務主體的權限和工作區物件都保持不變。 停用服務主體時,會發生以下情況:
- 服務主體無法透過任何方法對帳戶或其任何工作區進行驗證。
- 使用服務主體所產生權杖的應用程式或指令碼將無法再存取 Databricks API。 會保留權杖,但在停用服務主體時無法用來進行驗證。
- 服務主體所擁有的叢集仍會繼續執行。
- 服務主體所建立的排程工作會失敗,除非指派給新的擁有者。
重新啟用服務主體時,可以使用相同的權限登入 Azure Databricks。 Databricks 建議從帳戶中停用服務主體,而不是移除它們,因為移除服務主體是破壞性動作。 停用的服務主體狀態會在帳戶主控台中標示為 [閒置中]。 您也可以從特定工作區停用服務主體。 請參閱在 Azure Databricks 工作區中停用服務主體。
您無法使用帳戶主控台停用服務主體。 請改用帳戶服務主體 API。
例如:
curl --netrc -X PATCH \
https://${DATABRICKS_HOST}/api/2.1/accounts/{account_id}/scim/v2/ServicePrincipals/{id} \
--header 'Content-type: application/scim+json' \
--data @update-sp.json \
| jq .
update-sp.json
:
{
"schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp" ],
"Operations": [
{
"op": "replace",
"path": "active",
"value": [
{
"value": "false"
}
]
}
]
}
從 Azure Databricks 帳戶中移除服務主體
帳戶管理員可以從 Azure Databricks 帳戶中刪除服務主體。 工作區管理員不可。 當您從帳戶中刪除服務主體時,該主體也會從其工作區中移除。
重要
從帳戶中移除服務主體時,服務主體也會從其工作區中移除,無論是否已啟用識別身分同盟。 建議您不要刪除帳戶層級服務主體,除非您希望它們失去帳戶中所有工作區的存取權。 請注意下列刪除服務主體的後果:
- 使用服務主體所產生權杖的應用程式或指令碼將無法再存取 Databricks API
- 服務主體所擁有的工作會失敗
- 服務主體所擁有的叢集會停止
- 服務主體所建立並使用「以擁有者身分執行」認證共用的查詢或儀表板必須指派給新的擁有者,以防止共用失敗
從帳戶中移除 Microsoft Entra ID 服務主體時,服務主體就無法再存取帳戶或其工作區,不過會維護服務主體的權限。 如果服務主體稍後新增回帳戶,則會重新取得其先前的權限。
若要使用帳戶主控台移除服務主體,請執行下列動作:
- 身為帳戶管理員,登入帳戶主機。
- 在側邊欄中,按一下 [使用者管理]。
- 在 [服務主體] 索引標籤中,尋找並按一下使用者名稱。
- 在 [主體資訊] 索引標籤中,按一下右上角的 Kebab 功能表,然後選取 [刪除]。
- 在確認對話方塊中,按一下 [確認刪除]。
管理工作區中的服務主體
工作區管理員也可以使用工作區管理員設定頁面來管理其工作區中的服務主體。
使用工作區管理員設定將服務主體新增至工作區
服務主體可以在 Azure Databricks 中建立,或從現有的Microsoft Entra ID 服務主體中連結。 請參閱 Databricks 和 Microsoft Entra ID 服務主體。
身為工作區管理員,登入 Azure Databricks 工作區。
按下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
按一下 [身分識別與存取] 索引標籤。
在 [服務主體] 旁邊,按一下 [管理]。
按一下 [新增服務主體]。
選取現有的服務主體以指派給工作區,或者按一下 [新增] 以建立新的服務主體。
若要新增新服務主體,請選擇 [由 Databricks 管理] 或 [由 Microsoft Entra ID 管理]。 如果選擇 [由 Microsoft Entra ID 管理],請貼上服務主體的應用程式 (用戶端) ID,然後輸入顯示名稱。
按一下新增。
注意
如果沒有為識別身分同盟啟用工作區,就無法將現有的帳戶服務主體指派給工作區。
使用工作區管理員設定頁面將工作區管理員角色指派給服務主體
- 身為工作區管理員,登入 Azure Databricks 工作區。
- 按下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
- 按一下 [身分識別與存取] 索引標籤。
- 在 [群組] 旁邊,按一下 [管理]。
- 選取
admins
系統群組。 - 按一下 [新增成員]。
- 選取服務主體,然後按下 [ 確認]。
若要從服務主體移除工作區管理員角色,請從管理員群組中移除服務主體。
在 Azure Databricks 工作區中停用服務主體
工作區管理員可以在 Azure Databricks 工作區中停用服務主體。 停用的服務主體無法從 Azure Databricks API 存取工作區,不過所有服務主體的權限和工作區物件都保持不變。 停用服務主體時:
- 服務主體無法透過任何方法對工作區進行驗證。
- 服務主體的狀態在工作區管理員設定頁面中顯示為閒置中。
- 使用服務主體所產生權杖的應用程式或指令碼將無法再存取 Databricks API。 會保留權杖,但在停用服務主體時無法用來進行驗證。
- 服務主體所擁有的叢集仍會繼續執行。
- 服務主體所建立的排程工作必須指派給新的擁有者,以防止其失敗。
重新啟用服務主體時,它可以使用相同權限對工作區進行驗證。 Databricks 建議停用服務主體,而不是移除它們,因為移除服務主體是破壞性動作。
- 身為工作區管理員,登入 Azure Databricks 工作區。
- 按下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
- 按一下 [身分識別與存取] 索引標籤。
- 在 [服務主體] 旁邊,按一下 [管理]。
- 選取想要停用的服務主體。
- 在 [狀態] 底下,取消選取 [作用中]。
若要將服務主體設定為作用中,請執行相同的步驟,但請改為選取核取方塊。
使用工作區管理員設定頁面從工作區中移除服務主體
從工作區移除服務主體並不會從帳戶中移除服務主體。 若要從帳戶中移除服務主體,請參閱從 Azure Databricks 帳戶中移除服務主體。
從工作區移除服務主體時,服務主體就無法再存取工作區,不過會維護服務主體的權限。 如果服務主體稍後新增回工作區,則會重新取得其先前的權限。
- 身為工作區管理員,登入 Azure Databricks 工作區。
- 按下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
- 按一下 [身分識別與存取] 索引標籤。
- 在 [服務主體] 旁邊,按一下 [管理]。
- 選取服務主體。
- 按一下右上角的 [刪除]。
- 按一下 [刪除] 以確認。
使用 API 管理服務主體
帳戶管理員和工作區管理員可以使用 Databricks API 來管理 Azure Databricks 帳戶和工作區中的服務主體。 若要使用 API 來管理服務主體的角色,請參閱使用 Databricks CLI 管理服務主體角色。
使用 API 管理帳戶中的服務主體
管理員可以使用帳戶服務主體 API,在 Azure Databricks 帳戶中新增及管理服務主體。 帳戶管理員和工作區管理員可使用不同的端點 URL 來叫用 API:
- 帳戶管理員使用
{account-domain}/api/2.1/accounts/{account_id}/scim/v2/
。 - 工作區管理員使用
{workspace-domain}/api/2.0/account/scim/v2/
。
如需詳細資訊,請參閱帳戶服務主體 API。
使用 API 在工作區中管理服務主體
帳戶和工作區管理員可以使用工作區指派 API,將服務主體指派給為識別身分同盟而啟用的工作區。 透過 Azure Databricks 帳戶和工作區,支援工作區指派 API。
- 帳戶管理員使用
{account-domain}/api/2.0/accounts/{account_id}/workspaces/{workspace_id}/permissionassignments
。 - 工作區管理員使用
{workspace-domain}/api/2.0/preview/permissionassignments/principals/{principal_id}
。
請參閱工作區指派 API。
如果沒有為識別身分同盟啟用工作區,工作區管理員可以使用工作區層級 API 將服務主體指派給其工作區。 請參閱工作區服務主體 API。
管理服務主體的權杖
服務主體可以使用 Azure Databricks OAuth 權杖或 Azure Databricks 個人存取權杖向 Azure Databricks 上的 API 進行驗證,如下所示:
- Azure Databricks OAuth 權杖可用於對 Azure Databricks 帳戶層級和工作區層級 API 進行驗證。
- 在 Azure Databricks 帳戶層級建立的 Azure Databricks OAuth 權杖可用於對 Azure Databricks 帳戶層級和工作區層級 API 進行驗證。
- 在 Azure Databricks 工作區層級建立的 Azure Databricks OAuth 權杖只能對 Azure Databricks 工作區層級 API 進行驗證。
- Azure Databricks 個人存取權杖只能用於對 Azure Databricks 工作區層級 API 進行驗證。
管理服務主體的 Databricks OAuth 驗證
若要對帳戶層級和工作區層級 Databricks REST API 進行驗證,帳戶管理員可以針對服務主體使用 Azure Databricks OAuth 權杖。 可以使用服務主體的用戶端識別碼和用戶端密碼來要求 OAuth 權杖。 如需詳細資訊,請參閱使用 OAuth (OAuth M2M) 透過服務主體對 Azure Databricks 的存取進行驗證。
另請參閱
如需使用服務主體做為開發人員使用 Azure Databricks CLI 或 Azure Databricks REST API 的詳細資訊,請參閱 使用 OAuth(OAuth M2M) 向服務主體驗證 Azure Databricks 的存取權。
如需使用 Microsoft 受控服務識別 (MSI) 或 Microsoft Entra 存取令牌的詳細資訊,請參閱 Azure 受控識別驗證 和 MS Entra 服務主體驗證 。