管理服務主體

本文說明如何為您的 Azure Databricks 帳戶和工作區建立和管理服務主體。

如需 Azure Databricks 身分識別模型的概觀,請參閱 Azure Databricks 身分識別

若要管理服務主體的存取權,請參閱 驗證和訪問控制

什麼是服務主體?

服務主體是您在 Azure Databricks 中建立的身分識別,可與自動化工具、作業和應用程式搭配使用。 服務主體可讓自動化工具和指令碼提供僅限 Azure Databricks 資源的 API 存取權限而言,提供比使用使用者或群組更高的安全性。

您可以使用與 Azure Databricks 使用者相同的方式,授與和限制服務主體對資源的存取權。 例如,您可以執行下列動作:

您也可以將 Azure Databricks 使用者、服務主體和群組許可權授與使用服務主體。 這可讓使用者以服務主體的形式執行作業,而不是作為其身分識別。 如果使用者離開您的組織或群組遭到修改,這可防止作業失敗。

不同於 Azure Databricks 使用者,服務主體是僅限 API 的身分識別;它無法用來存取 Azure Databricks UI。

Databricks 建議您 啟用身分識別同盟的工作區。 身分識別同盟可讓您在帳戶控制台中設定服務主體,然後將存取權指派給特定工作區。 這可簡化 Azure Databricks 管理和數據控管。

重要

如果您的帳戶是在 2023 年 11 月 9 日之後建立的,則預設會在所有新的工作區上啟用身分識別同盟,而且無法停用。

Databricks 和 Microsoft Entra ID (先前稱為 Azure Active Directory) 服務主體

服務主體可以是 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 受控服務主體,請遵循下列指示:

  1. 登入 Azure 入口網站

    注意

    要使用的入口網站會因 Microsoft Entra ID(先前稱為 Azure Active Directory)應用程式在 Azure 公用雲端或國家或主權雲端中執行而有所不同。 如需詳細資訊,請參閱 國家雲端

  2. 如果您有多個租使用者、訂用帳戶或目錄的存取權,請按兩下 頂端選單中的 [目錄 + 訂用帳戶] 圖示,切換至您要布建服務主體的目錄。

  3. 在 [ 搜尋資源、服務和檔] 中,搜尋並選取 [Microsoft Entra ID]。

  4. 按兩下 [+ 新增 ],然後選取 [ 應用程式註冊]。

  5. 針對 [ 名稱],輸入應用程式的名稱。

  6. 在 [支持的帳戶類型] 區段中,選取 [僅限此組織目錄中的帳戶](單一租使用者)。

  7. 按一下 [註冊] 。

  8. 在應用程式頁面的 [概觀 ] 頁面上的 [Essentials ] 區段中,複製下列值:

    • 應用程式 (用戶端) 識別碼
    • 目錄 (租用戶) 識別碼

    Azure 註冊的應用程式概觀

  9. 若要產生客戶端密碼,請在 [管理] 中,按兩下 [憑證與秘密]。

    注意

    您可以使用此用戶端密碼來產生 Microsoft Entra 識別符令牌,以向 Azure Databricks 驗證 Microsoft Entra ID 服務主體。 若要判斷 Azure Databricks 工具或 SDK 是否可以使用 Microsoft Entra ID 令牌,請參閱工具或 SDK 的檔。

  10. 在 [用戶端密碼] 索引標籤中,按一下 [新增用戶端密碼]

    新用戶端密碼

  11. 在 [ 新增客戶端密碼 ] 窗格中,針對 [描述] 輸入客戶端密碼的描述。

  12. 針對 [到期],選取客戶端密碼的到期時間週期,然後按兩下 [ 新增]。

  13. 將客戶端密碼的值複製並儲存在安全的地方,因為此客戶端密碼是應用程式的密碼。

神秘 可以管理和使用服務主體嗎?

