使用 Open ID Connect (OIDC) 联合启用对 Delta Sharing 共享(开放共享)的身份验证

重要

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

本页介绍了 Azure Databricks 中的数据提供程序如何联合身份验证到标识提供者 (IdP),以控制对在 Azure Databricks 中创建的增量共享共享的访问权限。 此身份验证流使用 OIDC 联合身份验证,允许接收方 IdP 颁发的 JSON Web 令牌(JWT)作为由 Azure Databricks 进行身份验证的短期 OAuth 令牌。 此 Databricks-to-open 共享身份验证方法专为无法访问已启用 Unity Catalog 的 Databricks 工作区的接收者而设计。

在 OIDC 联合身份验证中,收件人的 IdP 负责颁发 JWT 令牌并强制实施安全策略,例如多重身份验证(MFA)。 同样,JWT 令牌的生存期由收件人的 IdP 管理。 Databricks 不会生成或管理这些令牌。 它仅将身份验证联合至收件人的 IdP,并根据收件人配置的联合策略验证 JWT。 数据提供者在与其组织中的其他用户或部门内部共享数据时,还可以选择将身份验证委托给他们自己的身份提供商(IdP)。

OIDC 联合是使用长期存在的 Azure Databricks 颁发的持有者令牌,将非 Databricks 接收者连接到提供程序的替代方法。 它支持精细的访问控制、支持 MFA,并消除收件人管理和保护共享凭据的需要,从而降低安全风险。 有关改用持有者令牌管理共享身份验证的信息,请参阅 使用持有者令牌(打开共享)为非 Databricks 用户创建收件人对象

OIDC 联合在 Delta Sharing 中的如何运作?

  1. 当数据提供程序在 Azure Databricks 上的 Delta 共享中创建收件人时,他们配置一个 OIDC 令牌联合策略,该策略指定收件人 IdP 的颁发者 URL(如 Microsoft Entra ID 或 Okta),并定义应有权访问共享的收件人用户、组、服务主体或 OAuth 应用程序。

  2. Azure Databricks 基于策略生成 OIDC 配置文件门户网站 URL,服务提供商与收件人共享该 URL。

    最终用户根据首选平台复制终结点 URL 或下载配置文件,并将 URL 或配置文件提供给将查询共享数据的平台。 从 Databricks OIDC 门户 Web 下载的此共享配置文件不包含任何敏感信息。

    • 对于用户到计算机 (U2M) 身份验证,收件人会将收件人终结点从 OIDC 配置文件 Web 门户输入到其 U2M 应用程序中。
    • 对于计算机到计算机(M2M)身份验证,收件人应用程序开发人员下载配置文件,并在收件人客户端应用中引用它。
  3. 当收件人尝试使用首选平台访问共享数据时,身份验证会联合到其 IdP。

    Databricks 不会生成或管理任何令牌或凭据。 相反,收件人的 IdP 会生成一个包含身份声明的 JWT。 此生存期较短的令牌的生存期由收件人的 IdP 强制执行。 然后,Delta 共享服务根据收件人的策略验证 JWT,以确保它与预期的声明(包括颁发者、受众和主题)匹配。 如果验证成功,则会对请求进行身份验证,并基于 Unity 目录权限授予访问权限。

在您开始之前

若要创建收件人,必须满足以下要求:

  • 你需是元存储管理员,或者对要共享的数据所要注册到的 Unity Catalog 元存储拥有 CREATE_RECIPIENT 特权。
  • 必须使用附加了 Unity Catalog 元存储的 Azure Databricks 工作区创建接收者。
  • 如果使用 Databricks 笔记本创建收件人,则计算必须使用 Databricks Runtime 11.3 LTS 或更高版本以及标准或专用访问模式(以前共享和单用户访问模式)。

要使用哪个标识提供者?

可以视您的共享方案,将 OIDC 联邦与内部或外部身份提供者结合使用:

  • 内部标识提供者(Provider-Managed)

    • 这对于在不同部门没有直接 Databricks 访问权限但共享相同的 IdP 的大型组织中共享数据非常有用。
    • 此方法允许提供商代表收件人管理访问权限。
    • 提供程序的 IdP 强制实施安全策略,例如 MFA 和基于角色的访问控制。
  • 外部标识提供者(Recipient-Managed)

    • 提供程序设置共享策略以信任收件人的 IdP。
    • 收件人组织可以完全控制谁可以访问共享数据。
    • 安全策略(如 MFA 和基于角色的访问控制)由收件人的 IdP 强制执行。

身份验证方案 U2M 或 M2M

使用 OIDC 令牌联合的安全开放共享支持用户到计算机(U2M)和计算机到计算机(M2M)身份验证流,从而支持广泛的安全数据共享方案。

用户到计算机 (U2M) 身份验证

来自收件人组织的用户使用其 IdP 进行身份验证。 如果配置了 MFA,则会在登录期间强制实施 MFA。

经过身份验证后,用户可以使用 Power BI 或 Tableau 等工具访问共享数据。 数据提供程序可以定义访问策略,以限制对收件人组织内特定用户或组的数据访问,确保精确控制谁可以访问共享资源。 U2M 客户端应用程序(例如 Power BI)使用 OAuth 授权代码授予流从 IdP 获取访问令牌。

计算机到计算机 (M2M) 身份验证

M2M 非常适合自动工作负荷,例如夜间作业或后台服务,无需用户交互即可进行访问。 收件人组织在其 IdP 中注册服务主体。 此服务标识使应用程序或脚本能够以编程方式安全地访问资源。 Databricks、提供程序或收件人之间不会交换机密或凭据。 所有机密管理都保留在每个组织的内部。 M2M 客户端(如 Python 增量共享客户端或 Spark 增量共享客户端)使用 OAuth 客户端凭据授予流从 IdP 检索访问令牌。

