共用方式為


MS Entra 服務主體帳戶驗證

MS Entra 服務主體 驗證會使用 MS Entra 服務主體的憑證進行身份驗證。 若要建立及管理服務 Azure Databricks 的服務主體,請參閱:

注意

Databricks 建議您在大多數情況下使用 OAuth 機器對機器 (M2M) 驗證,而不是使用 MS Entra 的服務主體驗證。 這是因為當 OAuth M2M 驗證僅使用 Azure Databricks OAuth 存取權杖進行驗證時,可更加強固。

僅在您必須同時向 Azure Databricks 和其他 Azure 資源進行驗證的情況下,才應使用 Microsoft Entra 服務主體驗證。

若要使用 OAuth M2M 驗證,而不是 MS Entra 服務主體驗證,請略過本文,並參閱 使用 OAuth 的服務主體授權來對 Azure Databricks 資源進行自動化存取

MS Entra 服務主體與 Azure 資源受控識別不同,Azure Databricks 也支援以其進行驗證。 若要瞭解如何針對 Azure 資源使用受控識別,而不是使用 MS Entra 服務主體進行 Azure Databricks 驗證,請參閱 設定和使用 Azure Databricks 自動化的 Azure 受控識別驗證

如需有關使用 Microsoft Entra 驗證透過 Azure DevOps 特定連接到 Databricks 的詳細資訊,請參閱 在 Azure Databricks 上使用 Azure DevOps 進行驗證

若要使用 Azure Databricks 設定 MS Entra 服務主體驗證,您必須設定下列相關聯的環境變數、.databrickscfg 字段、Terraform 欄位或 Config 欄位:

  • Azure Databricks 主機。

    • 針對帳戶作業,請指定 https://accounts.azuredatabricks.net

    • 針對工作區作業,請指定個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

      如果尚未將 MS Entra 服務主體新增至工作區,請改為指定 Azure 資源識別碼。 在此情況下,MS Entra 服務主體必須至少對 Azure 資源擁有參與者或擁有者權限。

  • 針對帳戶操作,則為 Azure Databricks 帳戶識別碼

  • Azure 資源識別碼。

  • MS Entra 服務主體的租戶識別碼。

  • MS Entra 服務主體的用戶端識別碼。

  • MS Entra 服務主體的客戶端密碼。

若要使用 Azure Databricks 執行 Microsoft Entra 服務主體驗證,請根據參與的工具或 SDK 將下列內容整合到您的程式碼中:

若要搭配工具或 SDK 使用特定 Azure Databricks 驗證類型的環境變數,請參閱 授權存取 Azure Databricks 資源 或工具或 SDK 的檔。 請參閱環境變數與統一客戶認證的欄位以及客戶統一認證的預設方法

針對 帳戶層級作業,請設定下列環境變數:

  • DATABRICKS_HOST設定為您的 Azure Databricks 帳戶主控台 URL https://accounts.azuredatabricks.net的值。

    • DATABRICKS_ACCOUNT_ID
    • ARM_TENANT_ID
    • ARM_CLIENT_ID
    • ARM_CLIENT_SECRET

    針對工作區層級作業 ,請設定下列環境變數:

    • DATABRICKS_HOST,設置為 Azure Databricks 工作區專用的 URL的值,例如 https://adb-1234567890123456.7.azuredatabricks.net
    • ARM_TENANT_ID
    • ARM_CLIENT_ID
    • ARM_CLIENT_SECRET

    針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 DATABRICKS_AZURE_RESOURCE_ID 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 HOST 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

在您的 檔案中,建立或識別含有下列欄位的 Azure Databricks .databrickscfg。 如果您建立設定檔,請將佔位符取代為適當的值。 若要搭配工具或 SDK 使用設定檔,請參閱 授權存取 Azure Databricks 資源 或工具或 SDK 的文件。 請參閱環境變數與統一客戶認證的欄位以及客戶統一認證的預設方法

針對 帳戶層級作業,請在 .databrickscfg 檔案中設定下列值。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

[<some-unique-configuration-profile-name>]
host                = <account-console-url>
account_id          = <account-id>
azure_tenant_id     = <azure-service-principal-tenant-id>
azure_client_id     = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>

針對 工作區層級作業,請在 .databrickscfg 檔案中設定下列值。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

[<some-unique-configuration-profile-name>]
host                = <workspace-url>
azure_tenant_id     = <azure-service-principal-tenant-id>
azure_client_id     = <azure-service-principal-application-id>
azure_client_secret = <azure-service-principal-client-secret>

針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 azure_workspace_resource_id 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 host 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

針對 Databricks CLI,請執行下列其中一項:

  • 如本文的「環境」一節中所指定,設定環境變數。
  • 如本文的「配置檔」一節所指定,設定檔案 .databrickscfg 中的值。

環境變數一律優先於 .databrickscfg 檔案中的值。

另請參閱 Microsoft Entra ID 服務主體驗證

注意

下列 Databricks Connect 版本支援 MS Entra 服務主體驗證:

  • 對於 Python,適用於 Databricks Runtime 13.1 及以上版本的 Databricks Connect。
  • Databricks Runtime 13.3 LTS 和更新版本的 Scala 適用 Databricks Connect。

