Azure 受控識別驗證
Azure 受控識別驗證會使用 Azure 資源受控識別 (先前稱為受控服務識別 (MSI)) 向 Azure Databricks 進行驗證。 使用支援受控識別的 Azure 資源 (例如 Azure VM) 時,以程式設計方式呼叫 Azure Databricks 帳戶和工作區作業會使用此受控識別。
- 如需關於受控識別的詳細資訊,請參閱什麼是Azure 資源受控識別?。
- 若要瞭解如何建立受控識別,併為其授與存取 Azure Databricks 帳戶和工作區的許可權,請參閱 設定及使用 Azure Databricks 自動化的 Azure 受控識別驗證。
注意
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 帳戶主控台 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
。
針對工作區層級作業,如果尚未將目標身分識別新增至工作區,則請指定 DATABRICKS_AZURE_RESOURCE_ID
與 Azure Databricks 工作區的 Azure 資源識別碼,而不是 DATABRICKS_HOST
與工作區網址。 在此情況下,目標身分識別必須至少對 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_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。