共用方式為


Azure 受控識別驗證

Azure 受控識別驗證會使用 Azure 資源受控識別 (先前稱為受控服務識別 (MSI)) 向 Azure Databricks 進行驗證。 使用支援受控識別的 Azure 資源 (例如 Azure VM) 時,以程式設計方式呼叫 Azure Databricks 帳戶和工作區作業會使用此受控識別。

注意

Azure 資源受控識別與 Microsoft Entra ID 服務主體不同,Azure Databricks 也支援以其進行驗證。 若要了解如何使用 Microsoft Entra ID 服務主體,而不是 Azure 資源受控識別來進行 Azure Databricks 驗證,請參閱:

Azure 受控識別驗證只有在正確設定的資源之間才支援受控識別,例如 Azure 虛擬機器 (Azure VM) 及 Azure Databricks 帳戶和工作區。

若要使用 Azure Databricks 設定 Azure 受控識別驗證,您必須在支援的 Azure VM 上設定下列關聯的環境變數、.databrickscfg 欄位、Terraform 欄位或 Config 欄位:

  • Azure Databricks 主機。
    • 針對帳戶作業,請指定 https://accounts.azuredatabricks.net
    • 針對工作區作業,請指定個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net
  • 針對帳戶作業,則為 Azure Databricks 帳戶識別碼
  • 受控識別的租用戶識別碼。
  • 受控識別的用戶端識別碼。
  • Azure 資源識別碼。
  • 將 Azure 使用受控識別設定為 true。

若要使用 Azure Databricks 執行 Azure 受控識別驗證,請根據參與工具或 SDK 將下列內容整合到您的程式碼中:

Environment

若要透過工具或 SDK 將環境變數用於特定 Azure Databricks 驗證類型,請參閱對 Azure Databricks 資源的存取進行驗證或者參閱工具或 SDK 的文件。 另請參閱用戶端統一驗證的環境變數和欄位用戶端統一驗證的預設方法

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

  • DATABRICKS_HOST,設定為 Azure Databricks 帳戶主控台網址的值 (https://accounts.azuredatabricks.net)。
  • DATABRICKS_ACCOUNT_ID
  • ARM_CLIENT_ID
  • ARM_USE_MSI,設定為 true

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

  • DATABRICKS_HOST,設定為 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net
  • ARM_CLIENT_ID
  • ARM_USE_MSI,設定為 true

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

設定檔

使用 .databrickscfg 檔案中的下列欄位,建立或識別 Azure Databricks 組態設定檔。 如果您建立設定檔,請將預留位置取代為適當的值。 若要透過工具或 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_client_id = <azure-managed-identity-application-id>
azure_use_msi   = true

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

[<some-unique-configuration-profile-name>]
host            = <workspace-url>
azure_client_id = <azure-managed-identity-application-id>
azure_use_msi   = true

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

CLI

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

  • 按照本文的「環境」一節所述,設定環境變數。
  • 按照本文的「設定檔」一節所述,設定 .databrickscfg 檔案中的值。

環境變數始終優先於 .databrickscfg 檔案中的值。

另請參閱 Azure 受控識別驗證

連線

注意

Databricks Connect 仰賴適用於 Python 的 Databricks SDK 進行驗證。 適用於 Python 的 Databricks SDK 尚未實作 Azure 受控識別驗證。

VS Code

注意

適用於 Visual Studio Code 的 Databricks 延伸項目尚不支援 Azure 受控識別驗證。

Terraform

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

provider "databricks" {
  alias = "accounts"
}

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 HashiCorp Vault) 擷取值。另請參閱 Vault 提供者)。 在此情況下,Azure Databricks 帳戶主控台網址為 https://accounts.azuredatabricks.net

provider "databricks" {
  alias           = "accounts"
  host            = <retrieve-account-console-url>
  account_id      = <retrieve-account-id>
  azure_client_id = <retrieve-azure-client-id>
  azure_use_msi   = true
}

針對工作區層級作業,對於預設驗證

provider "databricks" {
  alias = "workspace"
}

針對直接組態 (將 retrieve 預留位置取代為您自己的實作,以從主控台或某些其他設定存放區 (例如 HashiCorp Vault) 擷取值。另請參閱 Vault 提供者)。 在此情況下,主機是 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

provider "databricks" {
  alias           = "workspace"
  host            = <retrieve-workspace-url>
  azure_client_id = <retrieve-azure-client-id>
  azure_use_msi   = true
}

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

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

Python

注意

適用於 Python 的 Databricks SDK 尚未實作 Azure 受控識別驗證。

Java

注意

適用於 JAVA 的 Databricks SDK 尚未實作 Azure 受控識別驗證。

Go

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

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(),
  AzureClientId: retrieveAzureClientId(),
  AzureUseMSI:   true,
}))
// ...

針對工作區層級作業,對於預設驗證

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(),
  AzureClientId: retrieveAzureClientId(),
  AzureUseMSI:   true,
}))
// ...

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

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