使用 Unity Catalog 服务凭据连接到外部云服务

重要

此功能目前以公共预览版提供。

本文介绍如何使用 Unity Catalog 中的服务凭据连接到外部云服务。 Unity 目录中的服务凭据对象封装了一个长期云凭据,该凭据提供用户需要从 Azure Databricks 连接到的外部云服务的访问权限。

另请参阅:

开始之前

在使用服务凭据连接到外部云服务之前,必须具备:

  • 为 Unity Catalog 启用的 Azure Databricks 工作区。
  • Databricks Runtime 15.4 LTS 或更高版本上的计算资源。 不支持 SQL 仓库。
  • 在 Unity Catalog 元存储中创建的服务凭据,用于访问云服务。
  • 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)

为计算资源指定默认服务凭据

可以选择通过设置环境变量为全用途群集或作业计算群集指定默认服务凭据。 默认情况下,如果未提供身份验证,SDK 将使用该服务凭据。 用户仍需要该服务凭据上的 ACCESS 才能连接到外部云服务。 Databricks 不建议使用此方法,因为它使代码的可移植性低于在代码中命名服务凭据。

注意

无服务器计算和 SQL 仓库不支持环境变量,因此它们不支持默认服务凭据。

  1. 打开群集的编辑页面。

    请查看管理计算

  2. 单击页面底部的“高级”选项,然后转到“Spark”选项卡。

  3. 环境变量中添加以下条目,替换 <your-service-credential>

    DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME=<your-service-credential>

下面的代码示例未指定服务凭据。 相反,它使用 DATABRICKS_DEFAULT_SERVICE_CREDENTIAL_NAME 环境变量中指定的服务凭据:

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)

示例:将 Azure SDK 客户端配置为使用特定服务凭据中的示例相比较,该凭据不导入 DefaultAzureCredential 并添加凭据规范:

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