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 帳戶主控台網址的值 (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。