使用 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 仓库不支持环境变量,因此它们不支持默认服务凭据。
打开群集的编辑页面。
请查看管理计算。
单击页面底部的“高级”选项,然后转到“Spark”选项卡。
在环境变量中添加以下条目,替换
<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')