使用 Microsoft Entra ID 从 dbt Core 配置 Azure Databricks 登录

重要

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

本文介绍如何使用 Microsoft Entra ID 从 dbt Core 配置 Azure Databricks 登录。 以 Azure Databricks 帐户管理员身份完成此一次性配置后,用户可以使用单一登录 (SSO) 将 Azure Databricks 连接到 dbt Core。

除了使用 Microsoft Entra ID,还可以使用 Databricks M2M OAuth 与 dbt Core 集成。 请参阅启用或禁用合作伙伴 OAuth 应用程序

开始之前

在完成本文中的步骤之前,必须:

  • 有权访问本地 dbt Core 环境
  • 获取 Azure Databricks 工作区中 SQL 仓库的服务器主机名和 HTTP 路径
  • 成为 Azure Databricks 帐户管理员
  • 有权在 Azure 租户中为 Azure Databricks 帐户创建 Azure 应用注册。

为 dbt Core 配置计算机到计算机 (M2M) 身份验证

本部分介绍如何为 Azure Databricks 和 dbt Core 配置计算机到计算机 (M2M) 身份验证。 OAuth 的 M2M 工作流支持自动化过程(例如 CI/CD 集成),无需人工干预即可安全访问资源。 dbt 客户端作为服务主体运行,使用服务主体从 Azure AD 获取 OAuth 令牌,并利用此令牌与 Databricks SQL API 连接。

创建 Azure 应用注册

  1. 使用 Azure 门户登录到 Azure Databricks 帐户的 Azure 租户(位于 https://portal.azure.cn/<tenant-id>)。
  2. 单击“应用注册”。 如果“应用注册”不可见,请单击“更多服务”,然后使用“筛选服务”文本框搜索“应用注册”。
  3. 单击“新建注册”。
  4. 输入应用的“名称”
  5. 对于“重定向 URI”,请从下拉菜单中选择“公共客户端/本机(移动和桌面)”,然后输入 http://localhost:8020
  6. 单击“注册”。
  7. 复制“应用程序(客户端) ID”。 稍后将需要此值。

为 Azure 应用注册生成客户端密码

  1. 在 Azure 门户中,选择上一步创建的应用注册。
  2. 单击“证书和机密”,然后单击“新建客户端密码”
  3. 输入说明,然后单击“添加”
  4. 复制机密值。 稍后需要用到此值,并且只能在创建机密后访问此值。

将 Microsoft Entra ID 服务主体添加到工作区

  1. 在 Azure Databricks 工作区中,单击右上角的用户名,然后单击“管理设置”
  2. 单击“标识和访问”选项卡。
  3. 单击“服务主体”旁的“管理”。
  4. 单击“添加服务主体”,然后单击“客户端 ID”。
  5. 对于“ApplicationId”,输入之前复制的“应用程序(客户端) ID”
  6. 对于“显示名称”,输入服务主体的逻辑名称,然后单击“添加”

将 M2M 配置文件添加到 dbt 项目

  1. 将之前复制的“应用程序(客户端) ID”和客户端密码设置为环境变量。 Databricks 不建议直接将敏感信息(如机密)存储在 profiles.yml 中。

    ~ export DATABRICKS_CLIENT_ID=<client-id>
    ~ export DATABRICKS_CLIENT_SECRET=<client-secret>
    
  2. 将 M2M 配置文件添加到 dbt 项目的 profiles.yml 文件中。

    以下是指定了 M2M 配置文件 azure-oauth-m2mprofiles.yml 文件示例。 为 target 指定 azure-oauth-m2m 会将 M2M 配置文件设置为 dbt 使用的默认运行配置文件。

    databricks_demo:
      outputs:
        ...
        azure-oauth-m2m:
          catalog: uc_demos
          host: "adb-xxx.databricks.azure.cn"
          http_path: "/sql/1.0/warehouses/9196548d010cf14d"
          schema: databricks_demo
          threads: 1
          type: databricks
          auth_type: oauth
          client_id: "{{ env_var('DATABRICKS_CLIENT_ID') }}"
          client_secret: "{{ env_var('DATABRICKS_CLIENT_SECRET') }}"
    target: azure-oauth-m2m
    

授权服务主体访问 SQL 仓库

  1. 在边栏中,单击“SQL 仓库”,单击你的 SQL 仓库,然后单击“权限”
  2. 在本文前面创建的服务主体旁边,从下拉菜单中选择“可以使用”。

验证 OAuth 应用程序设置

运行 dbt debug 命令,验证是否已正确配置 OAuth 应用程序。 例如:

dbt debug --target azure-oauth-m2m

以下是成功运行 dbt debug 的示例输出:

  ...
  Configuration:
    profiles.yml file [OK found and valid]
    dbt_project.yml file [OK found and valid]

  Required dependencies:
    - git [OK found]

  Connection:
    ...
    Connection test: OK connection ok

为 dbt Core 配置用户到计算机 (U2M) 身份验证

本部分介绍如何为 Azure Databricks 和 dbt Core 配置用户到计算机身份验证。 OAuth 的 U2M 工作流允许系统通过从 Azure AD 弹出的浏览器安全地获取 OAuth 令牌来代表用户(例如 dbt 客户端)进行访问。 dbt 使用此令牌连接到 Databricks SQL API,从而简化了身份验证和授权。

创建 Azure 应用注册

  1. 使用 Azure 门户登录到 Azure Databricks 帐户的 Azure 租户(位于 https://portal.azure.cn/<tenant-id>)。
  2. 单击“应用注册”。 如果“应用注册”不可见,请单击“更多服务”,然后使用“筛选服务”文本框搜索“应用注册”。
  3. 单击“新建注册”。
  4. 输入应用的“名称”
  5. 对于“重定向 URI”,请从下拉菜单中选择“公共客户端/本机(移动和桌面)”,然后输入 http://localhost:8020
  6. 单击“注册”。
  7. 复制“应用程序(客户端) ID”和“租户 ID”。 在后面的步骤中会用到这些值。

将 U2M 配置文件添加到 dbt 项目

将 U2M 配置文件添加到 dbt 项目的 profiles.yml 文件中。

以下是指定了 U2M 配置文件 azure-oauth-u2mprofiles.yml 文件示例。 为 target 指定 azure-oauth-u2m 会将 U2M 配置文件设置为 dbt 使用的默认运行配置文件。

databricks_demo:
outputs:
  azure-oauth-u2m:
    catalog: uc_demos
    host: "adb-xxx.databricks.azure.cn"
    http_path: "/sql/1.0/warehouses/9196548d010cf14d"
    schema: databricks_demo
    threads: 1
    type: databricks
    auth_type: oauth
    client_id: "9729e77e-ba94-4d53-8cfb-bb609f43f881"
target: azure-oauth-u2m

验证 OAuth 应用程序设置

  1. 运行 dbt debug 命令,验证是否已正确配置 OAuth 应用程序。 例如:

    dbt debug --target azure-oauth-u2m
    

    “请求的权限”页将在浏览器中打开

  2. 单击接受

以下是成功运行 dbt debug 的示例输出:

...
Configuration:
  profiles.yml file [OK found and valid]
  dbt_project.yml file [OK found and valid]

Required dependencies:
  - git [OK found]

Connection:
  ...
  Connection test: OK connection ok

其他资源

要创建新的 dbt Core 项目并使用 SSO 身份验证连接到 Azure Databricks,请参阅《连接到 dbt Core》。