创建使用 OIDC 联合策略的收件人

步骤 1. 创建 Open OIDC 联合收件人

若要创建使用 OIDC 进行身份验证的收件人,

  1. 在 Azure Databricks 工作区中,单击 “数据”图标。目录

  2. 目录窗格顶部,单击齿轮图标并选择“增量共享”

    或者,在“快速访问”页中,单击“Delta Sharing >”按钮。

  3. 在“ 我共享 ”选项卡上,单击“ 新建收件人”。

  4. 输入 收件人姓名

  5. 对于 收件人类型,请选择“ 打开”。

  6. 选择 OIDC 联合身份验证作为开放 身份验证方法

  7. 单击 “创建”

  8. (可选)创建自定义 收件人属性。 在“收件人 详细信息 ”选项卡上,单击“ 编辑属性 > +添加属性”。 然后添加属性名称()和 。 有关详细信息,请参阅 “管理收件人属性”。

步骤 2. 创建 OIDC 联合策略

在创建策略之前,请从接收方收集有关其 IdP 的必要信息,包括应该有权访问共享的用户、组、服务主体或 OAuth 应用程序。 如果使用自己的 (内部) IdP 进行内部共享,请从自己的标识系统检索此信息。

必须首先从接收方请求有关其 IdP 的信息,以及应该有权访问共享的用户、组、服务主体或 OAuth 应用程序。 然后在创建收件人时在 Azure Databricks 中提供该信息。

在收件人编辑页上的 OIDC 联合策略下,单击“ 添加策略”。

OIDC 策略配置对话框

输入以下内容:

  • 策略名称:策略的可读名称。

  • 颁发者 URL:颁发 JWT 令牌的 IdP 的 HTTPS URL。

  • 使用者声明:JWT 中标识身份验证标识类型的声明。 在 Microsoft Entra ID 中,可以配置以下值:

    • oid (对象 ID):选择用户是否打算通过 U2M 应用程序(如 PowerBI)访问数据。
    • groups:选择一组用户是否打算通过 U2M 应用程序(如 PowerBI)访问数据。
    • azp:如果 OAuth 应用程序旨在通过 M2M 应用程序(例如 Python Delta 共享客户端或 Spark Delta 共享客户端)访问数据,请选择该应用程序。

    在某些其他 IdP 中,可以使用子或其他 IDP 等声明。 请参阅 IdP 文档以确认您用例中的正确声明。

  • 主题:允许访问共享的特定用户、组或应用程序。

  • 访问群体:JWT 必须匹配的一个或多个资源标识符。 如果令牌的 aud 声明与列出的任何受众匹配,则令牌被视为有效。

如果不确定要使用的值(颁发者、使用者声明、使用者、受众),请参阅以下示例。 在创建 OIDC 联合策略之前,需要确定 OIDC 联合策略的详细信息。

如果您使用外部收件人管理的 IdP,请通过安全渠道向收件人请求以下信息。 如果使用内部提供程序托管 IdP,则此信息基于你与之共享的标识来自你自己的 IdP。

当 IdP 是 Entra ID 时的 U2M 示例:

这是在 Entra ID 租户 11111111-2222-3333-4444-555555555555 中与特定用户共享对象 ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee 的示例配置。

  • 颁发者:https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • 主体声明:oid(对象 ID)
  • 使用者:11111111-2222-3333-4444-555555555555
  • 访问群体: 64978f70-f6a6-4204-a29e-87d74bfea138 (这是 Databricks 在 Entra ID 中注册的多租户应用的客户端 ID)

下面是在 Entra ID 租户 66666666-2222-3333-4444-555555555555 中使用对象 ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee 与特定组共享的示例配置

  • 颁发者:https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • 主题声明:groups
  • 使用者:66666666-2222-3333-4444-555555555555
  • 访问群体: 64978f70-f6a6-4204-a29e-87d74bfea138 (这是 Databricks 在 Entra ID 中注册的多租户应用的客户端 ID)

注释

对于 Power BI 和 Tableau 等 U2M 应用程序,受众应该是 Databricks 在 Entra ID 中注册的多租户应用 ID,即 64978f70-f6a6-4204-a29e-87d74bfea138

有关 U2M 应用程序及其 OIDC 联合策略的更多信息,请参阅在用户到机器的流程(开放共享)中使用 Open ID Connect (OIDC) 联合来接收 Delta Sharing 份额

IdP 为 Entra ID 时 M2M 的示例:

对于 Entra ID 租户11111111-2222-3333-4444-555555555555中具有应用程序(客户端)ID aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee 的 M2M OAuth 应用程序:

步骤 3. 向接收者授予对共享的访问权限

创建收件人和 创建共享后,可以授予收件人对这些共享的访问权限。

若要向接收者授予共享访问权限,可以使用目录资源管理器、Databricks Unity Catalog CLI,或者 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中的 GRANT ON SHARE SQL 命令。

所需的权限:下列其中一项:

  • Metastore 管理员。
  • 对共享和接收者对象((USE SHARE + SET SHARE PERMISSION) 或共享所有者)和(USE RECIPIENT 或接收者所有者)拥有委托权限或所有权。

有关说明,请参阅管理对 Delta Sharing 数据共享的访问权限(适用于提供者)

收件人工作流

若要了解收件人如何使用 OIDC 令牌联合身份验证的方法进行身份验证并访问共享,请参阅: