分享方式:


Microsoft Entra ID 服務主體驗證

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

注意

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

當您需要同時向 Azure Databricks 和其他 Azure 資源進行驗證時,您應該只使用 Microsoft Entra ID 服務主體驗證,這需要 Microsoft Entra ID 權杖。

若要使用 OAuth M2M 驗證,而不是Microsoft Entra ID 服務主體驗證,請略過本文,並參閱 OAuth 計算機對計算機 (M2M) 驗證

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

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

  • Azure Databricks 主機。

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

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

      如果Microsoft Entra ID 服務主體尚未新增至工作區,請改為指定 Azure 資源標識符。 在此情況下,Microsoft Entra ID 服務主體必須至少有 Azure 資源的參與者或擁有者許可權。

  • 針對帳戶作業,Azure Databricks 帳戶標識碼

  • Azure 資源標識碼。

  • Microsoft Entra ID 服務主體的租用戶標識碼。

  • Microsoft Entra ID 服務主體的用戶端標識碼。

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

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

Environment

若要搭配工具或 SDK 使用特定 Azure Databricks 驗證類型的環境變數,請參閱 Azure Databricks 工具或 SDK 或工具或 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

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是HOST與工作區 URL 一起指定DATABRICKS_AZURE_RESOURCE_ID。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

設定檔

使用檔案.databrickscfg中的下列欄位,建立或識別 Azure Databricks 組態配置檔。 如果您建立設定檔,請將佔位元取代為適當的值。 若要搭配工具或 SDK 使用設定檔,請參閱 Azure Databricks 工具或 SDK 或工具或 SDK 的檔支援的驗證類型。 另請參閱用戶端統一驗證的環境變數和欄位,以及用戶端統一驗證方法和認證的預設評估順序。

針對 帳戶層級作業,請在您的 .databrickscfg 檔案中設定下列值。 在此情況下,Azure Databricks 帳戶主控台 URL 為 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 個別工作區 URL,例如 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>

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是host與工作區 URL 一起指定azure_workspace_resource_id。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

CLI

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

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

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

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

連線

注意

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

  • 針對 Python,Databricks Connect for Databricks Runtime 13.1 和更新版本。
  • 針對 Scala,Databricks Connect for Databricks Runtime 13.3 LTS 和更新版本。

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

  • 如本文的「配置檔」一節中所指定,為 Azure Databricks 工作區層級作業設定檔案.databrickscfg中的值。 此外, 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 用戶端,請參閱下列其中一項:

VS Code

針對 Visual Studio Code 的 Databricks 擴充功能,請執行下列動作:

  1. 如本文的「配置檔」一節中所指定,為 Azure Databricks 工作區層級作業設定檔案.databrickscfg中的值。
  2. 在 Visual Studio Code Databricks 延伸模組的 [ 設定 ] 窗格中,按兩下 [ 設定 Databricks]。
  3. 在 [命令選擇區] 的 Databricks Host 中,輸入每個工作區的 URL,例如 https://adb-1234567890123456.7.azuredatabricks.net,然後按 Enter
  4. 在命令 選擇區中,選取 URL 清單中的目標設定檔名稱。

如需詳細資訊,請參閱 VS Code Databricks 延伸模組的驗證設定。

Terraform

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

provider "databricks" {
  alias = "accounts"
}

針對直接設定(將 retrieve 佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 HashiCorp Vault。另 請參閱保存庫提供者)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 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。另 請參閱保存庫提供者)。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 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>
}

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是host與工作區 URL 一起指定azure_workspace_resource_id。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

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

Python

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

from databricks.sdk import AccountClient

a = AccountClient()
# ...

針對直接設定(將 retrieve 佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 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 個別工作區 URL,例如 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()
)
# ...

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是host與工作區 URL 一起指定azure_workspace_resource_id。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

如需使用 Python 和實 作 Databricks 用戶端整合驗證之 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:

Java

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

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

針對直接設定(將 retrieve 佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 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 個別工作區 URL,例如 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);
// ...

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是setHost與工作區 URL 一起指定setAzureWorkspaceResourceId。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

如需使用 Java 和實 作 Databricks 用戶端整合驗證之 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱:

Go

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

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

針對直接設定(將 retrieve 佔位元取代為您自己的實作,以從控制台或其他一些組態存放區擷取值,例如 Azure KeyVault)。 在此情況下,Azure Databricks 帳戶主控台 URL 為 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 個別工作區 URL,例如 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(),
}))
// ...

針對工作區層級作業,如果Microsoft Entra ID 服務主體尚未新增至工作區,則請指定 Azure Databricks 工作區的 Azure 資源標識符,而不是Host與工作區 URL 一起指定AzureWorkspaceResourceId。 在此情況下,Microsoft Entra ID 服務主體必須至少具有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

如需使用 Go 和實 作 Databricks 用戶端整合驗證之 Databricks 工具和 SDK 進行驗證的詳細資訊,請參閱 使用 Azure Databricks 帳戶或工作區驗證 Databricks SDK for Go。