本页介绍数据收件人如何使用自己标识提供者 (IdP) 中注册的 Python 客户端,来建立对 Databricks 中创建的 Delta Sharing 共享的访问权限。 此“计算机到计算机”(M2M) OAuth 客户端凭据授予流通常用于应用程序(例如虚拟机上运行的夜间作业)自主访问数据的情况。 此身份验证流程使用 OIDC 联合身份验证,允许接收方的 IdP 颁发的 JSON Web 令牌(JWT)作为短期 OAuth 令牌,这些令牌经过 Databricks 的身份验证。 此 Databricks 到开放共享 身份验证流程适用于无法访问启用了 Unity Catalog 的 Databricks 工作区的收件人。
开放 OIDC 联合是一种替代方法,该方法使用长期存在的 Databricks 颁发的持有者令牌,将非 Databricks 收件人连接到提供者。 在 OAuth 客户端凭据授予流中,OAuth 应用程序注册为收件人 IdP 中的服务主体(SP)。 Databricks、提供程序和收件人之间不会共享长期机密或凭据。 有关改用持有者令牌管理共享身份验证的信息,请参阅 使用持有者令牌(打开共享)为非 Databricks 用户创建收件人对象。
本文适用于收件人。 有关提供方如何在 Azure Databricks 中为接收方启用 OIDC 联合的信息,请参阅 为 Delta Sharing 接收方启用 Open ID Connect (OIDC) 联合。 有关“用户到计算机”(U2M)流的信息,请参阅 U2M 流中使用 Open ID Connect (OIDC) 联合身份验证共享的数据。
在 IdP 中注册应用
在使用 OIDC 联合授予客户端应用程序对 Delta Sharing 共享的访问权限之前,必须在你的 IdP 中注册 OAuth 应用程序。 本部分介绍如何在 Microsoft Entra ID 中注册 OAuth 应用程序。 有关其他 IdP,请参阅其文档。
在 Microsoft Entra ID 中注册应用
这些说明旨在用作常规指导,不保证处于最新状态。 有关详细的应用注册说明,请参阅此 Microsoft快速入门。
以至少应用程序开发人员身份登录到 Microsoft Entra 管理中心。
转到 “应用注册” ,在没有重定向 URL 的情况下创建新的注册。
转到 “证书和机密 > ”为应用创建机密 。
复制机密值并安全地存储它。
在应用的 “应用注册 > 概述 ”页上,复制 应用程序(客户端)ID
通过更新清单将应用修改为 V2 应用程序:
在应用的 “管理 ”部分中,选择“ 清单”。
在编辑器中,将
accessTokenAcceptedVersion设置为2。保存更改。
将所需信息发送到 Azure Databricks 数据提供程序
如果你作为收件人使用 Microsoft Entra ID,则可以按照以下说明获取提供者要求的字段。 请始终参阅 Microsoft Entra ID 文档以获取最新的说明。
颁发者 URL:
https://login.partner.microsoftonline.cn/{tenantId}/v2.0,用于将{tenantId}替换为你的 Entra 租户 ID。 如果不知道租户 ID,请参阅 Microsoft Entra ID 文档。主题声明:指在 JWT 有效负载中用于识别访问数据的实体的字段。 使用的具体字段取决于您的身份提供商(IdP)和用例。 例如,在 Microsoft Entra ID 中的 M2M 应用程序中,使用者声明为
azp,这表示有权使用令牌的应用程序的客户端 ID。 有关详细信息,请参阅 Microsoft Entra ID 访问令牌声明参考对象:指接收方身份提供方(IdP)中注册的 OAuth 应用程序的唯一标识符。
例如,在 Microsoft Entra ID 中,这是 应用程序(客户端)ID。 如果您在注册时未复制客户端 ID,可以按照 IdP 的特定步骤来检索它。 对于 Microsoft Entra ID,请执行以下步骤:- 导航到 Microsoft Entra 管理中心中的 应用注册。
- 选择已注册的 OAuth 应用程序。
- 在“概述”页上找到 应用程序(客户端)ID 。
对于其他 IdP,请参阅其文档以检索等效标识符。
受众:对于计算机到 Azure Databricks 身份验证,通常使用资源的
clientId,但也可以指定任何其他有效的资源标识符。你在上一步中应已复制此项。 如果没有,请导航到Microsoft Entra 管理中心,搜索 应用注册,选择已注册的应用程序,然后在“概述”页上找到 应用程序(客户端)ID 。 您也可以使用不同的资源标识符。
与提供者共享颁发者、使用者声明、主题和受众。
将应用配置为使用 Databricks 提供者共享的 OAuth 配置文件
要将应用配置为从提供者访问增量共享共享,请执行以下操作:
请访问 Databricks 提供程序与你共享的 OIDC 配置文件门户的 URL。
如果尚未收到 URL,请请求该 URL。
在门户页上,选择 M2M 磁贴,然后在 “对于 OAuth”下,单击“ 下载文件”。
修改下载的
oauth_config.shareJSON 文件,以添加你的clientId、clientSecret和scope。注册应用时,应已复制客户端 ID 和客户端密码。 不能再次检索客户端密码。 若要检索客户端 ID,请参阅上一部分的说明。
如果选择将应用
{clientId}用作受众,范围应为{clientId}/.default。 例如,如果受众是61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6,范围应为61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default。示例配置文件:
{ "shareCredentialsVersion": 2, "endpoint": "https://oregon.cloud.databricks.com/api/2.0/delta-sharing/metastores/11a11aaa-11aa-11a12-11aa-111a1aa11111/recipients/a11da11aa1-a1a1-11a1-a11a-1111a11111aa", "tokenEndpoint": "https://login.partner.microsoftonline.cn/a111a111-1111-1aaa-1aa1-1aa1111aa1/oauth2/v2.0/token", "type": "oauth_client_credentials", "clientId": "[REPLACE_WITH_YOUR_CLIENT_ID]", "clientSecret": "[REPLACE_WITH_YOUR_CLIENT_SECRET]", "scope": "[REPLACE_WITH_YOUR_SCOPE]" }安装和配置最新的 Delta 共享 Python OSS 客户端。
必须具有最新版本的 Delta Sharing Python OSS 客户端。
python3 -m venv .venv source .venv/bin/activate pip3 install "delta-sharing>=1.3.1"保存更新的
oauth_config.share文件。测试配置:
创建测试脚本,
test.py:import delta_sharing # Point to the profile file. It can be a file on the local file system or a file on a remote storage. profile_file = "oauth_config.share" # Create a SharingClient. client = delta_sharing.SharingClient(profile_file) # # List all shared tables. tables = client.list_all_tables() print(tables) # replace the following line with the coordinates of the shared table #table_url = profile_file + "#sample_share.sample_db.sample_table" # Fetch 10 rows from a table and convert it to a Pandas DataFrame. # This can be used to read sample data from a table that cannot fit in the memory. #df = delta_sharing.load_as_pandas(table_url, limit=10) #print(df)运行以下脚本:
python3 test.py该脚本应列出共享表。