若要在 Azure Databricks 中管理服務主體,您必須具備下列其中一項:帳戶管理員角色、工作區管理員角色,或服務主體上的管理員或使用者角色。

  • 帳戶管理員可以 將服務主體新增至帳戶,並指派系統管理員角色。 只要這些工作區使用身分識別同盟,他們也可以將服務主體指派給工作區。
  • 工作區管理員可以 將服務主體新增至 Azure Databricks 工作區、指派工作區管理員角色,以及管理工作區中物件和功能的存取權,例如建立叢集或存取指定角色型環境的能力。
  • 服務主體管理員 可以在服務主體上管理角色。 服務主體的建立者會成為服務主體管理員。 帳戶管理員是帳戶中所有服務主體的服務主體管理員。

注意

如果在 2023 年 6 月 13 日之前建立服務主體,則服務主體的建立者默認沒有服務主體管理員角色。 要求帳戶管理員授與您服務主體管理員角色。

  • 服務主體 用戶可以 以服務主體身分執行作業。 作業會使用服務主體的身分識別執行,而不是作業擁有者的身分識別。 如需詳細資訊,請參閱 以服務主體身分執行作業。

如需如何授與服務主體管理員和使用者角色的資訊,請參閱 管理服務主體的角色

在您的帳戶中管理服務主體

帳戶管理員可以使用帳戶控制台,將服務主體新增至您的 Azure Databricks 帳戶。

使用帳戶主控台將服務主體新增至您的帳戶

服務主體可以在 Azure Databricks 中建立,或從現有的 Microsoft Entra ID (先前稱為 Azure Active Directory) 服務主體連結。 請參閱 Databricks 和 Microsoft Entra ID (先前稱為 Azure Active Directory) 服務主體

  1. 身為帳戶管理員,登入 帳戶控制台
  2. 在提要欄位中,按兩下 [ 使用者管理]。
  3. 在 [ 服務主體] 索引標籤上 ,按兩下 [ 新增服務主體]。
  4. 在 [管理] 底下,選擇 [Databricks 受管理] 或 [Microsoft Entra ID 受控]。
  5. 如果您選擇受管理的 Microsoft Entra ID,請在 [Microsoft Entra 應用程式識別符] 底下,貼上服務主體的應用程式 (用戶端) 識別碼。
  6. 輸入服務主體的名稱。
  7. 按一下新增

將帳戶管理員角色指派給服務主體

  1. 身為帳戶管理員,登入 帳戶控制台
  2. 在提要欄位中,按兩下 [ 使用者管理]。
  3. 在 [ 服務主體] 索引 標籤上,尋找並按兩下用戶名稱。
  4. 在 [角色] 索引標籤上,開啟 [帳戶管理員] 或 [Marketplace 管理員]。

使用帳戶主控台將服務主體指派給工作區

若要使用 帳戶主控台將使用者新增至工作區,必須啟用身分識別同盟的工作區。 工作區系統管理員也可以使用工作區管理員設定頁面,將服務主體指派給工作區。 如需詳細資訊,請參閱 使用工作區管理員設定將服務主體新增至工作區。

  1. 身為帳戶管理員,登入 帳戶控制台
  2. 在提要欄位中,按兩下 [ 工作區]。
  3. 按兩下您的工作區名稱。
  4. 在 [ 許可權] 索引標籤上,按兩下 [ 新增許可權]。
  5. 搜尋並選取服務主體、指派許可權等級(工作區使用者或 管理員),然後按兩下 [儲存]。

使用帳戶主控台從工作區移除服務主體

若要使用帳戶主控台從工作區移除服務主體,您必須啟用身分識別同盟的工作區。 從工作區移除服務主體時,服務主體就無法再存取工作區,不過,服務主體會維護服務主體的許可權。 如果服務主體稍後新增回工作區,則會重新取得其先前的許可權。

  1. 身為帳戶管理員,登入 帳戶控制台
  2. 在提要欄位中,按兩下 [ 工作區]。
  3. 按兩下您的工作區名稱。
  4. 在 [ 許可權] 索引標籤上,尋找服務主體。
  5. Kebab 功能表按兩下服務主體資料列最右邊的Kebab功能表,然後選取[移除]。
  6. 在確認對話框中,按兩下 [ 移除]。

停用 Azure Databricks 帳戶中的服務主體

帳戶管理員可以停用跨 Azure Databricks 帳戶的服務主體。 停用的服務主體無法向 Azure Databricks 帳戶或工作區進行驗證。 不過,所有服務主體的許可權和工作區物件都保持不變。 停用服務主體時,下列內容為 true:

  • 服務主體無法從任何方法向帳戶或其任何工作區進行驗證。
  • 使用服務主體所產生令牌的應用程式或腳本將無法再存取 Databricks API。 令牌會保留,但無法在停用服務主體時用來驗證。
  • 服務主體所擁有的叢集仍會繼續執行。
  • 除非指派給新的擁有者,否則服務主體所建立的排程工作會失敗。

重新啟用服務主體時,可以使用相同的許可權登入 Azure Databricks。 Databricks 建議從帳戶停用服務主體,而不是移除它們,因為移除服務主體是破壞性動作。 請參閱 從 Azure Databricks 帳戶移除服務主體。 當您從帳戶停用服務主體時,該服務主體也會從其身分識別同盟工作區停用。

您無法使用帳戶主控台停用使用者。 請改用帳戶服務主體 API。 請參閱 使用 API 停用服務主體。

從 Azure Databricks 帳戶移除服務主體

帳戶管理員可以從 Azure Databricks 帳戶刪除服務主體。 工作區系統管理員無法。 當您從帳戶中刪除服務主體時,該主體也會從其工作區中移除。

重要

當您從帳戶移除服務主體時,不論是否已啟用身分識別同盟,該服務主體也會從其工作區中移除。 我們建議您避免刪除帳戶層級服務主體,除非您想要它們失去帳戶中所有工作區的存取權。 請注意下列刪除服務主體的後果:

  • 使用服務主體所產生令牌的應用程式或腳本無法再存取 Databricks API
  • 服務主體所擁有的作業失敗
  • 服務主體所擁有的叢集停止
  • 服務主體所建立的查詢或儀錶板,並使用執行身分擁有者認證共用,必須指派給新的擁有者,以防止共享失敗

當 Microsoft Entra ID 服務主體從帳戶中移除時,服務主體就無法再存取帳戶或其工作區,不過服務主體會維護服務主體的許可權。 如果服務主體稍後新增回帳戶,則會重新取得先前的許可權。

若要使用 帳戶主控台移除服務主體,請執行下列動作:

  1. 身為帳戶管理員,登入帳戶控制台。
  2. 在提要欄位中,按兩下 [ 使用者管理]。
  3. 在 [ 服務主體] 索引 標籤上,尋找並按兩下用戶名稱。
  4. 在 [ 主體資訊] 索引標籤上,單擊 Kebab 功能表 右上角的Kebab功能表,然後選取 [ 刪除]。
  5. 在確認對話框中,按兩下 [ 確認刪除]。

管理工作區中的服務主體

工作區管理員可以使用工作區管理員設定頁面來管理其工作區中的服務主體。

使用工作區管理員設定將服務主體新增至工作區

服務主體可以在 Azure Databricks 中建立,或從現有的 Microsoft Entra ID (先前稱為 Azure Active Directory) 服務主體連結。 請參閱 Databricks 和 Microsoft Entra ID (先前稱為 Azure Active Directory) 服務主體

  1. 身為工作區管理員,登入 Azure Databricks 工作區。

  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [管理員 設定]。

  3. 按兩下 [ 身分識別和存取 ] 索引標籤。

  4. 按兩下 [服務主體] 旁 [ 管理]。

  5. 按兩下 [ 新增服務主體]。

  6. 選取現有的服務主體以指派給工作區,或按兩下 [ 新增 ] 以建立新的服務主體。

    若要新增服務主體,請選擇 [Databricks 受管理] 或 [Microsoft Entra ID 受控]。 如果您選擇 受管理的 Microsoft Entra ID,請貼上服務主體的應用程式(用戶端)標識碼,然後輸入顯示名稱。

  7. 按一下新增

