管理服務主體的角色

本文說明如何在 Azure Databricks 帳戶中管理服務主體的角色。

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

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

如需服務主體的概觀,請參閱 管理服務主體

服務主體角色

服務主體角色是帳戶層級角色。 這表示它們只需要在您的帳戶中定義一次,並套用到所有工作區。 您可以在服務主體上授與兩個角色: 服務主體管理員 和服務 主體使用者

  • 服務主體管理員 可讓您管理服務主體上的角色。 服務主體的建立者在服務主體上具有 服務主體管理員 角色。 帳戶管理員具有 帳戶中所有服務主體的服務主體 角色。

注意

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

  • 服務主體用戶 可讓工作區用戶以服務主體身分執行作業。 作業會使用服務主體的身分識別來執行,而不是作業擁有者的身分識別。

具有 服務主體管理員 角色的使用者不會繼承 服務主體使用者 角色。 如果您想要使用服務主體來執行作業,即使建立服務主體之後,您也必須明確指派服務主體使用者角色。

注意

Azure Databricks 服務主體角色不會與 Azure 角色或 Microsoft Entra ID(先前稱為 Azure Active Directory)角色重疊。 這些角色只會跨越 Azure Databricks 帳戶。

使用帳戶主控台管理服務主體角色

帳戶管理員可以使用帳戶控制台來管理服務主體角色。

檢視服務主體上的角色

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

您可以看到主體清單及其在服務主體上授與的角色。 您也可以使用搜尋列來搜尋特定主體或角色。

授與服務主體的角色

  1. 身為帳戶管理員,登入 帳戶控制台

  2. 在提要欄位中,按兩下 [ 使用者管理]。

  3. 在 [ 服務主體] 索引 標籤上,尋找並按下名稱。

  4. 按兩下 [許可權] 索引標籤。

  5. 按一下 [授與存取權]

  6. 搜尋並選取使用者、服務主體或群組,然後選擇要指派的角色或角色(服務主體:管理員 或服務 主體:使用者)。

    注意

    具有 服務主體管理員 角色的使用者不會繼承 服務主體使用者 角色。 如果您想要讓使用者使用服務主體來執行作業,您必須明確指派 服務主體使用者 角色。

  7. 按一下 [檔案] 。

撤銷服務主體的角色

  1. 身為帳戶管理員,登入 帳戶控制台
  2. 在提要欄位中,按兩下 [ 使用者管理]。
  3. 在 [ 服務主體] 索引 標籤上,尋找並按下名稱。
  4. 按兩下 [許可權] 索引標籤。
  5. 搜尋使用者、服務主體或群組以編輯其角色。
  6. 在具有主體的數據列上,按兩下kebab功能表 垂直省略號 ,然後選取 [ 編輯]。 或者,選取 [ 刪除] 以撤銷主體的所有角色。
  7. 按一下 [編輯]
  8. 按兩下您要撤銷的角色旁的 X
  9. 按一下 [檔案] 。

使用工作區管理員設定頁面管理服務主體角色

工作區管理員可以使用 [系統管理員設定] 頁面,管理其具有 服務主體管理員 角色的服務主體角色。

檢視服務主體上的角色

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
  3. 按兩下 [ 身分識別和存取 ] 索引標籤。
  4. 按兩下 [服務主體] 旁 [ 管理]。
  5. 尋找並按下名稱。
  6. 按兩下 [許可權] 索引標籤。

您可以看到主體清單及其在服務主體上授與的角色。 您也可以使用搜尋列來搜尋特定主體或角色。

授與服務主體的角色

您必須在服務主體上擁有 服務主體 角色,才能授與角色。

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

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

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

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

  5. 尋找並按下名稱。

  6. 按兩下 [許可權] 索引標籤。

  7. 按一下 [授與存取權]

  8. 搜尋並選取使用者、服務主體或群組,然後選擇要指派的角色或角色(服務主體:管理員 或服務 主體:使用者)。

    注意

    即使角色不是工作區的成員,也可以授與任何帳戶層級用戶、服務主體或群組。 角色無法授與工作區本地組。

    具有 服務主體管理員 角色的使用者不會繼承 服務主體使用者 角色。 如果您想要讓使用者使用服務主體來執行作業,您必須明確指派 服務主體使用者 角色。

  9. 按一下 [檔案] 。