針對 Databricks Connect,您可以執行下列其中一項:

  • 設定檔案.databrickscfg中的值,以執行 Azure Databricks 工作區層級作業,如本文“配置檔”一節所指定。 同時在您的設定檔中將 cluster_id 環境變數設為每個工作區的 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net
  • 如本文的「環境」一節中所指定,設定 Azure Databricks 工作區層級作業 的環境變數。 此外,請將 DATABRICKS_CLUSTER_ID 環境變數設定為 個別工作區 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net

.databrickscfg 檔案中的值一律優先於環境變數。

若要使用 .databrickscfg 檔案中的這些環境變數或值初始化 Databricks Connect 用戶端,請參閱 databricks Connect的計算組態。

針對適用於 Visual Studio Code 的 Databricks 延伸項目,請執行下列動作:

  1. 設定檔案.databrickscfg中的值,以執行 Azure Databricks 工作區層級作業,如本文“配置檔”一節所指定。
  2. 在適用於 Visual Studio Code 的 Databricks 延伸項目的 [設定] 窗格中,按下 [設定 Databricks]
  3. 在 [命令面板] 中,針對 [Databricks 主機],輸入個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net,然後按下 Enter
  4. 命令面板中,選取 URL 清單中目標設定檔的名稱。

如需詳細資訊,請參閱 為 Visual Studio Code 的 Databricks 擴充功能設定授權

針對帳戶層級作業以及預設驗證

provider "databricks" {
  alias = "accounts"
}

針對直接設定(將 retrieve 佔位符號替換為您自己的實作,以從主控台或其他一些設定存放區中取得值,例如 HashiCorp Vault。另請參閱 Vault Provider)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

provider "databricks" {
  alias               = "accounts"
  host                = <retrieve-account-console-url>
  account_id          = <retrieve-account-id>
  azure_tenant_id     = <retrieve-azure-tenant-id>
  azure_client_id     = <retrieve-azure-client-id>
  azure_client_secret = <retrieve-azure-client-secret>
}

針對工作區層級操作預設驗證

provider "databricks" {
  alias = "workspace"
}

針對直接設定(將 retrieve 佔位符號替換為您自己的實作,以從主控台或其他一些設定存放區中取得值,例如 HashiCorp Vault。另請參閱 Vault Provider)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

provider "databricks" {
  alias               = "workspace"
  host                = <retrieve-workspace-url>
  azure_tenant_id     = <retrieve-azure-tenant-id>
  azure_client_id     = <retrieve-azure-client-id>
  azure_client_secret = <retrieve-azure-client-secret>
}

針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 azure_workspace_resource_id 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 host 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

如需有關使用 Databricks Terraform 提供者進行驗證的詳細資訊,請參閱驗證

針對帳戶層級作業以及預設驗證

from databricks.sdk import AccountClient

a = AccountClient()
# ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

from databricks.sdk import AccountClient

a = AccountClient(
  host                = retrieve_account_console_url(),
  account_id          = retrieve_account_id(),
  azure_tenant_id     = retrieve_azure_tenant_id(),
  azure_client_id     = retrieve_azure_client_id(),
  azure_client_secret = retrieve_azure_client_secret()
)
# ...

針對工作區層級操作預設驗證

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(
  host                = retrieve_workspace_url(),
  azure_tenant_id     = retrieve_azure_tenant_id(),
  azure_client_id     = retrieve_azure_client_id(),
  azure_client_secret = retrieve_azure_client_secret()
)
# ...

針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 azure_workspace_resource_id 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 host 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

如需有關透過使用 Python 並實作 Databricks 用戶端統一驗證的 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:

針對帳戶層級作業以及預設驗證

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId())
  .setAzureTenantId(retrieveAzureTenantId())
  .setAzureClientId(retrieveAzureClientId())
  .setAzureClientSecret(retrieveAzureClientSecret())
AccountClient a = new AccountClient(cfg);
// ...

針對工作區層級操作預設驗證

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
  .setAzureTenantId(retrieveAzureTenantId())
  .setAzureClientId(retrieveAzureClientId())
  .setAzureClientSecret(retrieveAzureClientSecret())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 setAzureWorkspaceResourceId 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 setHost 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

如需有關透過使用 Java 並實作 Databricks 用戶端統一驗證的 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:

針對帳戶層級作業以及預設驗證

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:              retrieveAccountConsoleUrl(),
  AccountId:         retrieveAccountId(),
  AzureTenantId:     retrieveAzureTenantId(),
  AzureClientId:     retrieveAzureClientId(),
  AzureClientSecret: retrieveAzureClientSecret(),
}))
// ...

針對工作區層級操作預設驗證

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

直接配置時(將 retrieve 佔位符替換成您自己的實作,以從控制台或其他一些組態存放區中擷取值,例如 Azure KeyVault)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host:              retrieveWorkspaceUrl(),
  AzureTenantId:     retrieveAzureTenantId(),
  AzureClientId:     retrieveAzureClientId(),
  AzureClientSecret: retrieveAzureClientSecret(),
}))
// ...

針對工作區層級作業,如果尚未將 MS Entra 服務主體新增至工作區,則請指定 AzureWorkspaceResourceId 與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 Host 與工作區網址。 在此情況下,MS Entra 服務主體必須至少對 Azure Databricks 工作區的 Azure 資源擁有參與者或擁有者權限。

如需使用 Go 和實作 Databricks 用戶端統一驗證的 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱使用 Azure Databricks 帳戶或工作區驗證適用於 Go 的 Databricks SDK