注意

如果您的工作區未啟用 身分識別同盟,您就無法將現有的帳戶服務主體指派給工作區。

使用工作區管理員設定頁面,將工作區管理員角色指派給服務主體

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [管理員 設定]。
  3. 按兩下 [ 身分識別和存取 ] 索引標籤。
  4. 按兩下 [群組]的 [管理]。
  5. admins選取系統群組。
  6. 按兩下 [ 新增成員]。
  7. 選取服務主體,然後按兩下 [ 確認]。

若要從服務主體移除工作區管理員角色,請從系統管理員群組中移除服務主體。

停用 Azure Databricks 工作區中的服務主體

工作區管理員可以停用 Azure Databricks 工作區中的服務主體。 停用的服務主體無法從 Azure Databricks API 存取工作區,不過所有服務主體的許可權和工作區物件都保持不變。 停用服務主體時:

  • 服務主體無法從任何方法向工作區進行驗證。
  • 服務主體的狀態會顯示為 [工作區管理員設定] 頁面中的 [非 使用中]。
  • 使用服務主體所產生令牌的應用程式或腳本無法再存取 Databricks API。 令牌會保留,但無法在停用服務主體時用來驗證。
  • 服務主體所擁有的叢集仍會繼續執行。
  • 服務主體所建立的排程工作必須指派給新的擁有者,以防止其失敗。

重新啟用服務主體時,它可以向具有相同許可權的工作區進行驗證。 Databricks 建議停用服務主體,而不是移除它們,因為移除服務主體是破壞性動作。

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [管理員 設定]。
  3. 按兩下 [ 身分識別和存取 ] 索引標籤。
  4. 按兩下 [服務主體] 旁 [ 管理]。
  5. 選取您想要停用的服務主體。
  6. 在 [狀態] 底下,取消核取 [作用中]。

若要將服務主體設定為作用中,請執行相同的步驟,但請改為核取複選框。

使用工作區管理員設定頁面從工作區移除服務主體

從工作區移除服務主體並不會從帳戶中移除服務主體。 若要從您的帳戶中移除服務主體,請參閱 從 Azure Databricks 帳戶移除服務主體。

從工作區移除服務主體時,服務主體就無法再存取工作區,不過,服務主體會維護服務主體的許可權。 如果服務主體稍後新增回工作區,則會重新取得其先前的許可權。

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [管理員 設定]。
  3. 按兩下 [ 身分識別和存取 ] 索引標籤。
  4. 按兩下 [服務主體] 旁 [ 管理]。
  5. 選取服務主體。
  6. 在右上角,按兩下 [ 刪除]。
  7. 按兩下 [ 刪除 ] 以確認。

使用 API 管理服務主體

帳戶管理員和工作區管理員可以使用 Databricks API 來管理 Azure Databricks 帳戶和工作區中的服務主體。 若要使用 API 管理服務主體的角色,請參閱 使用 Databricks CLI 管理服務主體角色。

使用 API 管理帳戶中的服務主體

管理員 可以使用帳戶服務主體 API,在 Azure Databricks 帳戶中新增及管理服務主體。 帳戶管理員和工作區管理員會使用不同的端點 URL 叫用 API:

  • 帳號管理員使用 {account-domain}/api/2.0/accounts/{account_id}/scim/v2/
  • 工作區系統管理員使用 {workspace-domain}/api/2.0/account/scim/v2/

如需詳細資訊,請參閱 帳戶服務主體 API