撤銷服務主體的角色

您必須在服務主體上擁有 服務主體 角色,才能撤銷角色。

  1. 身為工作區管理員,登入 Azure Databricks 工作區。
  2. 按兩下 Azure Databricks 工作區頂端列中的使用者名稱,然後選取 [設定]。
  3. 按兩下 [ 身分識別和存取 ] 索引標籤。
  4. 按兩下 [服務主體] 旁 [ 管理]。
  5. 尋找並按下名稱。
  6. 按兩下 [許可權] 索引標籤。
  7. 搜尋使用者、服務主體或群組以編輯其角色。
  8. 在具有主體的數據列上,按兩下kebab功能表 垂直省略號 ,然後選取 [ 編輯]。 或者,選取 [ 刪除] 以撤銷主體的所有角色。
  9. 按一下 [編輯]
  10. 按兩下您要撤銷的角色旁的 X
  11. 按一下 [檔案] 。

使用 Databricks CLI 管理服務主體角色

您必須具備 服務主體管理員 角色,才能管理服務主體的角色。 您可以使用 Databricks CLI 來管理角色。 如需安裝及驗證 Databricks CLI 的相關信息,請參閱 什麼是 Databricks CLI?

您也可以使用帳戶 存取控制 API 來管理服務主體角色。 Azure Databricks 帳戶和工作區支持帳戶 存取控制 API。

帳戶管理員會在 accounts.azuredatabricks.net ({account-domain}/api/2.0/preview/accounts/{account_id}/access-control) 上呼叫 API。

具有不是帳戶管理員之服務主體管理員角色的使用者會在工作區網域上呼叫 API。{workspace-domain}/api/2.0/preview/accounts/access-control/

使用 Databricks CLI 授與服務主體的角色

帳戶 存取控制 API 會使用etag字段來確保一致性。 若要透過 API 授與或撤銷服務主體角色,請先發出 GET 規則集命令並接收 etag 回應。 然後,您可以在本機套用變更,最後使用 etag發出PUT規則集。

例如,在您想要授與存取權的服務主體上發出 GET 規則集,方法是執行下列命令:

databricks account access-control get-rule-set accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default <etag>

將:

  • <account-id> 使用帳戶標識碼。
  • <application-id> 使用服務主體應用程式標識碼。
  • <etag> 具有 “”

範例回應:

{
  "etag":"<etag>",
  "grant_rules": [
    {
      "principals": [
        "users/user@example.com"
      ],
      "role":"roles/servicePrincipal.manager"
    },
    {
      "principals": [
        "users/user@example.com"
      ],
      "role":"roles/servicePrincipal.user"
    }
  ],
  "name":"<name>"
}

etag從回應本文複製欄位以供稍後使用。

然後,當您決定規則的最終狀態,然後使用 etag 更新規則集時,您可以在本機進行更新。 若要將服務主體:使用者角色授與使用者user2@example.com,請執行下列動作:

databricks account access-control update-rule-set --json '{
  "name": "accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default",
  "rule_set": {
      "name": "accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default",
      "grant_rules": [
        {
            "role": "roles/servicePrincipal.user",
            "principals": ["users/user2@example.com"]
        }
      ],
      "etag": "<etag>"
  }
}'

將:

  • <account-id> 使用帳戶標識碼。
  • <application-id> 使用服務主體應用程式標識碼。
  • <etag> 包含您從最後一個回應複製的 etag。

範例回應:

{
  "etag":"<new-etag>",
  "grant_rules": [
    {
      "principals": [
        "users/user2@example.com"
      ],
      "role":"roles/servicePrincipal.user"
    }
  ],
  "name":"accounts/<account-id>/servicePrincipals/<application-id>/ruleSets/default"
}

重要

因為這是方法 PUT ,因此會覆寫所有現有的角色。 若要保留任何現有的角色,您必須將它們新增至 grant_roles 陣列。

列出您可以使用的服務主體

使用工作區服務主體 API,您可以藉由篩選 servicePrincipal/use,列出您擁有使用者角色的服務主體。

若要列出您擁有 服務主體使用者 角色的服務主體,請執行下列命令:

databricks service-principals list -p WORKSPACE --filter "permission eq 'servicePrincipal/use'"

您也可以使用 工作區服務主體 API 列出服務主體。