Share via


Azure 受控識別驗證

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

注意

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

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

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

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

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

Environment

若要搭配工具或 SDK 使用特定 Azure Databricks 驗證類型的環境變數,請參閱 Azure Databricks 工具或 SDK 或工具或 SDK 的文件支援的驗證類型。 另請參閱用戶端統一驗證的環境變數和欄位,以及用戶端統一驗證方法和認證的預設評估順序。

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

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

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

  • DATABRICKS_HOST,設定為 Azure Databricks 每個工作區 URL 的值,例如 https://adb-1234567890123456.7.azuredatabricks.net
  • ARM_CLIENT_ID
  • ARM_USE_MSI,設定為 true

針對工作區層級作業,如果目標身分識別尚未新增至工作區,請指定 Azure Databricks 工作區的 Azure 資源識別符,而不是DATABRICKS_HOST與工作區 URL 一起指定DATABRICKS_AZURE_RESOURCE_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_client_id = <azure-managed-identity-application-id>
azure_use_msi   = true

針對 工作區層級作業,請在您的 .databrickscfg 檔案中設定下列值。 在此情況下,主機是 Azure Databricks 個別工作區 URL,例如 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 Databricks 工作區的 Azure 資源識別符,而不是host與工作區 URL 一起指定azure_workspace_resource_id。 在此情況下,目標身分識別必須至少有 Azure Databricks 工作區的 Azure 資源參與者或擁有者許可權。

Cli

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

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

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

請參閱 Azure 受控識別驗證

連線

注意

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

Vs code

注意

適用於 Visual Studio Code 的 Databricks 擴充功能尚不支援 Azure 受控識別驗證。

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_client_id = <retrieve-azure-client-id>
  azure_use_msi   = true
}

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

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_client_id = <retrieve-azure-client-id>
  azure_use_msi   = true
}

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

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

Python

注意

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

Java

注意

Databricks SDK for Java 尚未實作 Azure 受控識別驗證。

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

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

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

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

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