共用方式為


使用 Unity 目錄服務認證連線到外部雲端服務

本文說明如何使用 Unity 目錄中的服務認證來連線到外部雲端服務。 Unity Catalog 中的服務憑證對象封裝了一個長期的雲端憑證,以提供存取權給使用者需從 Azure Databricks 連線的外部雲端服務。

另請參閱:

開始之前

您必須先具備下列專案,才能使用服務認證來連線到外部雲端服務:

  • 啟用 Unity Catalog 的 Azure Databricks 工作區。

  • Databricks Runtime 16.2 或更新版本的計算資源。

    不支援 SQL 倉儲。

    Databricks Runtime 15.4 LTS 和更新版本可用服務憑證的公開預覽版,支援 Python,但不支援 Scala。

  • 在 Unity 目錄中繼存放區中建立的服務認證,可提供雲端服務的存取權。

  • ACCESS服務認證或服務認證的擁有權許可權。

在您的程式代碼中使用服務認證

本節提供在筆記本中使用服務認證的範例。 替換佔位符值。 這些範例不一定會顯示必要連結庫的安裝,這取決於您想要存取的客戶端服務。

Python 範例:將 Azure SDK 用戶端設定為使用特定服務認證

from azure.keyvault.secrets import SecretClient # example Azure SDK client

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')
vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

Scala 範例:設定 Azure SDK 用戶端以使用特定服務認證

import com.azure.security.keyvault.secrets.{SecretClient, SecretClientBuilder}

// Get credentials from dbutils
val credential = dbutils.credentials.getServiceCredentialsProvider("your-service-credential")

// URL of the Key Vault
val vaultUrl = "https://your-keyvault-name.vault.azure.net/"

// Create the SecretClient
val client: SecretClient = new SecretClientBuilder()
  .vaultUrl(vaultUrl)
  .credential(credential)
  .buildClient()

指定計算資源的預設服務認證

您可以藉由設定環境變數,選擇性地指定所有用途或作業計算叢集的預設服務認證。 根據預設,SDK 會在未提供驗證時使用該服務認證。 使用者仍然需要 ACCESS 該服務認證,才能連線到外部雲端服務。 Databricks 不建議使用此方法,因為它可讓您的程式代碼比在程式代碼中命名服務認證更不可攜。

注意

無伺服器計算和 SQL 倉儲不支援環境變數,因此不支援預設服務認證。

  1. 開啟叢集的編輯頁面。

    請參閱 管理計算

  2. 按兩下 頁面底部的 [進階選項 ],然後移至 [Spark] 索引標籤

  3. 在環境變數新增下列專案,並<your-service-credential>取代 :

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

下列程式代碼範例未指定服務認證。 相反地,它們會使用 DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME 環境變數中指定的服務認證:

Python(程式語言)

如果您使用預設服務認證,則不需要將認證指定為自變數:

from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

vault_url = "https://your-keyvault-name.vault.azure.net/"
client = SecretClient(vault_url=vault_url, credential=credential)

將此與 Python 範例中的範例進行比較:將 Azure SDK 用戶端設定為使用特定服務認證,這不會匯入 DefaultAzureCredential 並新增認證規格:

credential = dbutils.credentials.getServiceCredentialsProvider('your-service-credential')

Scala 程式語言

針對 Scala,您將服務認證名稱取代為 null

val azureCredentials = dbutils.credentials.getServiceCredentialsProvider(null).asInstanceOf[TokenCredential]