使用 API 停用服務主體

帳戶管理員可以將服務主體的狀態變更為 false,以使用 帳戶服務主體 API 停用服務主體。

例如:

curl --netrc -X PATCH \
https://${DATABRICKS_HOST}/api/2.0/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"
        }
      ]
    }
  ]
}

停用的服務主體狀態會在帳戶控制台中標示為 [非 使用中]。 當您從帳戶停用服務主體時,該服務主體也會從其工作區停用。

使用 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 進行驗證。

服務主體也可以使用 Microsoft Entra ID(先前稱為 Azure Active Directory)令牌,向 Azure Databricks 上的 API 進行驗證。

管理服務主體的 Databricks OAuth 驗證

若要向帳戶層級和工作區層級 Databricks REST API 進行驗證,帳戶管理員可以針對服務主體使用 Azure Databricks OAuth 令牌。 您可以使用服務主體的用戶端識別碼和客戶端密碼來要求 OAuth 令牌。 如需詳細資訊,請參閱 OAuth 計算機對電腦 (M2M) 驗證

管理服務主體的個人存取令牌

若要僅向 Azure Databricks 上的工作區層級 API 驗證服務主體,服務主體可以自行建立 Databricks 個人存取令牌,如下所示:

注意

您無法使用 Azure Databricks 使用者介面來產生服務主體的 Azure Databricks 個人存取令牌。 此程式會使用 Databricks CLI 0.205 版或更新版本來產生服務主體的存取令牌。 如果您尚未安裝 Databricks CLI,請參閱 安裝或更新 Databricks CLI

此程式假設您使用 OAuth 機器對電腦 (M2M) 驗證Microsoft Entra ID 服務主體驗證 來設定 Databricks CLI,以驗證服務主體以自行產生 Azure Databricks 個人存取令牌。 請參閱 OAuth 計算機對電腦 (M2M) 驗證Microsoft Entra ID 服務主體驗證

  1. 使用 Databricks CLI 執行下列命令,這會為服務主體產生另一個存取令牌。

    在下列命令中,取代這些佔位元:

    • 或者,將 取代 <comment> 為任何有關存取令牌用途的有意義批注。 --comment如果未指定選項,則不會產生任何批注。
    • 或者,將 取代 <lifetime-seconds> 為存取令牌有效的秒數。 例如,1 天是86400秒。 --lifetime-seconds如果未指定選項,存取令牌會設定為永不過期(不建議)。
    • 或者,將 取代 <profile-name> 為 Azure Databricks 組態配置檔的名稱,其中包含服務主體和目標工作區的驗證資訊。 -p如果未指定選項,Databricks CLI 會嘗試尋找並使用名為 DEFAULT的組態配置檔。
    databricks tokens create --comment <comment> --lifetime-seconds <lifetime-seconds> -p <profile-name>
    
  2. 在回應中,複製的值 token_value,這是服務主體的存取令牌。

    請務必將複製的令牌儲存在安全的位置。 請勿與其他人共享複製的令牌。 如果您遺失複製的令牌,就無法重新產生完全相同的令牌。 相反地,您必須重複此程式來建立新的令牌。

    如果您無法在工作區中建立或使用令牌,這可能是因為您的工作區系統管理員已停用令牌,或未授與您建立或使用令牌的許可權。 請參閱您的工作區管理員或下列專案:

管理服務主體的 Microsoft Entra 識別碼 (先前稱為 Azure Active Directory) 驗證

只有 Microsoft Entra ID 受控服務主體可以使用 Microsoft Entra ID 令牌向 API 進行驗證。 若要建立 Microsoft Entra 識別符存取令牌,請參閱 取得服務主體的 Microsoft Entra ID(先前稱為 Azure Active Directory) 令牌。

Microsoft Entra ID 存取令牌可用來呼叫 令牌 API ,以建立服務主體的 Databricks 個人存取令牌。