使用 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 倉儲不支援環境變數,因此不支援預設服務認證。
開啟叢集的編輯頁面。
請參閱 管理計算。
按兩下 頁面底部的 [進階選項 ],然後移至 [Spark] 索引標籤 。
在環境變數中新增下列專案,並
<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]